From 69cf568b026a27799e57bde902714af31adc157c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Jul 2025 18:12:50 +0000 Subject: [PATCH] Deploy to GitHub pages --- .nojekyll | 0 404.html | 16 + assets/css/styles.278f0c77.css | 1 + assets/js/011d940f.ee325784.js | 1 + assets/js/021c8caa.5f295dcb.js | 1 + assets/js/02359d8a.d06fea6b.js | 1 + assets/js/03459661.a5ccd375.js | 1 + assets/js/044a6187.858142cb.js | 1 + assets/js/048b8cd8.15bd0619.js | 1 + assets/js/051962a1.4cc7a7f7.js | 1 + assets/js/05d123c0.0e3e034d.js | 1 + assets/js/0807349d.731308c1.js | 1 + assets/js/09b50579.52f3f328.js | 1 + assets/js/0b199b14.369b6927.js | 1 + assets/js/0f29fa4c.fc3b20a4.js | 1 + assets/js/0fc8e5d5.38475e52.js | 1 + assets/js/1036.33ed1cdb.js | 1 + assets/js/1050d62e.d5223cec.js | 1 + assets/js/107eb4cc.38fc2a4d.js | 1 + assets/js/109fab02.1304204c.js | 1 + assets/js/10b686c7.ac7f610a.js | 1 + assets/js/12b0e932.46e840ec.js | 1 + assets/js/1341.9dd85c1f.js | 1 + assets/js/1483dc01.4a6793d2.js | 1 + assets/js/14e1fcc3.79e08407.js | 1 + assets/js/150ef1cb.34b3cc1d.js | 1 + assets/js/15a9c06b.fbed8bd4.js | 1 + assets/js/1608.b7fc7fa7.js | 1 + assets/js/171ac7cc.3780a727.js | 1 + assets/js/171f1b26.5b2c51de.js | 1 + assets/js/1760.3a07b760.js | 1 + assets/js/17896441.0a191866.js | 1 + assets/js/1874.e4531d36.js | 1 + assets/js/19b95078.24dbad74.js | 1 + assets/js/19d61b19.e67483c8.js | 1 + assets/js/1a3a5cbb.8ba00a30.js | 1 + assets/js/1a3bb66a.8ca073f7.js | 1 + assets/js/1a4e3797.af9b292e.js | 1 + assets/js/1c291fdc.c1d9c78d.js | 1 + assets/js/1e828d0d.eae29f3f.js | 1 + assets/js/1ecac929.4026d79c.js | 1 + assets/js/1f391b9e.8cf8f13b.js | 1 + assets/js/20c870cb.fc120f02.js | 1 + assets/js/2112.2b03aa07.js | 1 + assets/js/2192b561.ddda8f54.js | 1 + assets/js/228d1b45.82366616.js | 1 + assets/js/23284c9b.20730bf6.js | 1 + assets/js/2342.25912561.js | 1 + assets/js/23c216bb.d1f3edb7.js | 1 + assets/js/2462.92c834f6.js | 1 + assets/js/24af6869.9e5db2d3.js | 1 + assets/js/25072094.ba042603.js | 1 + assets/js/2950f807.da4a2425.js | 1 + assets/js/29a2444a.ca3c70d1.js | 1 + assets/js/2f675600.bb74ddd9.js | 1 + assets/js/30f6db9d.c745195e.js | 1 + assets/js/3139ff2f.c26a0908.js | 1 + assets/js/324fc7ff.8b292941.js | 1 + assets/js/325152a5.7841a58f.js | 1 + assets/js/3325f0a2.1e18f834.js | 1 + assets/js/3332.03236ca3.js | 2 + assets/js/3332.03236ca3.js.LICENSE.txt | 1 + assets/js/341c85ac.bf75e08d.js | 1 + assets/js/341f4c6e.7089d269.js | 1 + assets/js/35179155.c63741dd.js | 1 + assets/js/3566.c9d98388.js | 1 + assets/js/368eb302.357b41fd.js | 1 + assets/js/3819.36313666.js | 1 + assets/js/388f1aef.4435dd88.js | 1 + assets/js/3abc021e.f63cc35f.js | 1 + assets/js/3e41c308.24bd886f.js | 1 + assets/js/3e68fbe7.9af0cab4.js | 1 + assets/js/3fb0a163.6b305344.js | 1 + assets/js/400cc4b7.f8b9ca7c.js | 1 + assets/js/4047c50f.c0b206fe.js | 1 + assets/js/411bcc8b.06632b9e.js | 1 + assets/js/41b23040.971baa32.js | 1 + assets/js/41bca987.cbb68b80.js | 1 + assets/js/4326.ada317d4.js | 1 + assets/js/4329fc3c.6bc2d8bb.js | 1 + assets/js/4343.1d9bdd1e.js | 1 + assets/js/4359cab8.86206a90.js | 1 + assets/js/444a5a58.da06fd79.js | 1 + assets/js/4477.2f461e97.js | 1 + assets/js/4576.01fa1abc.js | 1 + assets/js/4577221a.09a7f265.js | 1 + assets/js/46d462fa.286c2600.js | 1 + assets/js/46e9ac31.d214ee12.js | 1 + assets/js/47da9d80.8ece4d5e.js | 1 + assets/js/485c5e01.604a9153.js | 1 + assets/js/487ca811.0e457977.js | 1 + assets/js/4c8a85bd.a9c6182b.js | 1 + assets/js/4e8e2262.aa0f58c7.js | 1 + assets/js/50b1f033.c59eb4a5.js | 1 + assets/js/50cf1f78.f7d589c0.js | 1 + assets/js/5163.86d9e04c.js | 1 + assets/js/5176.eef51250.js | 1 + assets/js/518ccc20.ee4eedd4.js | 1 + assets/js/51d6008a.50a9f7f0.js | 1 + assets/js/521dad97.82033bc9.js | 1 + assets/js/5314.cbe680d3.js | 1 + assets/js/5381.8b425fa2.js | 1 + assets/js/53b10fcd.34a45138.js | 1 + assets/js/54b37c16.3d14365d.js | 1 + assets/js/54f055ef.80b62cae.js | 1 + assets/js/570.43010e8c.js | 1 + assets/js/571f3672.aea1a8e4.js | 1 + assets/js/5900.7322453c.js | 1 + assets/js/5ad15a2f.f4fecb23.js | 1 + assets/js/5b786e91.375d2adb.js | 1 + assets/js/5d2d37cd.b28f062f.js | 1 + assets/js/5d624d4b.a7c617c0.js | 1 + assets/js/5e95c892.b9e9ae8d.js | 1 + assets/js/5f0d7ee4.d029c08e.js | 1 + assets/js/5fd14b8b.6409dbe4.js | 1 + assets/js/6033e994.8a9089ba.js | 1 + assets/js/6144.15fa81c8.js | 1 + assets/js/6154.bd2e6f39.js | 1 + assets/js/627bdb5d.ae8f63fd.js | 1 + assets/js/62cdf0e0.2cdd70b2.js | 1 + assets/js/6377.cb157b13.js | 1 + assets/js/64018eb5.14ae6d1d.js | 1 + assets/js/6518a949.2a328af4.js | 1 + assets/js/6538.749844d5.js | 1 + assets/js/66e00e19.3dc8d15e.js | 1 + assets/js/6710.fc711c77.js | 1 + assets/js/6751.ad5458e5.js | 1 + assets/js/686.7b631913.js | 1 + assets/js/6993.7a3e92a9.js | 1 + assets/js/6bba662b.e636cc51.js | 1 + assets/js/6e6115bc.9c665f96.js | 1 + assets/js/6e873df7.fec0e1cb.js | 1 + assets/js/70335a48.f86179a4.js | 1 + assets/js/71174ce3.4f3ede8c.js | 1 + assets/js/7136df27.1082e2aa.js | 1 + assets/js/71eb5ef4.a76ebaef.js | 1 + assets/js/724ecf1a.9bf4f373.js | 1 + assets/js/7273998d.6460f2be.js | 1 + assets/js/74876495.62b60152.js | 1 + assets/js/75878fc8.b7f50444.js | 1 + assets/js/772.c108aa20.js | 1 + assets/js/7798.e38b8348.js | 1 + assets/js/7bab4396.f58c23ab.js | 1 + assets/js/7c1e7b42.398858f5.js | 1 + assets/js/7cbf6be7.0fd7bef4.js | 1 + assets/js/7da24252.97351c6c.js | 1 + assets/js/8065.f8f3def9.js | 1 + assets/js/8090.2e2b6ff8.js | 2 + assets/js/8090.2e2b6ff8.js.LICENSE.txt | 9 + assets/js/8134.afb4adcb.js | 1 + assets/js/8297.828b60c2.js | 1 + assets/js/84fb41f0.22512b68.js | 1 + assets/js/86c82c9a.704cb880.js | 1 + assets/js/871.5341b1ea.js | 1 + assets/js/87c27ff4.6e6a9d5f.js | 1 + assets/js/8824.a09ae4d0.js | 1 + assets/js/8886.44c26cb4.js | 1 + assets/js/896d06c5.7c4b3f7f.js | 1 + assets/js/89d14484.675e28e5.js | 1 + assets/js/8dac98b9.6fa92e78.js | 1 + assets/js/8e56f135.7be2c54b.js | 1 + assets/js/9111.dd16d8c7.js | 1 + assets/js/91e5ca6b.34aeb968.js | 1 + assets/js/91ee770c.5b0131e0.js | 1 + assets/js/92131bac.7edf15d9.js | 1 + assets/js/9402.3e4174f5.js | 1 + assets/js/9469bd80.82882490.js | 1 + assets/js/9478d12a.78d0819f.js | 1 + assets/js/94dc3e5f.08386f01.js | 1 + assets/js/9538.d2be03db.js | 1 + assets/js/9860.dc06ad47.js | 1 + assets/js/99547feb.0f4e43ef.js | 1 + assets/js/9998.b3ef794d.js | 1 + assets/js/99cbfc76.bab4b49e.js | 1 + assets/js/9ae4b911.287c9823.js | 1 + assets/js/9e2bab8c.72214067.js | 1 + assets/js/a06cff9c.68c9ad11.js | 1 + assets/js/a180cea5.12b75376.js | 1 + assets/js/a2d99d88.bc6419f1.js | 1 + assets/js/a35aa088.66e7e35f.js | 1 + assets/js/a4b1a9b8.e83ba81c.js | 1 + assets/js/a4e2bd41.6d1296f7.js | 1 + assets/js/a559ab1c.eb18048e.js | 1 + assets/js/a5f1db42.71bce1f9.js | 1 + assets/js/a5fc5a0e.d705654f.js | 1 + assets/js/a7456010.f7ae1996.js | 1 + assets/js/a7bd4aaa.2484d96d.js | 1 + assets/js/a8ed45e8.71f7c343.js | 1 + assets/js/a94703ab.43b485b1.js | 1 + assets/js/aad83134.e45bf932.js | 1 + assets/js/aba21aa0.98fa788f.js | 1 + assets/js/abdba85e.26e5806f.js | 1 + assets/js/ac2458d6.80ddf71a.js | 1 + assets/js/b00e7a90.a49b6a39.js | 1 + assets/js/b1002bca.3d470549.js | 1 + assets/js/b1c76d35.8ff8d553.js | 1 + assets/js/b20814c1.bdea7f12.js | 1 + assets/js/b28afb00.b441d887.js | 1 + assets/js/b35da6ab.0ba5b2bd.js | 1 + assets/js/b3a16c5b.d3c71a1c.js | 1 + assets/js/b7c223ee.81ebafcd.js | 1 + assets/js/ba3d50d9.6fdc1a92.js | 1 + assets/js/bc73dc9d.81b9925e.js | 1 + assets/js/bc7e3c4b.a8fbf2c4.js | 1 + assets/js/bd7e05cf.d916accd.js | 1 + assets/js/be81e05d.7a86ef3f.js | 1 + assets/js/c0050a27.1fdf8fd2.js | 1 + assets/js/c07a004a.f92899db.js | 1 + assets/js/c10c208b.a6ca7316.js | 1 + assets/js/c141421f.484a90c2.js | 1 + assets/js/c1600862.f5c16495.js | 1 + assets/js/c2414a18.a5185bc2.js | 1 + assets/js/c4025719.ae817c79.js | 1 + assets/js/c4b5a5df.f6e20324.js | 1 + assets/js/c4f5d8e4.3afd3b59.js | 1 + assets/js/c5b979b0.ec745dfa.js | 1 + assets/js/c5f63adb.a5f2c02f.js | 1 + assets/js/c7222430.7a1609fd.js | 1 + assets/js/c83ce79b.05c17cb8.js | 1 + assets/js/c846d7aa.eb80452a.js | 1 + assets/js/c902409b.ea48d292.js | 1 + assets/js/c989d589.94d486a6.js | 1 + assets/js/ca3e6c65.ecb85b48.js | 1 + assets/js/ca460041.6b486372.js | 1 + assets/js/ca873730.a1e0ddd6.js | 1 + assets/js/ca8e7b55.318cc4bc.js | 1 + assets/js/cb00cd0b.c5dbd77c.js | 1 + assets/js/cb4f58ba.46f93e40.js | 1 + assets/js/cbb899e4.d2075ad6.js | 1 + assets/js/cbe609e8.3d5c44f1.js | 1 + assets/js/cc640607.57d48479.js | 1 + assets/js/cd2aa5fe.11b87afe.js | 1 + assets/js/cd6f4c97.d2deb129.js | 1 + assets/js/ce0be35a.84e31a7d.js | 1 + assets/js/d05f0a7d.ebcd5ef9.js | 1 + assets/js/d1cdaf24.c592a7cf.js | 1 + assets/js/d2866892.4829f6b3.js | 1 + assets/js/d425c21a.2155e74e.js | 1 + assets/js/d4bc87de.eb870da7.js | 1 + assets/js/d51efe31.8cb4c6e2.js | 1 + assets/js/d69a7b0b.901336c8.js | 1 + assets/js/d968e4da.5e728ea5.js | 1 + assets/js/dc7f0b30.6d808dd0.js | 1 + assets/js/de297161.ef4d0adf.js | 1 + assets/js/de406b5e.777d18f0.js | 1 + assets/js/df248b36.3e0b0a95.js | 1 + assets/js/e0474f93.a9c558dc.js | 1 + assets/js/e0a1aa17.e9aa4f41.js | 1 + assets/js/e12d7f74.b33a1f87.js | 1 + assets/js/e4603b0e.eb25e36b.js | 1 + assets/js/e480558e.6da81ca1.js | 1 + assets/js/e4d3d2e1.0520673c.js | 1 + assets/js/e4f0c0bc.660ed59a.js | 1 + assets/js/e5eedb42.302cbb8a.js | 1 + assets/js/e69e4b95.4f61ca79.js | 1 + assets/js/e7f8ca4b.e49f8895.js | 1 + assets/js/e819ef22.1f7644ac.js | 1 + assets/js/e8303188.d53d0160.js | 1 + assets/js/eadc19b4.06a401e4.js | 1 + assets/js/eb10ccf4.83c5f603.js | 1 + assets/js/eb678835.77a07c94.js | 1 + assets/js/ede96f45.13e02b5b.js | 1 + assets/js/ef09bccd.a990ad2c.js | 1 + assets/js/ef46515e.198010c5.js | 1 + assets/js/f354998b.75ea0a3d.js | 1 + assets/js/f399bb6f.cf5dbf41.js | 1 + assets/js/f435945d.f9006091.js | 1 + assets/js/f9546978.0ec94175.js | 1 + assets/js/f963ac8e.5450a01f.js | 1 + assets/js/fb031341.984994de.js | 1 + assets/js/fde89899.a1e49d64.js | 1 + assets/js/ff366317.3645d264.js | 1 + assets/js/ffeead90.0bf02578.js | 1 + assets/js/main.2ca436d8.js | 2 + assets/js/main.2ca436d8.js.LICENSE.txt | 61 +++ assets/js/runtime~main.960e6753.js | 1 + changelog/index.html | 409 ++++++++++++++++++ docs/0.10.0/configuration/index.html | 16 + docs/0.10.0/index.html | 21 + docs/0.10.0/mdx/index.html | 16 + .../android/disable_resources/index.html | 16 + .../android/disable_viewbinding/index.html | 16 + .../kapt/custom_kapt_matchers/index.html | 16 + .../rules/kapt/unused_kapt_plugin/index.html | 16 + .../kapt/unused_kapt_processor/index.html | 16 + docs/0.10.0/rules/overshot/index.html | 16 + docs/0.10.0/rules/redundant/index.html | 16 + .../sorting/sort_dependencies/index.html | 16 + .../rules/sorting/sort_plugins/index.html | 16 + docs/0.10.0/rules/unused/index.html | 16 + docs/0.11.0/configuration/index.html | 16 + docs/0.11.0/index.html | 34 ++ .../android/disable_resources/index.html | 18 + .../android/disable_viewbinding/index.html | 18 + .../could_use_anvil_factory/index.html | 26 ++ .../rules/inherited_dependency/index.html | 19 + .../kapt/custom_kapt_matchers/index.html | 18 + .../rules/kapt/unused_kapt_plugin/index.html | 17 + .../kapt/unused_kapt_processor/index.html | 38 ++ docs/0.11.0/rules/must_be_api/index.html | 21 + .../sorting/sort_dependencies/index.html | 16 + .../rules/sorting/sort_plugins/index.html | 16 + docs/0.11.0/rules/unused/index.html | 21 + docs/0.11.1/configuration/index.html | 16 + docs/0.11.1/index.html | 34 ++ .../android/disable_resources/index.html | 18 + .../android/disable_viewbinding/index.html | 18 + .../could_use_anvil_factory/index.html | 26 ++ .../rules/inherited_dependency/index.html | 19 + .../kapt/custom_kapt_matchers/index.html | 18 + .../rules/kapt/unused_kapt_plugin/index.html | 17 + .../kapt/unused_kapt_processor/index.html | 38 ++ docs/0.11.1/rules/must_be_api/index.html | 21 + .../sorting/sort_dependencies/index.html | 16 + .../rules/sorting/sort_plugins/index.html | 16 + docs/0.11.1/rules/unused/index.html | 21 + docs/0.11.2/ci-workflow/index.html | 40 ++ docs/0.11.2/configuration/index.html | 16 + docs/0.11.2/index.html | 34 ++ .../android/disable_resources/index.html | 18 + .../android/disable_viewbinding/index.html | 18 + .../could_use_anvil_factory/index.html | 26 ++ .../rules/inherited_dependency/index.html | 19 + .../kapt/custom_kapt_matchers/index.html | 18 + .../rules/kapt/unused_kapt_plugin/index.html | 17 + .../kapt/unused_kapt_processor/index.html | 38 ++ docs/0.11.2/rules/must_be_api/index.html | 21 + .../sorting/sort_dependencies/index.html | 16 + .../rules/sorting/sort_plugins/index.html | 16 + docs/0.11.2/rules/unused/index.html | 21 + docs/0.11.3/ci-workflow/index.html | 40 ++ docs/0.11.3/configuration/index.html | 16 + docs/0.11.3/index.html | 34 ++ .../android/disable_resources/index.html | 18 + .../android/disable_viewbinding/index.html | 18 + .../could_use_anvil_factory/index.html | 26 ++ .../rules/inherited_dependency/index.html | 19 + .../kapt/custom_kapt_matchers/index.html | 18 + .../rules/kapt/unused_kapt_plugin/index.html | 17 + .../kapt/unused_kapt_processor/index.html | 38 ++ docs/0.11.3/rules/must_be_api/index.html | 21 + .../sorting/sort_dependencies/index.html | 16 + .../rules/sorting/sort_plugins/index.html | 16 + docs/0.11.3/rules/unused/index.html | 21 + docs/0.11.3/suppressing-findings/index.html | 19 + docs/0.12.0/ci-workflow/index.html | 40 ++ docs/0.12.0/configuration/index.html | 16 + docs/0.12.0/index.html | 33 ++ .../android/disable_resources/index.html | 18 + .../android/disable_viewbinding/index.html | 18 + .../index.html | 17 + .../could_use_anvil_factory/index.html | 26 ++ docs/0.12.0/rules/depths/index.html | 54 +++ .../rules/inherited_dependency/index.html | 19 + .../kapt/custom_kapt_matchers/index.html | 18 + .../rules/kapt/unused_kapt_plugin/index.html | 17 + .../kapt/unused_kapt_processor/index.html | 38 ++ docs/0.12.0/rules/must_be_api/index.html | 21 + .../rules/overshot_dependency/index.html | 23 + .../rules/redundant_dependency/index.html | 26 ++ .../sorting/sort_dependencies/index.html | 16 + .../rules/sorting/sort_plugins/index.html | 16 + docs/0.12.0/rules/unused/index.html | 21 + docs/0.12.0/suppressing-findings/index.html | 19 + docs/0.12.1/ci-workflow/index.html | 40 ++ docs/0.12.1/configuration/index.html | 16 + docs/0.12.1/index.html | 33 ++ .../rules/custom_kapt_matchers/index.html | 18 + .../disable_android_resources/index.html | 18 + .../rules/disable_view_binding/index.html | 18 + .../rules/inherited_dependency/index.html | 19 + docs/0.12.1/rules/must_be_api/index.html | 21 + .../rules/overshot_dependency/index.html | 23 + docs/0.12.1/rules/project_depth/index.html | 54 +++ .../rules/redundant_dependency/index.html | 26 ++ .../0.12.1/rules/sort_dependencies/index.html | 16 + docs/0.12.1/rules/sort_plugins/index.html | 16 + .../0.12.1/rules/unused_dependency/index.html | 21 + .../rules/unused_kapt_plugin/index.html | 17 + .../rules/unused_kapt_processor/index.html | 38 ++ .../index.html | 17 + .../use_anvil_factory_generation/index.html | 26 ++ docs/0.12.1/suppressing-findings/index.html | 19 + docs/0.12.2/ci-workflow/index.html | 40 ++ docs/0.12.2/configuration/index.html | 16 + docs/0.12.2/index.html | 33 ++ .../rules/custom_kapt_matchers/index.html | 18 + .../disable_android_resources/index.html | 18 + .../rules/disable_view_binding/index.html | 18 + .../rules/inherited_dependency/index.html | 19 + docs/0.12.2/rules/must_be_api/index.html | 21 + .../rules/overshot_dependency/index.html | 23 + docs/0.12.2/rules/project_depth/index.html | 54 +++ .../rules/redundant_dependency/index.html | 26 ++ .../0.12.2/rules/sort_dependencies/index.html | 16 + docs/0.12.2/rules/sort_plugins/index.html | 16 + .../0.12.2/rules/unused_dependency/index.html | 21 + .../rules/unused_kapt_plugin/index.html | 17 + .../rules/unused_kapt_processor/index.html | 38 ++ .../index.html | 17 + .../use_anvil_factory_generation/index.html | 26 ++ docs/0.12.2/suppressing-findings/index.html | 19 + docs/0.12.3/ci-workflow/index.html | 40 ++ docs/0.12.3/configuration/index.html | 16 + docs/0.12.3/index.html | 33 ++ .../rules/custom_kapt_matchers/index.html | 18 + .../disable_android_resources/index.html | 18 + .../rules/disable_view_binding/index.html | 18 + .../rules/inherited_dependency/index.html | 19 + docs/0.12.3/rules/must_be_api/index.html | 21 + .../rules/overshot_dependency/index.html | 23 + docs/0.12.3/rules/project_depth/index.html | 54 +++ .../rules/redundant_dependency/index.html | 26 ++ .../0.12.3/rules/sort_dependencies/index.html | 16 + docs/0.12.3/rules/sort_plugins/index.html | 16 + .../0.12.3/rules/unused_dependency/index.html | 21 + .../rules/unused_kapt_plugin/index.html | 17 + .../rules/unused_kapt_processor/index.html | 38 ++ .../index.html | 17 + .../use_anvil_factory_generation/index.html | 26 ++ docs/0.12.3/suppressing-findings/index.html | 19 + docs/0.12.4/ci-workflow/index.html | 40 ++ docs/0.12.4/configuration/index.html | 16 + docs/0.12.4/index.html | 33 ++ .../rules/custom_kapt_matchers/index.html | 18 + .../disable_android_resources/index.html | 18 + .../rules/disable_view_binding/index.html | 18 + .../rules/inherited_dependency/index.html | 19 + docs/0.12.4/rules/must_be_api/index.html | 21 + .../rules/overshot_dependency/index.html | 23 + docs/0.12.4/rules/project_depth/index.html | 54 +++ .../rules/redundant_dependency/index.html | 26 ++ .../0.12.4/rules/sort_dependencies/index.html | 16 + docs/0.12.4/rules/sort_plugins/index.html | 16 + .../0.12.4/rules/unused_dependency/index.html | 21 + .../rules/unused_kapt_plugin/index.html | 17 + .../rules/unused_kapt_processor/index.html | 38 ++ .../index.html | 17 + .../use_anvil_factory_generation/index.html | 26 ++ docs/0.12.4/suppressing-findings/index.html | 19 + docs/ci-workflow/index.html | 40 ++ docs/configuration/index.html | 16 + docs/index.html | 33 ++ docs/next/ci-workflow/index.html | 40 ++ docs/next/configuration/index.html | 16 + docs/next/index.html | 33 ++ .../rules/custom_kapt_matchers/index.html | 18 + .../disable_android_resources/index.html | 18 + .../rules/disable_view_binding/index.html | 18 + .../rules/inherited_dependency/index.html | 19 + docs/next/rules/must_be_api/index.html | 21 + .../next/rules/overshot_dependency/index.html | 23 + docs/next/rules/project_depth/index.html | 54 +++ .../rules/redundant_dependency/index.html | 26 ++ docs/next/rules/sort_dependencies/index.html | 16 + docs/next/rules/sort_plugins/index.html | 16 + docs/next/rules/unused_dependency/index.html | 21 + docs/next/rules/unused_kapt_plugin/index.html | 17 + .../rules/unused_kapt_processor/index.html | 38 ++ .../index.html | 17 + .../use_anvil_factory_generation/index.html | 26 ++ docs/next/suppressing-findings/index.html | 19 + docs/rules/custom_kapt_matchers/index.html | 18 + .../disable_android_resources/index.html | 18 + docs/rules/disable_view_binding/index.html | 18 + docs/rules/inherited_dependency/index.html | 19 + docs/rules/must_be_api/index.html | 21 + docs/rules/overshot_dependency/index.html | 23 + docs/rules/project_depth/index.html | 54 +++ docs/rules/redundant_dependency/index.html | 26 ++ docs/rules/sort_dependencies/index.html | 16 + docs/rules/sort_plugins/index.html | 16 + docs/rules/unused_dependency/index.html | 21 + docs/rules/unused_kapt_plugin/index.html | 17 + docs/rules/unused_kapt_processor/index.html | 38 ++ .../index.html | 17 + .../use_anvil_factory_generation/index.html | 26 ++ docs/suppressing-findings/index.html | 19 + img/coffee-solid.svg | 21 + img/favicon.ico | Bin 0 -> 15406 bytes img/logo.png | Bin 0 -> 19659 bytes img/modulecheck_diagram.png | Bin 0 -> 1596171 bytes img/power-off-solid.svg | 21 + img/syringe-solid.svg | 21 + img/undraw_docusaurus_mountain.svg | 382 ++++++++++++++++ img/undraw_docusaurus_react.svg | 371 ++++++++++++++++ img/undraw_docusaurus_tree.svg | 93 ++++ index.html | 16 + migrations/index.html | 42 ++ opensearch.xml | 11 + search/index.html | 16 + sitemap.xml | 1 + 492 files changed, 6381 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 assets/css/styles.278f0c77.css create mode 100644 assets/js/011d940f.ee325784.js create mode 100644 assets/js/021c8caa.5f295dcb.js create mode 100644 assets/js/02359d8a.d06fea6b.js create mode 100644 assets/js/03459661.a5ccd375.js create mode 100644 assets/js/044a6187.858142cb.js create mode 100644 assets/js/048b8cd8.15bd0619.js create mode 100644 assets/js/051962a1.4cc7a7f7.js create mode 100644 assets/js/05d123c0.0e3e034d.js create mode 100644 assets/js/0807349d.731308c1.js create mode 100644 assets/js/09b50579.52f3f328.js create mode 100644 assets/js/0b199b14.369b6927.js create mode 100644 assets/js/0f29fa4c.fc3b20a4.js create mode 100644 assets/js/0fc8e5d5.38475e52.js create mode 100644 assets/js/1036.33ed1cdb.js create mode 100644 assets/js/1050d62e.d5223cec.js create mode 100644 assets/js/107eb4cc.38fc2a4d.js create mode 100644 assets/js/109fab02.1304204c.js create mode 100644 assets/js/10b686c7.ac7f610a.js create mode 100644 assets/js/12b0e932.46e840ec.js create mode 100644 assets/js/1341.9dd85c1f.js create mode 100644 assets/js/1483dc01.4a6793d2.js create mode 100644 assets/js/14e1fcc3.79e08407.js create mode 100644 assets/js/150ef1cb.34b3cc1d.js create mode 100644 assets/js/15a9c06b.fbed8bd4.js create mode 100644 assets/js/1608.b7fc7fa7.js create mode 100644 assets/js/171ac7cc.3780a727.js create mode 100644 assets/js/171f1b26.5b2c51de.js create mode 100644 assets/js/1760.3a07b760.js create mode 100644 assets/js/17896441.0a191866.js create mode 100644 assets/js/1874.e4531d36.js create mode 100644 assets/js/19b95078.24dbad74.js create mode 100644 assets/js/19d61b19.e67483c8.js create mode 100644 assets/js/1a3a5cbb.8ba00a30.js create mode 100644 assets/js/1a3bb66a.8ca073f7.js create mode 100644 assets/js/1a4e3797.af9b292e.js create mode 100644 assets/js/1c291fdc.c1d9c78d.js create mode 100644 assets/js/1e828d0d.eae29f3f.js create mode 100644 assets/js/1ecac929.4026d79c.js create mode 100644 assets/js/1f391b9e.8cf8f13b.js create mode 100644 assets/js/20c870cb.fc120f02.js create mode 100644 assets/js/2112.2b03aa07.js create mode 100644 assets/js/2192b561.ddda8f54.js create mode 100644 assets/js/228d1b45.82366616.js create mode 100644 assets/js/23284c9b.20730bf6.js create mode 100644 assets/js/2342.25912561.js create mode 100644 assets/js/23c216bb.d1f3edb7.js create mode 100644 assets/js/2462.92c834f6.js create mode 100644 assets/js/24af6869.9e5db2d3.js create mode 100644 assets/js/25072094.ba042603.js create mode 100644 assets/js/2950f807.da4a2425.js create mode 100644 assets/js/29a2444a.ca3c70d1.js create mode 100644 assets/js/2f675600.bb74ddd9.js create mode 100644 assets/js/30f6db9d.c745195e.js create mode 100644 assets/js/3139ff2f.c26a0908.js create mode 100644 assets/js/324fc7ff.8b292941.js create mode 100644 assets/js/325152a5.7841a58f.js create mode 100644 assets/js/3325f0a2.1e18f834.js create mode 100644 assets/js/3332.03236ca3.js create mode 100644 assets/js/3332.03236ca3.js.LICENSE.txt create mode 100644 assets/js/341c85ac.bf75e08d.js create mode 100644 assets/js/341f4c6e.7089d269.js create mode 100644 assets/js/35179155.c63741dd.js create mode 100644 assets/js/3566.c9d98388.js create mode 100644 assets/js/368eb302.357b41fd.js create mode 100644 assets/js/3819.36313666.js create mode 100644 assets/js/388f1aef.4435dd88.js create mode 100644 assets/js/3abc021e.f63cc35f.js create mode 100644 assets/js/3e41c308.24bd886f.js create mode 100644 assets/js/3e68fbe7.9af0cab4.js create mode 100644 assets/js/3fb0a163.6b305344.js create mode 100644 assets/js/400cc4b7.f8b9ca7c.js create mode 100644 assets/js/4047c50f.c0b206fe.js create mode 100644 assets/js/411bcc8b.06632b9e.js create mode 100644 assets/js/41b23040.971baa32.js create mode 100644 assets/js/41bca987.cbb68b80.js create mode 100644 assets/js/4326.ada317d4.js create mode 100644 assets/js/4329fc3c.6bc2d8bb.js create mode 100644 assets/js/4343.1d9bdd1e.js create mode 100644 assets/js/4359cab8.86206a90.js create mode 100644 assets/js/444a5a58.da06fd79.js create mode 100644 assets/js/4477.2f461e97.js create mode 100644 assets/js/4576.01fa1abc.js create mode 100644 assets/js/4577221a.09a7f265.js create mode 100644 assets/js/46d462fa.286c2600.js create mode 100644 assets/js/46e9ac31.d214ee12.js create mode 100644 assets/js/47da9d80.8ece4d5e.js create mode 100644 assets/js/485c5e01.604a9153.js create mode 100644 assets/js/487ca811.0e457977.js create mode 100644 assets/js/4c8a85bd.a9c6182b.js create mode 100644 assets/js/4e8e2262.aa0f58c7.js create mode 100644 assets/js/50b1f033.c59eb4a5.js create mode 100644 assets/js/50cf1f78.f7d589c0.js create mode 100644 assets/js/5163.86d9e04c.js create mode 100644 assets/js/5176.eef51250.js create mode 100644 assets/js/518ccc20.ee4eedd4.js create mode 100644 assets/js/51d6008a.50a9f7f0.js create mode 100644 assets/js/521dad97.82033bc9.js create mode 100644 assets/js/5314.cbe680d3.js create mode 100644 assets/js/5381.8b425fa2.js create mode 100644 assets/js/53b10fcd.34a45138.js create mode 100644 assets/js/54b37c16.3d14365d.js create mode 100644 assets/js/54f055ef.80b62cae.js create mode 100644 assets/js/570.43010e8c.js create mode 100644 assets/js/571f3672.aea1a8e4.js create mode 100644 assets/js/5900.7322453c.js create mode 100644 assets/js/5ad15a2f.f4fecb23.js create mode 100644 assets/js/5b786e91.375d2adb.js create mode 100644 assets/js/5d2d37cd.b28f062f.js create mode 100644 assets/js/5d624d4b.a7c617c0.js create mode 100644 assets/js/5e95c892.b9e9ae8d.js create mode 100644 assets/js/5f0d7ee4.d029c08e.js create mode 100644 assets/js/5fd14b8b.6409dbe4.js create mode 100644 assets/js/6033e994.8a9089ba.js create mode 100644 assets/js/6144.15fa81c8.js create mode 100644 assets/js/6154.bd2e6f39.js create mode 100644 assets/js/627bdb5d.ae8f63fd.js create mode 100644 assets/js/62cdf0e0.2cdd70b2.js create mode 100644 assets/js/6377.cb157b13.js create mode 100644 assets/js/64018eb5.14ae6d1d.js create mode 100644 assets/js/6518a949.2a328af4.js create mode 100644 assets/js/6538.749844d5.js create mode 100644 assets/js/66e00e19.3dc8d15e.js create mode 100644 assets/js/6710.fc711c77.js create mode 100644 assets/js/6751.ad5458e5.js create mode 100644 assets/js/686.7b631913.js create mode 100644 assets/js/6993.7a3e92a9.js create mode 100644 assets/js/6bba662b.e636cc51.js create mode 100644 assets/js/6e6115bc.9c665f96.js create mode 100644 assets/js/6e873df7.fec0e1cb.js create mode 100644 assets/js/70335a48.f86179a4.js create mode 100644 assets/js/71174ce3.4f3ede8c.js create mode 100644 assets/js/7136df27.1082e2aa.js create mode 100644 assets/js/71eb5ef4.a76ebaef.js create mode 100644 assets/js/724ecf1a.9bf4f373.js create mode 100644 assets/js/7273998d.6460f2be.js create mode 100644 assets/js/74876495.62b60152.js create mode 100644 assets/js/75878fc8.b7f50444.js create mode 100644 assets/js/772.c108aa20.js create mode 100644 assets/js/7798.e38b8348.js create mode 100644 assets/js/7bab4396.f58c23ab.js create mode 100644 assets/js/7c1e7b42.398858f5.js create mode 100644 assets/js/7cbf6be7.0fd7bef4.js create mode 100644 assets/js/7da24252.97351c6c.js create mode 100644 assets/js/8065.f8f3def9.js create mode 100644 assets/js/8090.2e2b6ff8.js create mode 100644 assets/js/8090.2e2b6ff8.js.LICENSE.txt create mode 100644 assets/js/8134.afb4adcb.js create mode 100644 assets/js/8297.828b60c2.js create mode 100644 assets/js/84fb41f0.22512b68.js create mode 100644 assets/js/86c82c9a.704cb880.js create mode 100644 assets/js/871.5341b1ea.js create mode 100644 assets/js/87c27ff4.6e6a9d5f.js create mode 100644 assets/js/8824.a09ae4d0.js create mode 100644 assets/js/8886.44c26cb4.js create mode 100644 assets/js/896d06c5.7c4b3f7f.js create mode 100644 assets/js/89d14484.675e28e5.js create mode 100644 assets/js/8dac98b9.6fa92e78.js create mode 100644 assets/js/8e56f135.7be2c54b.js create mode 100644 assets/js/9111.dd16d8c7.js create mode 100644 assets/js/91e5ca6b.34aeb968.js create mode 100644 assets/js/91ee770c.5b0131e0.js create mode 100644 assets/js/92131bac.7edf15d9.js create mode 100644 assets/js/9402.3e4174f5.js create mode 100644 assets/js/9469bd80.82882490.js create mode 100644 assets/js/9478d12a.78d0819f.js create mode 100644 assets/js/94dc3e5f.08386f01.js create mode 100644 assets/js/9538.d2be03db.js create mode 100644 assets/js/9860.dc06ad47.js create mode 100644 assets/js/99547feb.0f4e43ef.js create mode 100644 assets/js/9998.b3ef794d.js create mode 100644 assets/js/99cbfc76.bab4b49e.js create mode 100644 assets/js/9ae4b911.287c9823.js create mode 100644 assets/js/9e2bab8c.72214067.js create mode 100644 assets/js/a06cff9c.68c9ad11.js create mode 100644 assets/js/a180cea5.12b75376.js create mode 100644 assets/js/a2d99d88.bc6419f1.js create mode 100644 assets/js/a35aa088.66e7e35f.js create mode 100644 assets/js/a4b1a9b8.e83ba81c.js create mode 100644 assets/js/a4e2bd41.6d1296f7.js create mode 100644 assets/js/a559ab1c.eb18048e.js create mode 100644 assets/js/a5f1db42.71bce1f9.js create mode 100644 assets/js/a5fc5a0e.d705654f.js create mode 100644 assets/js/a7456010.f7ae1996.js create mode 100644 assets/js/a7bd4aaa.2484d96d.js create mode 100644 assets/js/a8ed45e8.71f7c343.js create mode 100644 assets/js/a94703ab.43b485b1.js create mode 100644 assets/js/aad83134.e45bf932.js create mode 100644 assets/js/aba21aa0.98fa788f.js create mode 100644 assets/js/abdba85e.26e5806f.js create mode 100644 assets/js/ac2458d6.80ddf71a.js create mode 100644 assets/js/b00e7a90.a49b6a39.js create mode 100644 assets/js/b1002bca.3d470549.js create mode 100644 assets/js/b1c76d35.8ff8d553.js create mode 100644 assets/js/b20814c1.bdea7f12.js create mode 100644 assets/js/b28afb00.b441d887.js create mode 100644 assets/js/b35da6ab.0ba5b2bd.js create mode 100644 assets/js/b3a16c5b.d3c71a1c.js create mode 100644 assets/js/b7c223ee.81ebafcd.js create mode 100644 assets/js/ba3d50d9.6fdc1a92.js create mode 100644 assets/js/bc73dc9d.81b9925e.js create mode 100644 assets/js/bc7e3c4b.a8fbf2c4.js create mode 100644 assets/js/bd7e05cf.d916accd.js create mode 100644 assets/js/be81e05d.7a86ef3f.js create mode 100644 assets/js/c0050a27.1fdf8fd2.js create mode 100644 assets/js/c07a004a.f92899db.js create mode 100644 assets/js/c10c208b.a6ca7316.js create mode 100644 assets/js/c141421f.484a90c2.js create mode 100644 assets/js/c1600862.f5c16495.js create mode 100644 assets/js/c2414a18.a5185bc2.js create mode 100644 assets/js/c4025719.ae817c79.js create mode 100644 assets/js/c4b5a5df.f6e20324.js create mode 100644 assets/js/c4f5d8e4.3afd3b59.js create mode 100644 assets/js/c5b979b0.ec745dfa.js create mode 100644 assets/js/c5f63adb.a5f2c02f.js create mode 100644 assets/js/c7222430.7a1609fd.js create mode 100644 assets/js/c83ce79b.05c17cb8.js create mode 100644 assets/js/c846d7aa.eb80452a.js create mode 100644 assets/js/c902409b.ea48d292.js create mode 100644 assets/js/c989d589.94d486a6.js create mode 100644 assets/js/ca3e6c65.ecb85b48.js create mode 100644 assets/js/ca460041.6b486372.js create mode 100644 assets/js/ca873730.a1e0ddd6.js create mode 100644 assets/js/ca8e7b55.318cc4bc.js create mode 100644 assets/js/cb00cd0b.c5dbd77c.js create mode 100644 assets/js/cb4f58ba.46f93e40.js create mode 100644 assets/js/cbb899e4.d2075ad6.js create mode 100644 assets/js/cbe609e8.3d5c44f1.js create mode 100644 assets/js/cc640607.57d48479.js create mode 100644 assets/js/cd2aa5fe.11b87afe.js create mode 100644 assets/js/cd6f4c97.d2deb129.js create mode 100644 assets/js/ce0be35a.84e31a7d.js create mode 100644 assets/js/d05f0a7d.ebcd5ef9.js create mode 100644 assets/js/d1cdaf24.c592a7cf.js create mode 100644 assets/js/d2866892.4829f6b3.js create mode 100644 assets/js/d425c21a.2155e74e.js create mode 100644 assets/js/d4bc87de.eb870da7.js create mode 100644 assets/js/d51efe31.8cb4c6e2.js create mode 100644 assets/js/d69a7b0b.901336c8.js create mode 100644 assets/js/d968e4da.5e728ea5.js create mode 100644 assets/js/dc7f0b30.6d808dd0.js create mode 100644 assets/js/de297161.ef4d0adf.js create mode 100644 assets/js/de406b5e.777d18f0.js create mode 100644 assets/js/df248b36.3e0b0a95.js create mode 100644 assets/js/e0474f93.a9c558dc.js create mode 100644 assets/js/e0a1aa17.e9aa4f41.js create mode 100644 assets/js/e12d7f74.b33a1f87.js create mode 100644 assets/js/e4603b0e.eb25e36b.js create mode 100644 assets/js/e480558e.6da81ca1.js create mode 100644 assets/js/e4d3d2e1.0520673c.js create mode 100644 assets/js/e4f0c0bc.660ed59a.js create mode 100644 assets/js/e5eedb42.302cbb8a.js create mode 100644 assets/js/e69e4b95.4f61ca79.js create mode 100644 assets/js/e7f8ca4b.e49f8895.js create mode 100644 assets/js/e819ef22.1f7644ac.js create mode 100644 assets/js/e8303188.d53d0160.js create mode 100644 assets/js/eadc19b4.06a401e4.js create mode 100644 assets/js/eb10ccf4.83c5f603.js create mode 100644 assets/js/eb678835.77a07c94.js create mode 100644 assets/js/ede96f45.13e02b5b.js create mode 100644 assets/js/ef09bccd.a990ad2c.js create mode 100644 assets/js/ef46515e.198010c5.js create mode 100644 assets/js/f354998b.75ea0a3d.js create mode 100644 assets/js/f399bb6f.cf5dbf41.js create mode 100644 assets/js/f435945d.f9006091.js create mode 100644 assets/js/f9546978.0ec94175.js create mode 100644 assets/js/f963ac8e.5450a01f.js create mode 100644 assets/js/fb031341.984994de.js create mode 100644 assets/js/fde89899.a1e49d64.js create mode 100644 assets/js/ff366317.3645d264.js create mode 100644 assets/js/ffeead90.0bf02578.js create mode 100644 assets/js/main.2ca436d8.js create mode 100644 assets/js/main.2ca436d8.js.LICENSE.txt create mode 100644 assets/js/runtime~main.960e6753.js create mode 100644 changelog/index.html create mode 100644 docs/0.10.0/configuration/index.html create mode 100644 docs/0.10.0/index.html create mode 100644 docs/0.10.0/mdx/index.html create mode 100644 docs/0.10.0/rules/android/disable_resources/index.html create mode 100644 docs/0.10.0/rules/android/disable_viewbinding/index.html create mode 100644 docs/0.10.0/rules/kapt/custom_kapt_matchers/index.html create mode 100644 docs/0.10.0/rules/kapt/unused_kapt_plugin/index.html create mode 100644 docs/0.10.0/rules/kapt/unused_kapt_processor/index.html create mode 100644 docs/0.10.0/rules/overshot/index.html create mode 100644 docs/0.10.0/rules/redundant/index.html create mode 100644 docs/0.10.0/rules/sorting/sort_dependencies/index.html create mode 100644 docs/0.10.0/rules/sorting/sort_plugins/index.html create mode 100644 docs/0.10.0/rules/unused/index.html create mode 100644 docs/0.11.0/configuration/index.html create mode 100644 docs/0.11.0/index.html create mode 100644 docs/0.11.0/rules/android/disable_resources/index.html create mode 100644 docs/0.11.0/rules/android/disable_viewbinding/index.html create mode 100644 docs/0.11.0/rules/compiler/could_use_anvil_factory/index.html create mode 100644 docs/0.11.0/rules/inherited_dependency/index.html create mode 100644 docs/0.11.0/rules/kapt/custom_kapt_matchers/index.html create mode 100644 docs/0.11.0/rules/kapt/unused_kapt_plugin/index.html create mode 100644 docs/0.11.0/rules/kapt/unused_kapt_processor/index.html create mode 100644 docs/0.11.0/rules/must_be_api/index.html create mode 100644 docs/0.11.0/rules/sorting/sort_dependencies/index.html create mode 100644 docs/0.11.0/rules/sorting/sort_plugins/index.html create mode 100644 docs/0.11.0/rules/unused/index.html create mode 100644 docs/0.11.1/configuration/index.html create mode 100644 docs/0.11.1/index.html create mode 100644 docs/0.11.1/rules/android/disable_resources/index.html create mode 100644 docs/0.11.1/rules/android/disable_viewbinding/index.html create mode 100644 docs/0.11.1/rules/compiler/could_use_anvil_factory/index.html create mode 100644 docs/0.11.1/rules/inherited_dependency/index.html create mode 100644 docs/0.11.1/rules/kapt/custom_kapt_matchers/index.html create mode 100644 docs/0.11.1/rules/kapt/unused_kapt_plugin/index.html create mode 100644 docs/0.11.1/rules/kapt/unused_kapt_processor/index.html create mode 100644 docs/0.11.1/rules/must_be_api/index.html create mode 100644 docs/0.11.1/rules/sorting/sort_dependencies/index.html create mode 100644 docs/0.11.1/rules/sorting/sort_plugins/index.html create mode 100644 docs/0.11.1/rules/unused/index.html create mode 100644 docs/0.11.2/ci-workflow/index.html create mode 100644 docs/0.11.2/configuration/index.html create mode 100644 docs/0.11.2/index.html create mode 100644 docs/0.11.2/rules/android/disable_resources/index.html create mode 100644 docs/0.11.2/rules/android/disable_viewbinding/index.html create mode 100644 docs/0.11.2/rules/compiler/could_use_anvil_factory/index.html create mode 100644 docs/0.11.2/rules/inherited_dependency/index.html create mode 100644 docs/0.11.2/rules/kapt/custom_kapt_matchers/index.html create mode 100644 docs/0.11.2/rules/kapt/unused_kapt_plugin/index.html create mode 100644 docs/0.11.2/rules/kapt/unused_kapt_processor/index.html create mode 100644 docs/0.11.2/rules/must_be_api/index.html create mode 100644 docs/0.11.2/rules/sorting/sort_dependencies/index.html create mode 100644 docs/0.11.2/rules/sorting/sort_plugins/index.html create mode 100644 docs/0.11.2/rules/unused/index.html create mode 100644 docs/0.11.3/ci-workflow/index.html create mode 100644 docs/0.11.3/configuration/index.html create mode 100644 docs/0.11.3/index.html create mode 100644 docs/0.11.3/rules/android/disable_resources/index.html create mode 100644 docs/0.11.3/rules/android/disable_viewbinding/index.html create mode 100644 docs/0.11.3/rules/compiler/could_use_anvil_factory/index.html create mode 100644 docs/0.11.3/rules/inherited_dependency/index.html create mode 100644 docs/0.11.3/rules/kapt/custom_kapt_matchers/index.html create mode 100644 docs/0.11.3/rules/kapt/unused_kapt_plugin/index.html create mode 100644 docs/0.11.3/rules/kapt/unused_kapt_processor/index.html create mode 100644 docs/0.11.3/rules/must_be_api/index.html create mode 100644 docs/0.11.3/rules/sorting/sort_dependencies/index.html create mode 100644 docs/0.11.3/rules/sorting/sort_plugins/index.html create mode 100644 docs/0.11.3/rules/unused/index.html create mode 100644 docs/0.11.3/suppressing-findings/index.html create mode 100644 docs/0.12.0/ci-workflow/index.html create mode 100644 docs/0.12.0/configuration/index.html create mode 100644 docs/0.12.0/index.html create mode 100644 docs/0.12.0/rules/android/disable_resources/index.html create mode 100644 docs/0.12.0/rules/android/disable_viewbinding/index.html create mode 100644 docs/0.12.0/rules/android/unused_kotlin_android_extensions/index.html create mode 100644 docs/0.12.0/rules/compiler/could_use_anvil_factory/index.html create mode 100644 docs/0.12.0/rules/depths/index.html create mode 100644 docs/0.12.0/rules/inherited_dependency/index.html create mode 100644 docs/0.12.0/rules/kapt/custom_kapt_matchers/index.html create mode 100644 docs/0.12.0/rules/kapt/unused_kapt_plugin/index.html create mode 100644 docs/0.12.0/rules/kapt/unused_kapt_processor/index.html create mode 100644 docs/0.12.0/rules/must_be_api/index.html create mode 100644 docs/0.12.0/rules/overshot_dependency/index.html create mode 100644 docs/0.12.0/rules/redundant_dependency/index.html create mode 100644 docs/0.12.0/rules/sorting/sort_dependencies/index.html create mode 100644 docs/0.12.0/rules/sorting/sort_plugins/index.html create mode 100644 docs/0.12.0/rules/unused/index.html create mode 100644 docs/0.12.0/suppressing-findings/index.html create mode 100644 docs/0.12.1/ci-workflow/index.html create mode 100644 docs/0.12.1/configuration/index.html create mode 100644 docs/0.12.1/index.html create mode 100644 docs/0.12.1/rules/custom_kapt_matchers/index.html create mode 100644 docs/0.12.1/rules/disable_android_resources/index.html create mode 100644 docs/0.12.1/rules/disable_view_binding/index.html create mode 100644 docs/0.12.1/rules/inherited_dependency/index.html create mode 100644 docs/0.12.1/rules/must_be_api/index.html create mode 100644 docs/0.12.1/rules/overshot_dependency/index.html create mode 100644 docs/0.12.1/rules/project_depth/index.html create mode 100644 docs/0.12.1/rules/redundant_dependency/index.html create mode 100644 docs/0.12.1/rules/sort_dependencies/index.html create mode 100644 docs/0.12.1/rules/sort_plugins/index.html create mode 100644 docs/0.12.1/rules/unused_dependency/index.html create mode 100644 docs/0.12.1/rules/unused_kapt_plugin/index.html create mode 100644 docs/0.12.1/rules/unused_kapt_processor/index.html create mode 100644 docs/0.12.1/rules/unused_kotlin_android_extensions/index.html create mode 100644 docs/0.12.1/rules/use_anvil_factory_generation/index.html create mode 100644 docs/0.12.1/suppressing-findings/index.html create mode 100644 docs/0.12.2/ci-workflow/index.html create mode 100644 docs/0.12.2/configuration/index.html create mode 100644 docs/0.12.2/index.html create mode 100644 docs/0.12.2/rules/custom_kapt_matchers/index.html create mode 100644 docs/0.12.2/rules/disable_android_resources/index.html create mode 100644 docs/0.12.2/rules/disable_view_binding/index.html create mode 100644 docs/0.12.2/rules/inherited_dependency/index.html create mode 100644 docs/0.12.2/rules/must_be_api/index.html create mode 100644 docs/0.12.2/rules/overshot_dependency/index.html create mode 100644 docs/0.12.2/rules/project_depth/index.html create mode 100644 docs/0.12.2/rules/redundant_dependency/index.html create mode 100644 docs/0.12.2/rules/sort_dependencies/index.html create mode 100644 docs/0.12.2/rules/sort_plugins/index.html create mode 100644 docs/0.12.2/rules/unused_dependency/index.html create mode 100644 docs/0.12.2/rules/unused_kapt_plugin/index.html create mode 100644 docs/0.12.2/rules/unused_kapt_processor/index.html create mode 100644 docs/0.12.2/rules/unused_kotlin_android_extensions/index.html create mode 100644 docs/0.12.2/rules/use_anvil_factory_generation/index.html create mode 100644 docs/0.12.2/suppressing-findings/index.html create mode 100644 docs/0.12.3/ci-workflow/index.html create mode 100644 docs/0.12.3/configuration/index.html create mode 100644 docs/0.12.3/index.html create mode 100644 docs/0.12.3/rules/custom_kapt_matchers/index.html create mode 100644 docs/0.12.3/rules/disable_android_resources/index.html create mode 100644 docs/0.12.3/rules/disable_view_binding/index.html create mode 100644 docs/0.12.3/rules/inherited_dependency/index.html create mode 100644 docs/0.12.3/rules/must_be_api/index.html create mode 100644 docs/0.12.3/rules/overshot_dependency/index.html create mode 100644 docs/0.12.3/rules/project_depth/index.html create mode 100644 docs/0.12.3/rules/redundant_dependency/index.html create mode 100644 docs/0.12.3/rules/sort_dependencies/index.html create mode 100644 docs/0.12.3/rules/sort_plugins/index.html create mode 100644 docs/0.12.3/rules/unused_dependency/index.html create mode 100644 docs/0.12.3/rules/unused_kapt_plugin/index.html create mode 100644 docs/0.12.3/rules/unused_kapt_processor/index.html create mode 100644 docs/0.12.3/rules/unused_kotlin_android_extensions/index.html create mode 100644 docs/0.12.3/rules/use_anvil_factory_generation/index.html create mode 100644 docs/0.12.3/suppressing-findings/index.html create mode 100644 docs/0.12.4/ci-workflow/index.html create mode 100644 docs/0.12.4/configuration/index.html create mode 100644 docs/0.12.4/index.html create mode 100644 docs/0.12.4/rules/custom_kapt_matchers/index.html create mode 100644 docs/0.12.4/rules/disable_android_resources/index.html create mode 100644 docs/0.12.4/rules/disable_view_binding/index.html create mode 100644 docs/0.12.4/rules/inherited_dependency/index.html create mode 100644 docs/0.12.4/rules/must_be_api/index.html create mode 100644 docs/0.12.4/rules/overshot_dependency/index.html create mode 100644 docs/0.12.4/rules/project_depth/index.html create mode 100644 docs/0.12.4/rules/redundant_dependency/index.html create mode 100644 docs/0.12.4/rules/sort_dependencies/index.html create mode 100644 docs/0.12.4/rules/sort_plugins/index.html create mode 100644 docs/0.12.4/rules/unused_dependency/index.html create mode 100644 docs/0.12.4/rules/unused_kapt_plugin/index.html create mode 100644 docs/0.12.4/rules/unused_kapt_processor/index.html create mode 100644 docs/0.12.4/rules/unused_kotlin_android_extensions/index.html create mode 100644 docs/0.12.4/rules/use_anvil_factory_generation/index.html create mode 100644 docs/0.12.4/suppressing-findings/index.html create mode 100644 docs/ci-workflow/index.html create mode 100644 docs/configuration/index.html create mode 100644 docs/index.html create mode 100644 docs/next/ci-workflow/index.html create mode 100644 docs/next/configuration/index.html create mode 100644 docs/next/index.html create mode 100644 docs/next/rules/custom_kapt_matchers/index.html create mode 100644 docs/next/rules/disable_android_resources/index.html create mode 100644 docs/next/rules/disable_view_binding/index.html create mode 100644 docs/next/rules/inherited_dependency/index.html create mode 100644 docs/next/rules/must_be_api/index.html create mode 100644 docs/next/rules/overshot_dependency/index.html create mode 100644 docs/next/rules/project_depth/index.html create mode 100644 docs/next/rules/redundant_dependency/index.html create mode 100644 docs/next/rules/sort_dependencies/index.html create mode 100644 docs/next/rules/sort_plugins/index.html create mode 100644 docs/next/rules/unused_dependency/index.html create mode 100644 docs/next/rules/unused_kapt_plugin/index.html create mode 100644 docs/next/rules/unused_kapt_processor/index.html create mode 100644 docs/next/rules/unused_kotlin_android_extensions/index.html create mode 100644 docs/next/rules/use_anvil_factory_generation/index.html create mode 100644 docs/next/suppressing-findings/index.html create mode 100644 docs/rules/custom_kapt_matchers/index.html create mode 100644 docs/rules/disable_android_resources/index.html create mode 100644 docs/rules/disable_view_binding/index.html create mode 100644 docs/rules/inherited_dependency/index.html create mode 100644 docs/rules/must_be_api/index.html create mode 100644 docs/rules/overshot_dependency/index.html create mode 100644 docs/rules/project_depth/index.html create mode 100644 docs/rules/redundant_dependency/index.html create mode 100644 docs/rules/sort_dependencies/index.html create mode 100644 docs/rules/sort_plugins/index.html create mode 100644 docs/rules/unused_dependency/index.html create mode 100644 docs/rules/unused_kapt_plugin/index.html create mode 100644 docs/rules/unused_kapt_processor/index.html create mode 100644 docs/rules/unused_kotlin_android_extensions/index.html create mode 100644 docs/rules/use_anvil_factory_generation/index.html create mode 100644 docs/suppressing-findings/index.html create mode 100644 img/coffee-solid.svg create mode 100644 img/favicon.ico create mode 100644 img/logo.png create mode 100644 img/modulecheck_diagram.png create mode 100644 img/power-off-solid.svg create mode 100644 img/syringe-solid.svg create mode 100644 img/undraw_docusaurus_mountain.svg create mode 100644 img/undraw_docusaurus_react.svg create mode 100644 img/undraw_docusaurus_tree.svg create mode 100644 index.html create mode 100644 migrations/index.html create mode 100644 opensearch.xml create mode 100644 search/index.html create mode 100644 sitemap.xml diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/404.html b/404.html new file mode 100644 index 0000000000..ab9e102a15 --- /dev/null +++ b/404.html @@ -0,0 +1,16 @@ + + + + + +Page Not Found | ModuleCheck + + + + + + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/assets/css/styles.278f0c77.css b/assets/css/styles.278f0c77.css new file mode 100644 index 0000000000..1a96dc03a2 --- /dev/null +++ b/assets/css/styles.278f0c77.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}*,.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.toggleButton_DDky,html{-webkit-tap-highlight-color:transparent}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#50a;--ifm-color-primary-dark:#4c0099;--ifm-color-primary-darker:#480090;--ifm-color-primary-darkest:#3b0077;--ifm-color-primary-light:#5d00bb;--ifm-color-primary-lighter:#6200c3;--ifm-color-primary-lightest:#6e00dd;--ifm-code-font-size:95%;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px #1e235a66;--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 #1e235a66;--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_qGQB{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_bkjJ,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}.container_QZpv,.container_QZpv>svg,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList_KWM2{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_Aice .wordWrapButtonIcon_evTN{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_hx_a,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.DocSearch-Container a,.dropdown__link--active,.dropdown__link:hover,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover,.tag_pAIo:hover{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_o6ZJ:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_MHtG article>:first-child,.docItemContainer_MHtG header+*,.footer__item{margin-top:0}.admonitionContent_LOU5>:last-child,.collapsibleContent_uSUc p:last-child,.details_FSmu>summary>p:last-child,.footer__items,.tabItem_qogc>:last-child{margin-bottom:0}.codeBlockStandalone_Z1WV,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_FSmu[data-collapsed=false].isBrowser_iXC9>summary:before,.details_FSmu[open]:not(.isBrowser_iXC9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;top:0;visibility:hidden;left:0}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.announcementBarContent_aTCg,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_RROW>li)>.containsTaskList_RROW{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--ifm-color-primary:#70c;--ifm-color-primary-dark:#6b00b8;--ifm-color-primary-darker:#6500ad;--ifm-color-primary-darkest:#53008f;--ifm-color-primary-light:#8300e0;--ifm-color-primary-lighter:#8900eb;--ifm-color-primary-lightest:#990aff;--docsearch-text-color:#f5f6f7;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 #0304094d;--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}.docusaurus-highlight-code-line{background-color:#484d5b;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.menu button{margin-bottom:70px}article{margin-left:auto;margin-right:auto;max-width:1800px}.tag_pAIo{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_pAIo:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_kD8B{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_KrMf{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_KrMf:after,.tagWithCount_KrMf:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_KrMf:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_KrMf:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_KrMf span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_wWOc{display:inline}.tag_SGXR{display:inline-block;margin:0 .4rem .5rem 0}.backToTopButton_N7e4{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_N7e4:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xOSK{opacity:1;transform:scale(1);visibility:visible}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;transition-duration:.1s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Hit[aria-selected=true] mark,.DocSearch-Prefill:focus,.DocSearch-Prefill:hover,.content_pIKM a{-webkit-text-decoration:underline;text-decoration:underline}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards a;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative;scroll-margin-top:40px}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_LiYE,.navbarSearchContainer_WjZK:empty,.sidebarLogo_ag23,.themedComponent_kh6W,.toggleIcon_BNLx,html[data-announcement-bar-initially-dismissed=true] .announcementBar_ExsL,svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon,.tocCollapsibleContent_XFsF a{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@keyframes a{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container,.skipToContent_X_hG{z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_X_hG{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem}.skipToContent_X_hG:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_D4Iw{line-height:0;padding:0}.content_pIKM{font-size:85%;padding:5px 0;text-align:center}.content_pIKM a{color:inherit}.announcementBar_ExsL{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vZsE{flex:0 0 10px}.announcementBarClose_kfzw{align-self:stretch;flex:0 0 30px}.toggle_bfyf{height:2rem;width:2rem}.toggleButton_DDky{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_DDky:hover{background:var(--ifm-color-emphasis-200)}[data-theme-choice=dark] .darkToggleIcon_lNmY,[data-theme-choice=light] .lightToggleIcon_FoKC,[data-theme-choice=system] .systemToggleIcon_Ctr3,[data-theme=dark] .themedComponent--dark_QNPN,[data-theme=light] .themedComponent--light_h03h,html:not([data-theme]) .themedComponent--light_h03h{display:initial}.toggleButtonDisabled_U1cX{cursor:not-allowed}.darkNavbarColorModeToggle_npDy:hover{background:var(--ifm-color-gray-800)}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_tTaE{display:none;margin:0}.iconExternalLink_bfN_{margin-left:.3rem}.docMainContainer_hwfy,.docRoot_Y0MQ{display:flex;width:100%}.docsWrapper_O5Uu{display:flex;flex:1 0 auto}.anchorWithStickyNavbar_debX{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_MBh0{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.footerLogoLink_sUlE:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.dropdownNavbarItemMobile_UUiP{cursor:pointer}.iconLanguage_Yxqf{margin-right:5px;vertical-align:text-bottom}.iconEdit_M1a8{margin-right:.3em;vertical-align:sub}.navbarHideable_dcaT{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_LHpq{transform:translate3d(0,calc(-100% - 2px),0)}.lastUpdated_UgWq{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_MtTV{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_MtTV:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_VQRl:after,.tocCollapsibleExpanded_TFgA{transform:none}.tocCollapsible_Rv3I{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_XFsF>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_XFsF ul li{margin:.4rem .8rem}.navbar__items--right>:last-child{padding-right:0}.errorBoundaryError_iQOE{color:red;white-space:pre-wrap}.errorBoundaryFallback_FOml{color:red;padding:.55rem}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.footerLogoLink_sUlE{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.mainWrapper_c5No{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.searchQueryInput_BHsc,.searchVersionInput_fGgd{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_BHsc:focus,.searchVersionInput_fGgd:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_BHsc::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_UW9C{font-size:.9rem;font-weight:700}.algoliaLogo_V9e0{max-width:150px}.algoliaLogoPathFill__cJo{fill:var(--ifm-font-color-base)}.searchResultItem_OQlH{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_kKNu{font-weight:400;margin-bottom:0}.searchResultItemPath_wOE1{color:var(--ifm-color-content-secondary);font-size:.8rem;--ifm-breadcrumb-separator-size-multiplier:1}.searchResultItemSummary_O1q3{font-style:italic;margin:.5rem 0 0}.loadingSpinner_DBHN{animation:1s linear infinite b;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes b{to{transform:rotate(1turn)}}.loader_umaA{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}.heroBanner_UJJx{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_pzbO{align-items:center;display:flex;justify-content:center}.container_czXe,.row_BFIh{display:inline-block;text-align:center;width:100%}.badges_T7Sn{padding:2rem;text-align:center}.features_keug{align-items:center;display:flex;margin:auto;padding:2rem 0;text-align:left;width:100%}.heroSlogan_kIIh{color:var(--ifm-color-white)!important;font-size:3em;line-height:normal}.gettingStartedButton_mhEX{background:#fff;color:var(--ifm-color-gray-900)!important}.buttonGroup_uSbf button,.codeBlockContainer_tyQ7{background:var(--prism-background-color);color:var(--prism-color)}.gettingStartedButton_mhEX:hover{background:#fff;color:var(--ifm-color-primary)!important}.codeBlockContainer_tyQ7{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlock__bzz{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockLines_b1Li{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_lTB5{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_p4HS{counter-increment:a;display:table-row}.codeLineNumber_o6ZJ{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_o6ZJ:before{content:counter(a);opacity:.4}.codeLineContent_Z4Pr{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_lzuF{opacity:1!important}.copyButtonIcons_Vzzk{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_yGyI,.copyButtonSuccessIcon_Vqwn{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_Vqwn{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_lzuF .copyButtonIcon_yGyI{opacity:0;transform:scale(.33)}.copyButtonCopied_lzuF .copyButtonSuccessIcon_Vqwn{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_evTN{height:1.2rem;width:1.2rem}.buttonGroup_uSbf{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_uSbf button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_uSbf button:focus-visible,.buttonGroup_uSbf button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_uSbf button{opacity:.4}.codeBlockContent_nOVm{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_rVa_{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_rVa_+.codeBlockContent_nOVm .codeBlock_F2mX{border-top-left-radius:0;border-top-right-radius:0}.details_FSmu{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_FSmu>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_FSmu>summary::-webkit-details-marker{display:none}.details_FSmu>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_uSUc{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_seRW{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_RROW{list-style:none}.img_AUsV{height:auto}.admonition_NGYd{margin-bottom:1em}.admonitionHeading_hx_a{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_hx_a:not(:last-child){margin-bottom:.3rem}.admonitionHeading_hx_a code{text-transform:none}.admonitionIcon_n04r{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_n04r svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.tableOfContents_baz9{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbHomeIcon_YiAp{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_yRvd{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.mdxPageWrapper_L88T{justify-content:center}@media (min-width:997px){.collapseSidebarButton_tTaE,.expandButton_Chnj{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_kfzw,.announcementBarPlaceholder_vZsE{flex-basis:50px}.collapseSidebarButton_tTaE{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_aVw4{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_ukA1,[dir=rtl] .collapseSidebarButtonIcon_aVw4{transform:rotate(0)}.collapseSidebarButton_tTaE:focus,.collapseSidebarButton_tTaE:hover,.expandButton_Chnj:focus,.expandButton_Chnj:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_SDir{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_Ug5w{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_Ug5w{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_U9It{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_kIjR{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_BO_l{padding-top:0}.sidebarHidden_XfJk{opacity:0;visibility:hidden}.sidebarLogo_ag23{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_ag23 img{height:2rem;margin-right:.5rem}.expandButton_Chnj{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_ukA1{transform:rotate(180deg)}.docSidebarContainer_LiYE{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_FBNp{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_yu1D{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_hwfy{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Aqm8{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_MOcI{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_WjZK{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_UgWq{text-align:right}.tocMobile_HJNs{display:none}.docItemCol_oWXt{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_Bfwy,.footer__link-separator,.navbar__item,.tableOfContents_baz9{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:max-content}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_WjZK{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_jSd8{padding:0 .3rem}}@media only screen and (max-width:996px){.searchQueryColumn_WeQf,.searchResultsColumn_UW9C{max-width:60%!important}.searchLogoColumn_c1HD,.searchVersionColumn_PhHw{max-width:40%!important}.searchLogoColumn_c1HD{padding-left:0!important}}@media screen and (max-width:966px){.heroBanner_UJJx{padding:2rem}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media screen and (max-width:576px){.searchQueryColumn_WeQf{max-width:100%!important}.searchVersionColumn_PhHw{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_N7e4:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media (prefers-reduced-motion){.DocSearch-Button-Key{transition:none}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}@media print{.announcementBar_ExsL,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_HJNs{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_b1Li{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/011d940f.ee325784.js b/assets/js/011d940f.ee325784.js new file mode 100644 index 0000000000..8f379d44f4 --- /dev/null +++ b/assets/js/011d940f.ee325784.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1536],{33735:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.12.3/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.12.3/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/configuration.mdx","tags":[],"version":"0.12.3","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.12.3/"},"next":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.3/suppressing-findings"}}');var a=n(23420),s=n(65404),o=n(65780),u=n(58118);const l={id:"configuration",sidebar_label:"Configuration"},i=void 0,c={},d=[];function f(e){const t={code:"code",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(o.A,{children:[(0,a.jsx)(u.A,{value:"Kotlin",default:!0,children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'plugins {\n id("com.rickbusarow.module-check") version "0.12.3"\n}\n\nmoduleCheck {\n\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = setOf(":app")\n\n additionalCodeGenerators = listOf(\n modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n name = "My Processor",\n generatorMavenCoordinates = "my-project.codegen:processor",\n annotationNames = listOf(\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n )\n )\n )\n\n reports {\n checkstyle {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n}\n'})})}),(0,a.jsx)(u.A,{value:"Groovy",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'plugins {\n id \'com.rickbusarow.module-check\' version \'0.12.3\'\n}\n\nmoduleCheck {\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = [\':test:core-jvm\', \':test:core-android\']\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = [\':app\']\n\n additionalCodeGenerators = [\n new modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n \'My Processor\',\n \'my-project.codegen:processor\',\n [\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n ]\n )\n ]\n\n reports {\n checkstyle {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n it.enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n it.outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n\n}\n'})})})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}},58118:(e,t,n)=>{n.d(t,{A:()=>o});n(36672);var r=n(13526);const a={tabItem:"tabItem_qogc"};var s=n(23420);function o({children:e,hidden:t,className:n}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,n),hidden:t,children:e})}},65404:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>u});var r=n(36672);const a={},s=r.createContext(a);function o(e){const t=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:t},e.children)}},65780:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(36672),a=n(13526),s=n(10452),o=n(85291),u=n(10914),l=n(41201),i=n(40622),c=n(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function f(e){const{values:t,children:n}=e;return(0,r.useMemo)(()=>{const e=t??function(e){return d(e).map(({props:{value:e,label:t,attributes:n,default:r}})=>({value:e,label:t,attributes:n,default:r}))}(n);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[t,n])}function p({value:e,tabValues:t}){return t.some(t=>t.value===e)}function h({queryString:e=!1,groupId:t}){const n=(0,o.W6)(),a=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,l.aZ)(a),(0,r.useCallback)(e=>{if(!a)return;const t=new URLSearchParams(n.location.search);t.set(a,e),n.replace({...n.location,search:t.toString()})},[a,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,s=f(e),[o,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:s})),[i,d]=h({queryString:n,groupId:a}),[m,b]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,a]=(0,c.Dv)(t);return[n,(0,r.useCallback)(e=>{t&&a.set(e)},[t,a])]}({groupId:a}),g=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,u.A)(()=>{g&&l(g)},[g]);return{selectedValue:o,selectValue:(0,r.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,s]),tabValues:s}}var b=n(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var y=n(23420);function v({className:e,block:t,selectedValue:n,selectValue:r,tabValues:o}){const u=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),i=e=>{const t=e.currentTarget,a=u.indexOf(t),s=o[a].value;s!==n&&(l(t),r(s))},c=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},e),children:o.map(({value:e,label:t,attributes:r})=>(0,y.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{u.push(e)},onKeyDown:c,onClick:i,...r,className:(0,a.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function k({lazy:e,children:t,selectedValue:n}){const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===n);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:s.map((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function j(e){const t=m(e);return(0,y.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(k,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(t))}}}]); \ No newline at end of file diff --git a/assets/js/021c8caa.5f295dcb.js b/assets/js/021c8caa.5f295dcb.js new file mode 100644 index 0000000000..eec14c1447 --- /dev/null +++ b/assets/js/021c8caa.5f295dcb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3924],{4356:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.10.0","label":"0.10.0","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.10.0","isLast":false,"docsSidebars":{"Basics":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.10.0/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.10.0/configuration","docId":"configuration","unlisted":false}],"Rules":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.10.0/rules/unused","docId":"rules/unused","unlisted":false},{"type":"link","label":"Redundant Dependency","href":"/ModuleCheck/docs/0.10.0/rules/redundant","docId":"rules/redundant","unlisted":false},{"type":"link","label":"Overshot Dependency","href":"/ModuleCheck/docs/0.10.0/rules/overshot","docId":"rules/overshot","unlisted":false},{"collapsed":false,"type":"category","label":"Kapt","items":[{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_processor","docId":"rules/kapt/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_plugin","docId":"rules/kapt/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.10.0/rules/kapt/custom_kapt_matchers","docId":"rules/kapt/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"collapsed":false,"type":"category","label":"Sorting","items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"collapsed":false,"type":"category","label":"Android","items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.10.0/rules/android/disable_resources","docId":"rules/android/disable_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.10.0/rules/android/disable_viewbinding","docId":"rules/android/disable_viewbinding","unlisted":false}],"collapsible":true}]},"docs":{"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Basics"},"mdx":{"id":"mdx","title":"Powered by MDX","description":"I can write Markdown alongside my JSX!"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","sidebar":"Basics"},"rules/android/disable_resources":{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"","sidebar":"Rules"},"rules/android/disable_viewbinding":{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"","sidebar":"Rules"},"rules/kapt/custom_kapt_matchers":{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"","sidebar":"Rules"},"rules/kapt/unused_kapt_plugin":{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"","sidebar":"Rules"},"rules/kapt/unused_kapt_processor":{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"","sidebar":"Rules"},"rules/overshot":{"id":"rules/overshot","title":"Overshot Dependency","description":"","sidebar":"Rules"},"rules/redundant":{"id":"rules/redundant","title":"Redundant Dependency","description":"","sidebar":"Rules"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Rules"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Rules"},"rules/unused":{"id":"rules/unused","title":"Unused Dependency","description":"","sidebar":"Rules"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/02359d8a.d06fea6b.js b/assets/js/02359d8a.d06fea6b.js new file mode 100644 index 0000000000..8a4f47853e --- /dev/null +++ b/assets/js/02359d8a.d06fea6b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5859],{18184:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","source":"@site/versioned_docs/version-0.12.5/rules/redundant_dependency.md","sourceDirName":"rules","slug":"/rules/redundant_dependency","permalink":"/ModuleCheck/docs/rules/redundant_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/redundant_dependency.md","tags":[],"version":"0.12.5","frontMatter":{"id":"redundant_dependency","slug":"/rules/redundant_dependency","title":"Redundant Dependency","sidebar_label":"Redundant Dependency"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/rules/inherited_dependency"},"next":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/rules/overshot_dependency"}}');var i=d(23420),s=d(65404);const r={id:"redundant_dependency",slug:"/rules/redundant_dependency",title:"Redundant Dependency",sidebar_label:"Redundant Dependency"},a=void 0,l={},c=[];function o(e){const n={a:"a",admonition:"admonition",code:"code",mermaid:"mermaid",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.admonition,{type:"caution",children:[(0,i.jsx)(n.p,{children:"This rule creates a brittle dependency graph, because some necessary dependencies are only provided\ntransitively by other dependencies. Any manual changes to dependencies can have unexpected\nconsequences downstream."}),(0,i.jsxs)(n.p,{children:["This rule is ",(0,i.jsx)(n.strong,{children:"not recommended"})," and disabled by default, but it's still available for those who\nwant to keep their build files as small as possible."]})]}),"\n",(0,i.jsxs)(n.p,{children:["Finds project dependencies which are declared as ",(0,i.jsx)(n.code,{children:"api"})," in other dependency projects, but also\ndeclared in the current project. These dependencies can be removed without actually breaking the\nbuild, since they're still provided by an upstream dependency through the ",(0,i.jsx)(n.code,{children:"api"})," configuration."]}),"\n",(0,i.jsx)(n.mermaid,{value:"flowchart LR\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n subgraph sg_redundant [A redundant graph]\n direction TB\n\n lib1_redundant(:lib-1):::depth0\n lib2_redundant(:lib-2):::depth1\n app_redundant(:app):::depth2\n\n app_redundant --\x3e |api| lib1_redundant\n app_redundant --\x3e |api| lib2_redundant\n\n lib2_redundant --\x3e |api| lib1_redundant\n end\n\n subgraph sg_minimalist [A graph with no redundancy]\n direction TB\n\n lib1_minimalist(:lib-1):::depth0\n lib2_minimalist(:lib-2):::depth1\n app_minimalist(:app):::depth2\n\n app_minimalist --\x3e |api| lib2_minimalist\n\n lib2_minimalist --\x3e |api| lib1_minimalist\n end\n\n style sg_redundant fill:#C66,stroke:#000,color:#FFF\n style sg_minimalist fill:#696,stroke:#000,color:#FFF\n\n sg_redundant --\x3e |./gradlew moduleCheck| sg_minimalist\n"}),"\n",(0,i.jsxs)(n.p,{children:["This is the opposite of the ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/rules/inherited_dependency",children:"inherited dependency"})," rule, which ensures a stable graph by explicitly\ndeclaring each dependency. ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/rules/inherited_dependency",children:"Inherited dependency"})," is enabled by default, and is the recommended\napproach. Both rules may not be enabled at the same time."]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>r,x:()=>a});var t=d(36672);const i={},s=t.createContext(i);function r(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/03459661.a5ccd375.js b/assets/js/03459661.a5ccd375.js new file mode 100644 index 0000000000..a6c6a2f9dd --- /dev/null +++ b/assets/js/03459661.a5ccd375.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9335],{38611:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","source":"@site/versioned_docs/version-0.12.5/rules/overshot_dependency.md","sourceDirName":"rules","slug":"/rules/overshot_dependency","permalink":"/ModuleCheck/docs/rules/overshot_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/overshot_dependency.md","tags":[],"version":"0.12.5","frontMatter":{"id":"overshot_dependency","slug":"/rules/overshot_dependency","title":"Overshot Dependency","sidebar_label":"Overshot Dependency"},"sidebar":"Docs","previous":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/rules/redundant_dependency"},"next":{"title":"Project Depth","permalink":"/ModuleCheck/docs/rules/project_depth"}}');var o=t(23420),d=t(65404);const r={id:"overshot_dependency",slug:"/rules/overshot_dependency",title:"Overshot Dependency",sidebar_label:"Overshot Dependency"},c=void 0,i={},l=[];function u(e){const n={code:"code",em:"em",p:"p",pre:"pre",strong:"strong",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Finds project dependencies which aren't used by the declaring configuration, but are used by a\ndependent, downstream configuration."}),"\n",(0,o.jsxs)(n.p,{children:["For instance, assume that ",(0,o.jsx)(n.code,{children:":moduleB"})," declares an ",(0,o.jsx)(n.code,{children:"implementation"})," dependency upon ",(0,o.jsx)(n.code,{children:":moduleA"}),"."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n implementation(project(":moduleA"))\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["If ",(0,o.jsx)(n.code,{children:":moduleB"})," doesn't actually use ",(0,o.jsx)(n.code,{children:":moduleA"})," in its ",(0,o.jsx)(n.code,{children:"main"})," source, but it ",(0,o.jsx)(n.em,{children:"does"})," use it in ",(0,o.jsx)(n.code,{children:"test"}),"\nsource, it's an ",(0,o.jsx)(n.strong,{children:"overshot dependency"}),". The declaration should be changed to\nuse ",(0,o.jsx)(n.code,{children:"testImplementation"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n testImplementation(project(":moduleA"))\n}\n'})})]})}function a(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(36672);const o={},d=s.createContext(o);function r(e){const n=s.useContext(d);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/044a6187.858142cb.js b/assets/js/044a6187.858142cb.js new file mode 100644 index 0000000000..0367afe526 --- /dev/null +++ b/assets/js/044a6187.858142cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2370],{28850:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","source":"@site/versioned_docs/version-0.12.4/ci_workflow.md","sourceDirName":".","slug":"/ci-workflow","permalink":"/ModuleCheck/docs/0.12.4/ci-workflow","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/ci_workflow.md","tags":[],"version":"0.12.4","frontMatter":{"id":"ci-workflow","sidebar_label":"CI Workflow","title":"CI Workflow"},"sidebar":"Docs","previous":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.4/suppressing-findings"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_dependency"}}');var s=t(23420),a=t(65404);const i={id:"ci-workflow",sidebar_label:"CI Workflow",title:"CI Workflow"},l=void 0,r={},c=[{value:"Using CI over git hooks",id:"using-ci-over-git-hooks",level:3},{value:"Example Flow chart",id:"example-flow-chart",level:3},{value:"Example GitHub Action",id:"example-github-action",level:3}];function h(e){const n={a:"a",code:"code",h3:"h3",mermaid:"mermaid",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and\nautomatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to\napply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run.\nThis is similar to a git pre-commit hook, except the work is delegated to a build server."}),"\n",(0,s.jsx)(n.h3,{id:"using-ci-over-git-hooks",children:"Using CI over git hooks"}),"\n",(0,s.jsx)(n.p,{children:"The traditional method for applying changes automatically is with a git hook, such as pre-commit or\npre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor\ndeveloper experience. With a CI task, the execution is done automatically and asynchronously, while\nthe developer is already moving on to something else."}),"\n",(0,s.jsx)(n.p,{children:"A git hook also technically doesn't guarantee that a task is executed before code is checked in to a\nmain branch, since there's no guarantee that a hook is enabled. With CI, the task will output a\nstatus check. If a branch protection rule is enabled, that status check can be required. This will\nthen guarantee that the task has run (successfully) before any code is checked in to the protected\nbranch."}),"\n",(0,s.jsx)(n.h3,{id:"example-flow-chart",children:"Example Flow chart"}),"\n",(0,s.jsxs)(n.p,{children:['This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The\ncancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an\n"optimistic" workflow, in that it assumes that the ',(0,s.jsx)(n.code,{children:"modulecheck"})," task will not generate changes\nwhich would trigger a restart."]}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n Start(CI Start):::good --\x3e mGraph\n Start --\x3e tGraph\n Start --\x3e cGraph\n\n subgraph mGraph [runner 1]\n direction TB\n ModuleCheck(./gradlew moduleCheckAuto):::code --\x3e ChangesModuleCheck\n ChangesModuleCheck{Graph changes?} --- yesM[yes]:::lineLabel --\x3e CommitModuleCheck(Commit changes and push):::stop\n ChangesModuleCheck --- noM[no]:::lineLabel --\x3e EndModuleCheck("#10003;"):::good\n end\n\n subgraph tGraph [runner 2]\n direction TB\n Tests(./gradlew test):::code --\x3e EndTests("#10003;"):::good\n end\n\n subgraph cGraph [runner 3]\n direction TB\n Cancel(Cancel previous CI run):::code\n end\n\n style tGraph fill:#EEE,stroke:#000\n style cGraph fill:#EEE,stroke:#000\n style mGraph fill:#EEE,stroke:#000\n\n classDef good fill:#0B0,stroke:#000\n classDef stop fill:#E33,stroke:#000\n\n classDef code fill:#AAA,stroke:#000\n\n style ChangesModuleCheck fill:#CD1,stroke:#000\n\n classDef lineLabel fill:#FFF,stroke:#FFF'}),"\n",(0,s.jsx)(n.h3,{id:"example-github-action",children:"Example GitHub Action"}),"\n",(0,s.jsxs)(n.p,{children:["Here's an Action which will run ModuleCheck, then commit any changes\nusing ",(0,s.jsx)(n.a,{href:"https://github.com/stefanzweifel/git-auto-commit-action",children:"Stefanzweifel's auto-commit"}),". This\nrequires a personal access token secret, or the commit step will fail."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:"title=.github/workflows.module-check.yml",children:"name: ModuleCheck\n\non:\n pull_request:\n\njobs:\n\n cancel-stale-jobs:\n name: Cancel stale jobs\n runs-on: ubuntu-latest\n\n steps:\n # cancel previous jobs\n - name: Cancel Previous Runs\n uses: styfle/cancel-workflow-action@0.9.0\n env:\n GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'\n\n ModuleCheck:\n name: ModuleCheck\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n # Must use a personal access token in order to commit changes\n token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '11'\n\n # performs tree-shaking on the Gradle dependency graph\n - name: modulecheck\n run: ./gradlew moduleCheckAuto --no-daemon\n\n # If ModuleCheck generated changes, commit and push those changes.\n # If there are no changes, then this is a no-op.\n - name: commit changes\n uses: stefanzweifel/git-auto-commit-action@v4\n with:\n commit_message: Apply ModuleCheck changes\n commit_options: '--no-verify --signoff'\n\n tests:\n name: Unit tests\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n token: ${{ secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n - name: all tests\n run: ./gradlew test --no-daemon\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var o=t(36672);const s={},a=o.createContext(s);function i(e){const n=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/048b8cd8.15bd0619.js b/assets/js/048b8cd8.15bd0619.js new file mode 100644 index 0000000000..ca62c6d8db --- /dev/null +++ b/assets/js/048b8cd8.15bd0619.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6150],{26704:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>i,contentTitle:()=>r,default:()=>a,frontMatter:()=>o,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.11.0/rules/unused.md","sourceDirName":"rules","slug":"/rules/unused","permalink":"/ModuleCheck/docs/0.11.0/rules/unused","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/unused.md","tags":[],"version":"0.11.0","frontMatter":{"id":"unused","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.11.0/configuration"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.11.0/rules/must_be_api"}}');var d=s(23420),u=s(65404);const o={id:"unused",title:"Unused Dependency",sidebar_label:"Unused Dependency"},r=void 0,i={},c=[];function l(e){const n={p:"p",...(0,u.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,d.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>r});var t=s(36672);const d={},u=t.createContext(d);function o(e){const n=t.useContext(u);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:o(e.components),t.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/051962a1.4cc7a7f7.js b/assets/js/051962a1.4cc7a7f7.js new file mode 100644 index 0000000000..b175190bad --- /dev/null +++ b/assets/js/051962a1.4cc7a7f7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4094],{33107:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.12.2/rules/compiler/unused_kapt_processor.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/compiler/unused_kapt_processor.md","tags":[],"version":"0.12.2","frontMatter":{"id":"unused_kapt_processor","slug":"/rules/unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/0.12.2/rules/use_anvil_factory_generation"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_plugin"}}');var t=s(23420),r=s(65404);const i={id:"unused_kapt_processor",slug:"/rules/unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,c={},d=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>a});var o=s(36672);const t={},r=o.createContext(t);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/05d123c0.0e3e034d.js b/assets/js/05d123c0.0e3e034d.js new file mode 100644 index 0000000000..c33e98bd81 --- /dev/null +++ b/assets/js/05d123c0.0e3e034d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7155],{21637:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>u,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","source":"@site/versioned_docs/version-0.11.3/suppressing-findings.mdx","sourceDirName":".","slug":"/suppressing-findings","permalink":"/ModuleCheck/docs/0.11.3/suppressing-findings","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/suppressing-findings.mdx","tags":[],"version":"0.11.3","frontMatter":{"id":"suppressing-findings","title":"Suppressing Findings","sidebar_label":"Suppressing Findings"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.11.3/configuration"},"next":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.11.3/ci-workflow"}}');var s=t(23420),a=t(65404),i=t(65780),o=t(58118);const u={id:"suppressing-findings",title:"Suppressing Findings",sidebar_label:"Suppressing Findings"},l=void 0,c={},d=[];function p(e){const n={code:"code",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool."}),"\n",(0,s.jsxs)(n.p,{children:["The name of the check to disable can be found in the ",(0,s.jsx)(n.code,{children:"name"})," column of console output:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"> Task :moduleCheck\nModuleCheck found 3 issues in 6.157 seconds\n\n:app\n dependency name build file\n :fat-and-leaky inheritedDependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :fat-and-leaky mustBeApi /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :unused-lib unusedDependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):\n\n"})}),"\n",(0,s.jsxs)(i.A,{children:[(0,s.jsx)(o.A,{value:"Kotlin",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",metastring:'title="build.gradle.kts"',children:'@Suppress("mustBeApi") // don\'t switch anything to an api config\ndependencies {\n\n @Suppress("unusedDependency") // don\'t comment out or delete this dependency\n implementation(project(":unused-lib"))\n\n @Suppress("inheritedDependency") // don\'t add dependencies which are inherited from this fat jar\n implementation(project(":fat-and-leaky"))\n}\n'})})}),(0,s.jsx)(o.A,{value:"Groovy",children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-groovy",metastring:'title="build.gradle"',children:'// don\'t switch anything to an api config\n//noinspection mustBeApi\ndependencies {\n\n // don\'t comment out or delete this dependency\n //noinspection unusedDependency\n implementation(project(":unused-lib"))\n\n // don\'t add dependencies which are inherited from this fat jar\n //noinspection inheritedDependency\n implementation(project(":fat-and-leaky"))\n}\n'})})})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},58118:(e,n,t)=>{t.d(n,{A:()=>i});t(36672);var r=t(13526);const s={tabItem:"tabItem_qogc"};var a=t(23420);function i({children:e,hidden:n,className:t}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,t),hidden:n,children:e})}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var r=t(36672);const s={},a=r.createContext(s);function i(e){const n=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(a.Provider,{value:n},e.children)}},65780:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(36672),s=t(13526),a=t(10452),i=t(85291),o=t(10914),u=t(41201),l=t(40622),c=t(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);return function(e){const n=(0,l.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[n,t])}function h({value:e,tabValues:n}){return n.some(n=>n.value===e)}function f({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,u.aZ)(s),(0,r.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})},[s,t])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[i,u]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!h({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:a})),[l,d]=f({queryString:t,groupId:s}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,c.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),g=(()=>{const e=l??m;return h({value:e,tabValues:a})?e:null})();(0,o.A)(()=>{g&&u(g)},[g]);return{selectedValue:i,selectValue:(0,r.useCallback)(e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);u(e),d(e),b(e)},[d,b,a]),tabValues:a}}var b=t(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=t(23420);function y({className:e,block:n,selectedValue:t,selectValue:r,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:u}=(0,a.a_)(),l=e=>{const n=e.currentTarget,s=o.indexOf(n),a=i[s].value;a!==t&&(u(n),r(a))},c=e=>{let n=null;switch(e.key){case"Enter":l(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:r})=>(0,v.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:l,...r,className:(0,s.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:t}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function j(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function w(e){const n=(0,b.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/0807349d.731308c1.js b/assets/js/0807349d.731308c1.js new file mode 100644 index 0000000000..d2148707c1 --- /dev/null +++ b/assets/js/0807349d.731308c1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4182],{62264:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","source":"@site/docs/rules/compiler/use_anvil_factory_generation.md","sourceDirName":"rules/compiler","slug":"/rules/use_anvil_factory_generation","permalink":"/ModuleCheck/docs/next/rules/use_anvil_factory_generation","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/compiler/use_anvil_factory_generation.md","tags":[],"version":"current","frontMatter":{"id":"use_anvil_factory_generation","slug":"/rules/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","sidebar_label":"Could Use Anvil Factory Generation"},"sidebar":"Docs","previous":{"title":"Project Depth","permalink":"/ModuleCheck/docs/next/rules/project_depth"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/next/rules/unused_kapt_processor"}}');var r=t(23420),i=t(65404);const s={id:"use_anvil_factory_generation",slug:"/rules/use_anvil_factory_generation",title:"Could Use Anvil Factory Generation",sidebar_label:"Could Use Anvil Factory Generation"},a=void 0,l={},c=[];function u(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or\nSubcomponents, and it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var o=t(36672);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/09b50579.52f3f328.js b/assets/js/09b50579.52f3f328.js new file mode 100644 index 0000000000..bde7efea90 --- /dev/null +++ b/assets/js/09b50579.52f3f328.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[228],{38331:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>t,metadata:()=>d,toc:()=>l});const d=JSON.parse('{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.11.2/rules/android/disable_viewbinding.md","sourceDirName":"rules/android","slug":"/rules/android/disable_viewbinding","permalink":"/ModuleCheck/docs/0.11.2/rules/android/disable_viewbinding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/android/disable_viewbinding.md","tags":[],"version":"0.11.2","frontMatter":{"id":"disable_viewbinding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.11.2/rules/android/disable_resources"}}');var s=i(23420),o=i(65404);const t={id:"disable_viewbinding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,a={},l=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},65404:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>r});var d=i(36672);const s={},o=d.createContext(s);function t(e){const n=d.useContext(o);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),d.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0b199b14.369b6927.js b/assets/js/0b199b14.369b6927.js new file mode 100644 index 0000000000..6a44f6919d --- /dev/null +++ b/assets/js/0b199b14.369b6927.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8321],{65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(36672);const o={},d=s.createContext(o);function r(e){const n=s.useContext(d);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(d.Provider,{value:n},e.children)}},91906:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","source":"@site/versioned_docs/version-0.12.4/rules/overshot_dependency.md","sourceDirName":"rules","slug":"/rules/overshot_dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/overshot_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/overshot_dependency.md","tags":[],"version":"0.12.4","frontMatter":{"id":"overshot_dependency","slug":"/rules/overshot_dependency","title":"Overshot Dependency","sidebar_label":"Overshot Dependency"},"sidebar":"Docs","previous":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/redundant_dependency"},"next":{"title":"Project Depth","permalink":"/ModuleCheck/docs/0.12.4/rules/project_depth"}}');var o=t(23420),d=t(65404);const r={id:"overshot_dependency",slug:"/rules/overshot_dependency",title:"Overshot Dependency",sidebar_label:"Overshot Dependency"},c=void 0,i={},l=[];function u(e){const n={code:"code",em:"em",p:"p",pre:"pre",strong:"strong",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Finds project dependencies which aren't used by the declaring configuration, but are used by a\ndependent, downstream configuration."}),"\n",(0,o.jsxs)(n.p,{children:["For instance, assume that ",(0,o.jsx)(n.code,{children:":moduleB"})," declares an ",(0,o.jsx)(n.code,{children:"implementation"})," dependency upon ",(0,o.jsx)(n.code,{children:":moduleA"}),"."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n implementation(project(":moduleA"))\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["If ",(0,o.jsx)(n.code,{children:":moduleB"})," doesn't actually use ",(0,o.jsx)(n.code,{children:":moduleA"})," in its ",(0,o.jsx)(n.code,{children:"main"})," source, but it ",(0,o.jsx)(n.em,{children:"does"})," use it in ",(0,o.jsx)(n.code,{children:"test"}),"\nsource, it's an ",(0,o.jsx)(n.strong,{children:"overshot dependency"}),". The declaration should be changed to\nuse ",(0,o.jsx)(n.code,{children:"testImplementation"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n testImplementation(project(":moduleA"))\n}\n'})})]})}function a(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/0f29fa4c.fc3b20a4.js b/assets/js/0f29fa4c.fc3b20a4.js new file mode 100644 index 0000000000..0063c65ec2 --- /dev/null +++ b/assets/js/0f29fa4c.fc3b20a4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[646],{65404:(e,n,d)=>{d.d(n,{R:()=>r,x:()=>a});var t=d(36672);const i={},s=t.createContext(i);function r(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(s.Provider,{value:n},e.children)}},93589:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","source":"@site/versioned_docs/version-0.12.2/rules/redundant_dependency.md","sourceDirName":"rules","slug":"/rules/redundant_dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/redundant_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/redundant_dependency.md","tags":[],"version":"0.12.2","frontMatter":{"id":"redundant_dependency","slug":"/rules/redundant_dependency","title":"Redundant Dependency","sidebar_label":"Redundant Dependency"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/inherited_dependency"},"next":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/overshot_dependency"}}');var i=d(23420),s=d(65404);const r={id:"redundant_dependency",slug:"/rules/redundant_dependency",title:"Redundant Dependency",sidebar_label:"Redundant Dependency"},a=void 0,l={},c=[];function o(e){const n={a:"a",admonition:"admonition",code:"code",mermaid:"mermaid",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.admonition,{type:"caution",children:[(0,i.jsx)(n.p,{children:"This rule creates a brittle dependency graph, because some necessary dependencies are only provided\ntransitively by other dependencies. Any manual changes to dependencies can have unexpected\nconsequences downstream."}),(0,i.jsxs)(n.p,{children:["This rule is ",(0,i.jsx)(n.strong,{children:"not recommended"})," and disabled by default, but it's still available for those who\nwant to keep their build files as small as possible."]})]}),"\n",(0,i.jsxs)(n.p,{children:["Finds project dependencies which are declared as ",(0,i.jsx)(n.code,{children:"api"})," in other dependency projects, but also\ndeclared in the current project. These dependencies can be removed without actually breaking the\nbuild, since they're still provided by an upstream dependency through the ",(0,i.jsx)(n.code,{children:"api"})," configuration."]}),"\n",(0,i.jsx)(n.mermaid,{value:"flowchart LR\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n subgraph sg_redundant [A redundant graph]\n direction TB\n\n lib1_redundant(:lib-1):::depth0\n lib2_redundant(:lib-2):::depth1\n app_redundant(:app):::depth2\n\n app_redundant --\x3e |api| lib1_redundant\n app_redundant --\x3e |api| lib2_redundant\n\n lib2_redundant --\x3e |api| lib1_redundant\n end\n\n subgraph sg_minimalist [A graph with no redundancy]\n direction TB\n\n lib1_minimalist(:lib-1):::depth0\n lib2_minimalist(:lib-2):::depth1\n app_minimalist(:app):::depth2\n\n app_minimalist --\x3e |api| lib2_minimalist\n\n lib2_minimalist --\x3e |api| lib1_minimalist\n end\n\n style sg_redundant fill:#C66,stroke:#000,color:#FFF\n style sg_minimalist fill:#696,stroke:#000,color:#FFF\n\n sg_redundant --\x3e |./gradlew moduleCheck| sg_minimalist\n"}),"\n",(0,i.jsxs)(n.p,{children:["This is the opposite of the ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.2/rules/inherited_dependency",children:"inherited dependency"})," rule, which ensures a stable graph by explicitly\ndeclaring each dependency. ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.2/rules/inherited_dependency",children:"Inherited dependency"})," is enabled by default, and is the recommended\napproach. Both rules may not be enabled at the same time."]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/assets/js/0fc8e5d5.38475e52.js b/assets/js/0fc8e5d5.38475e52.js new file mode 100644 index 0000000000..39fae73e23 --- /dev/null +++ b/assets/js/0fc8e5d5.38475e52.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4931],{65404:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>c});var n=s(36672);const r={},o=n.createContext(r);function i(e){const t=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:t},e.children)}},84835:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.12.5/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sort_dependencies","permalink":"/ModuleCheck/docs/rules/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/sorting/sort_dependencies.md","tags":[],"version":"0.12.5","frontMatter":{"id":"sort_dependencies","slug":"/rules/sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/rules/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/rules/sort_plugins"}}');var r=s(23420),o=s(65404);const i={id:"sort_dependencies",slug:"/rules/sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l()}}}]); \ No newline at end of file diff --git a/assets/js/1036.33ed1cdb.js b/assets/js/1036.33ed1cdb.js new file mode 100644 index 0000000000..e420694484 --- /dev/null +++ b/assets/js/1036.33ed1cdb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1036],{19722:(e,t,n)=>{n.d(t,{A:()=>a});n(36672);var i=n(13526),o=n(50120),s=n(45544),r=n(23420);function a({className:e}){return(0,r.jsx)("main",{className:(0,i.A)("container margin-vert--xl",e),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},81036:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});n(36672);var i=n(50120),o=n(10352),s=n(32592),r=n(19722),a=n(23420);function h(){const e=(0,i.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/1050d62e.d5223cec.js b/assets/js/1050d62e.d5223cec.js new file mode 100644 index 0000000000..c3731b13f1 --- /dev/null +++ b/assets/js/1050d62e.d5223cec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[998],{58118:(e,n,r)=>{r.d(n,{A:()=>l});r(36672);var t=r(13526);const a={tabItem:"tabItem_qogc"};var s=r(23420);function l({children:e,hidden:n,className:r}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,t.A)(a.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>o});var t=r(36672);const a={},s=t.createContext(a);function l(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),t.createElement(s.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>y});var t=r(36672),a=r(13526),s=r(10452),l=r(85291),o=r(10914),c=r(41201),i=r(40622),u=r(42925);function d(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:t}})=>({value:e,label:n,attributes:r,default:t}))}(r);return function(e){const n=(0,i.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,l.W6)(),a=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,c.aZ)(a),(0,t.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})},[a,r])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:a}=e,s=h(e),[l,c]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s})),[i,d]=g({queryString:r,groupId:a}),[m,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,a]=(0,u.Dv)(n);return[r,(0,t.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),b=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,o.A)(()=>{b&&c(b)},[b]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),f(e)},[d,f,s]),tabValues:s}}var f=r(74682);const b={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:t,tabValues:l}){const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),i=e=>{const n=e.currentTarget,a=o.indexOf(n),s=l[a].value;s!==r&&(c(n),t(s))},u=e=>{let n=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:t})=>(0,v.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:u,onClick:i,...t,className:(0,a.A)("tabs__item",b.tabItem,t?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const s=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===r);return e?(0,t.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:s.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,v.jsx)(x,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(n))}},67373:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>c,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"Dependencies","source":"@site/versioned_docs/version-0.12.2/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.12.2/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/quickstart.mdx","tags":[],"version":"0.12.2","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.2/configuration"}}');var a=r(23420),s=r(65404),l=r(65780),o=r(58118);const c={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},i=void 0,u={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,a.jsxs)(l.A,{children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven("https://oss.sonatype.org/content/repositories/snapshots/")\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.12.2"\n}\n'})})]}),(0,a.jsxs)(o.A,{value:"Groovy",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:'// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven {\n url "https://oss.sonatype.org/content/repositories/snapshots"\n }\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.12.2'\n}\n"})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,a.jsx)(n.p,{children:"all checks"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,a.jsx)(n.p,{children:"all checks with auto-correct"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"check sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,a.jsx)(n.p,{children:"apply sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"report depths of each module"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckDepths\n"})}),"\n",(0,a.jsx)(n.p,{children:"generate (module-only) dependency graphs"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckGraphs\n"})}),"\n",(0,a.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,a.jsxs)(n.p,{children:["See ",(0,a.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.2/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,a.jsxs)(l.A,{children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'configure {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,a.jsx)(n.p,{children:"--or--"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,a.jsx)(o.A,{value:"Groovy",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/107eb4cc.38fc2a4d.js b/assets/js/107eb4cc.38fc2a4d.js new file mode 100644 index 0000000000..b46a26ccf8 --- /dev/null +++ b/assets/js/107eb4cc.38fc2a4d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[832],{55325:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>c,frontMatter:()=>d,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","source":"@site/versioned_docs/version-0.12.3/rules/android/unused_kotlin_android_extensions.md","sourceDirName":"rules/android","slug":"/rules/unused_kotlin_android_extensions","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_kotlin_android_extensions","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/android/unused_kotlin_android_extensions.md","tags":[],"version":"0.12.3","frontMatter":{"id":"unused_kotlin_android_extensions","slug":"/rules/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","sidebar_label":"Unused Kotlin Android Extensions"},"sidebar":"Docs","previous":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.3/rules/disable_view_binding"}}');var t=s(23420),i=s(65404);const d={id:"unused_kotlin_android_extensions",slug:"/rules/unused_kotlin_android_extensions",title:"Unused Kotlin Android Extensions",sidebar_label:"Unused Kotlin Android Extensions"},r=void 0,u={},l=[];function a(e){const n={p:"p",...(0,i.R)(),...e.components};return(0,t.jsx)(n.p,{children:"Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any\nsynthetic imports or deprecated @Parcelize annotation"})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var o=s(36672);const t={},i=o.createContext(t);function d(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/109fab02.1304204c.js b/assets/js/109fab02.1304204c.js new file mode 100644 index 0000000000..af69d53d03 --- /dev/null +++ b/assets/js/109fab02.1304204c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5142],{65404:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>a});var o=s(36672);const t={},i=o.createContext(t);function r(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(i.Provider,{value:n},e.children)}},91647:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.11.0/rules/kapt/unused_kapt_processor.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/kapt/unused_kapt_processor.md","tags":[],"version":"0.11.0","frontMatter":{"id":"unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.11.0/rules/compiler/could_use_anvil_factory"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_plugin"}}');var t=s(23420),i=s(65404);const r={id:"unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,d={},c=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/assets/js/10b686c7.ac7f610a.js b/assets/js/10b686c7.ac7f610a.js new file mode 100644 index 0000000000..b906fb2195 --- /dev/null +++ b/assets/js/10b686c7.ac7f610a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6720],{65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(36672);const d={},o=s.createContext(d);function r(e){const n=s.useContext(o);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:r(e.components),s.createElement(o.Provider,{value:n},e.children)}},73236:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","source":"@site/versioned_docs/version-0.12.0/rules/overshot_dependency.md","sourceDirName":"rules","slug":"/rules/overshot_dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/overshot_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/overshot_dependency.md","tags":[],"version":"0.12.0","frontMatter":{"id":"overshot_dependency","title":"Overshot Dependency","sidebar_label":"Overshot Dependency"},"sidebar":"Docs","previous":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/redundant_dependency"},"next":{"title":"Depths","permalink":"/ModuleCheck/docs/0.12.0/rules/depths"}}');var d=t(23420),o=t(65404);const r={id:"overshot_dependency",title:"Overshot Dependency",sidebar_label:"Overshot Dependency"},c=void 0,i={},l=[];function a(e){const n={code:"code",em:"em",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.p,{children:"Finds project dependencies which aren't used by the declaring configuration, but are used by a\ndependent, downstream configuration."}),"\n",(0,d.jsxs)(n.p,{children:["For instance, assume that ",(0,d.jsx)(n.code,{children:":moduleB"})," declares an ",(0,d.jsx)(n.code,{children:"implementation"})," dependency upon ",(0,d.jsx)(n.code,{children:":moduleA"}),"."]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n implementation(project(":moduleA"))\n}\n'})}),"\n",(0,d.jsxs)(n.p,{children:["If ",(0,d.jsx)(n.code,{children:":moduleB"})," doesn't actually use ",(0,d.jsx)(n.code,{children:":moduleA"})," in its ",(0,d.jsx)(n.code,{children:"main"})," source, but it ",(0,d.jsx)(n.em,{children:"does"})," use it in ",(0,d.jsx)(n.code,{children:"test"}),"\nsource, it's an ",(0,d.jsx)(n.strong,{children:"overshot dependency"}),". The declaration should be changed to\nuse ",(0,d.jsx)(n.code,{children:"testImplementation"}),":"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n testImplementation(project(":moduleA"))\n}\n'})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/12b0e932.46e840ec.js b/assets/js/12b0e932.46e840ec.js new file mode 100644 index 0000000000..4f1f23c916 --- /dev/null +++ b/assets/js/12b0e932.46e840ec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8561],{27594:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.11.2/rules/android/disable_resources.md","sourceDirName":"rules/android","slug":"/rules/android/disable_resources","permalink":"/ModuleCheck/docs/0.11.2/rules/android/disable_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/android/disable_resources.md","tags":[],"version":"0.11.2","frontMatter":{"id":"disable_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.11.2/rules/android/disable_viewbinding"}}');var o=r(23420),d=r(65404);const i={id:"disable_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,c={},a=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1341.9dd85c1f.js b/assets/js/1341.9dd85c1f.js new file mode 100644 index 0000000000..6f8e3e4506 --- /dev/null +++ b/assets/js/1341.9dd85c1f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1341],{1341:(e,c,a)=>{a.r(c),a.d(c,{DocSearchModal:()=>h.a1});var h=a(36337)}}]); \ No newline at end of file diff --git a/assets/js/1483dc01.4a6793d2.js b/assets/js/1483dc01.4a6793d2.js new file mode 100644 index 0000000000..30d9223bbb --- /dev/null +++ b/assets/js/1483dc01.4a6793d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1949],{58572:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>l,frontMatter:()=>o,metadata:()=>d,toc:()=>a});const d=JSON.parse('{"id":"rules/redundant","title":"Redundant Dependency","description":"","source":"@site/versioned_docs/version-0.10.0/rules/redundant.md","sourceDirName":"rules","slug":"/rules/redundant","permalink":"/ModuleCheck/docs/0.10.0/rules/redundant","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/redundant.md","tags":[],"version":"0.10.0","frontMatter":{"id":"redundant","title":"Redundant Dependency","sidebar_label":"Redundant Dependency"},"sidebar":"Rules","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.10.0/rules/unused"},"next":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.10.0/rules/overshot"}}');var r=t(23420),s=t(65404);const o={id:"redundant",title:"Redundant Dependency",sidebar_label:"Redundant Dependency"},u=void 0,c={},a=[];function i(e){return(0,r.jsx)(r.Fragment,{})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(i,{...e})}):i()}},65404:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>u});var d=t(36672);const r={},s=d.createContext(r);function o(e){const n=d.useContext(s);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function u(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),d.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/14e1fcc3.79e08407.js b/assets/js/14e1fcc3.79e08407.js new file mode 100644 index 0000000000..ac853bb071 --- /dev/null +++ b/assets/js/14e1fcc3.79e08407.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8305],{18164:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.10.0/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_dependencies","permalink":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/sorting/sort_dependencies.md","tags":[],"version":"0.10.0","frontMatter":{"id":"sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Rules","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.10.0/rules/kapt/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_plugins"}}');var o=n(23420),r=n(65404);const i={id:"sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l()}},65404:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(36672);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/150ef1cb.34b3cc1d.js b/assets/js/150ef1cb.34b3cc1d.js new file mode 100644 index 0000000000..96c3d3be4b --- /dev/null +++ b/assets/js/150ef1cb.34b3cc1d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9384],{65404:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>a});var t=o(36672);const r={},i=t.createContext(r);function s(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(i.Provider,{value:n},e.children)}},84007:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.12.1/rules/compiler/use_anvil_factory_generation.md","sourceDirName":"rules/compiler","slug":"/rules/use_anvil_factory_generation","permalink":"/ModuleCheck/docs/0.12.1/rules/use_anvil_factory_generation","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/compiler/use_anvil_factory_generation.md","tags":[],"version":"0.12.1","frontMatter":{"id":"use_anvil_factory_generation","slug":"/rules/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","sidebar_label":"Could Use Anvil Factory Generation"},"sidebar":"Docs","previous":{"title":"Project Depth","permalink":"/ModuleCheck/docs/0.12.1/rules/project_depth"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_processor"}}');var r=o(23420),i=o(65404);const s={id:"use_anvil_factory_generation",slug:"/rules/use_anvil_factory_generation",title:"Could Use Anvil Factory Generation",sidebar_label:"Could Use Anvil Factory Generation"},a=void 0,l={},c=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or\nSubcomponents, and it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/15a9c06b.fbed8bd4.js b/assets/js/15a9c06b.fbed8bd4.js new file mode 100644 index 0000000000..b84566907f --- /dev/null +++ b/assets/js/15a9c06b.fbed8bd4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2610],{65404:(e,n,d)=>{d.d(n,{R:()=>r,x:()=>a});var t=d(36672);const i={},s=t.createContext(i);function r(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(s.Provider,{value:n},e.children)}},96911:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","source":"@site/versioned_docs/version-0.12.1/rules/redundant_dependency.md","sourceDirName":"rules","slug":"/rules/redundant_dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/redundant_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/redundant_dependency.md","tags":[],"version":"0.12.1","frontMatter":{"id":"redundant_dependency","slug":"/rules/redundant_dependency","title":"Redundant Dependency","sidebar_label":"Redundant Dependency"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/inherited_dependency"},"next":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/overshot_dependency"}}');var i=d(23420),s=d(65404);const r={id:"redundant_dependency",slug:"/rules/redundant_dependency",title:"Redundant Dependency",sidebar_label:"Redundant Dependency"},a=void 0,l={},c=[];function o(e){const n={a:"a",admonition:"admonition",code:"code",mermaid:"mermaid",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.admonition,{type:"caution",children:[(0,i.jsx)(n.p,{children:"This rule creates a brittle dependency graph, because some necessary dependencies are only provided\ntransitively by other dependencies. Any manual changes to dependencies can have unexpected\nconsequences downstream."}),(0,i.jsxs)(n.p,{children:["This rule is ",(0,i.jsx)(n.strong,{children:"not recommended"})," and disabled by default, but it's still available for those who\nwant to keep their build files as small as possible."]})]}),"\n",(0,i.jsxs)(n.p,{children:["Finds project dependencies which are declared as ",(0,i.jsx)(n.code,{children:"api"})," in other dependency projects, but also\ndeclared in the current project. These dependencies can be removed without actually breaking the\nbuild, since they're still provided by an upstream dependency through the ",(0,i.jsx)(n.code,{children:"api"})," configuration."]}),"\n",(0,i.jsx)(n.mermaid,{value:"flowchart LR\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n subgraph sg_redundant [A redundant graph]\n direction TB\n\n lib1_redundant(:lib-1):::depth0\n lib2_redundant(:lib-2):::depth1\n app_redundant(:app):::depth2\n\n app_redundant --\x3e |api| lib1_redundant\n app_redundant --\x3e |api| lib2_redundant\n\n lib2_redundant --\x3e |api| lib1_redundant\n end\n\n subgraph sg_minimalist [A graph with no redundancy]\n direction TB\n\n lib1_minimalist(:lib-1):::depth0\n lib2_minimalist(:lib-2):::depth1\n app_minimalist(:app):::depth2\n\n app_minimalist --\x3e |api| lib2_minimalist\n\n lib2_minimalist --\x3e |api| lib1_minimalist\n end\n\n style sg_redundant fill:#C66,stroke:#000,color:#FFF\n style sg_minimalist fill:#696,stroke:#000,color:#FFF\n\n sg_redundant --\x3e |./gradlew moduleCheck| sg_minimalist\n"}),"\n",(0,i.jsxs)(n.p,{children:["This is the opposite of the ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.1/rules/inherited_dependency",children:"inherited dependency"})," rule, which ensures a stable graph by explicitly\ndeclaring each dependency. ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.1/rules/inherited_dependency",children:"Inherited dependency"})," is enabled by default, and is the recommended\napproach. Both rules may not be enabled at the same time."]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/assets/js/1608.b7fc7fa7.js b/assets/js/1608.b7fc7fa7.js new file mode 100644 index 0000000000..bb4cdfd710 --- /dev/null +++ b/assets/js/1608.b7fc7fa7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1608],{71608:(e,c,k)=>{k.r(c)}}]); \ No newline at end of file diff --git a/assets/js/171ac7cc.3780a727.js b/assets/js/171ac7cc.3780a727.js new file mode 100644 index 0000000000..b6e7a2d94b --- /dev/null +++ b/assets/js/171ac7cc.3780a727.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1273],{34673:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.11.2/rules/compiler/could_use_anvil_factory.md","sourceDirName":"rules/compiler","slug":"/rules/compiler/could_use_anvil_factory","permalink":"/ModuleCheck/docs/0.11.2/rules/compiler/could_use_anvil_factory","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/compiler/could_use_anvil_factory.md","tags":[],"version":"0.11.2","frontMatter":{"id":"could_use_anvil_factory","title":"Could Use Anvil Factory","sidebar_label":"Could Use Anvil Factory"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.11.2/rules/inherited_dependency"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_processor"}}');var r=o(23420),s=o(65404);const i={id:"could_use_anvil_factory",title:"Could Use Anvil Factory",sidebar_label:"Could Use Anvil Factory"},c=void 0,l={},a=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or Subcomponents,\nand it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},65404:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>c});var t=o(36672);const r={},s=t.createContext(r);function i(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/171f1b26.5b2c51de.js b/assets/js/171f1b26.5b2c51de.js new file mode 100644 index 0000000000..0958f31388 --- /dev/null +++ b/assets/js/171f1b26.5b2c51de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6679],{28677:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.12.0/rules/kapt/custom_kapt_matchers.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.12.0/rules/kapt/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/kapt/custom_kapt_matchers.md","tags":[],"version":"0.12.0","frontMatter":{"id":"custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_dependencies"}}');var o=s(23420),r=s(65404);const a={id:"custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},c=void 0,i={},u=[];function l(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,o.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>c});var n=s(36672);const o={},r=n.createContext(o);function a(e){const t=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1760.3a07b760.js b/assets/js/1760.3a07b760.js new file mode 100644 index 0000000000..7fe617926e --- /dev/null +++ b/assets/js/1760.3a07b760.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1760],{21760:(t,e,a)=>{a.d(e,{diagram:()=>m});var r=a(22775),o=a(47794),n=a(95379),l=a(27293),i=a(25381),s={packet:[]},c=structuredClone(s),d=l.UI.packet,b=(0,l.K2)(()=>{const t=(0,o.$t)({...d,...(0,l.zj)().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),k=(0,l.K2)(()=>c.packet,"getPacket"),p={pushWord:(0,l.K2)(t=>{t.length>0&&c.packet.push(t)},"pushWord"),getPacket:k,getConfig:b,clear:(0,l.K2)(()=>{(0,l.IU)(),c=structuredClone(s)},"clear"),setAccTitle:l.SV,getAccTitle:l.iN,setDiagramTitle:l.ke,getDiagramTitle:l.ab,getAccDescription:l.m7,setAccDescription:l.EI},h=(0,l.K2)(t=>{(0,r.S)(t,p);let e=-1,a=[],o=1;const{bitsPerRow:n}=p.getConfig();for(let{start:r,end:i,bits:s,label:c}of t.blocks){if(void 0!==r&&void 0!==i&&i{if(void 0===t.start)throw new Error("start should have been set during first phase");if(void 0===t.end)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*a)return[t,void 0];const r=e*a-1,o=e*a;return[{start:t.start,end:r,label:t.label,bits:r-t.start},{start:o,end:t.end,label:t.label,bits:t.end-o}]},"getNextFittingBlock"),f={parse:(0,l.K2)(async t=>{const e=await(0,i.qg)("packet",t);l.Rm.debug(e),h(e)},"parse")},u=(0,l.K2)((t,e,a,r)=>{const o=r.db,i=o.getConfig(),{rowHeight:s,paddingY:c,bitWidth:d,bitsPerRow:b}=i,k=o.getPacket(),p=o.getDiagramTitle(),h=s+c,g=h*(k.length+1)-(p?0:s),f=d*b+2,u=(0,n.D)(e);u.attr("viewbox",`0 0 ${f} ${g}`),(0,l.a$)(u,g,f,i.useMaxWidth);for(const[n,l]of k.entries())w(u,l,n,i);u.append("text").text(p).attr("x",f/2).attr("y",g-h/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),w=(0,l.K2)((t,e,a,{rowHeight:r,paddingX:o,paddingY:n,bitWidth:l,bitsPerRow:i,showBits:s})=>{const c=t.append("g"),d=a*(r+n)+n;for(const b of e){const t=b.start%i*l+1,e=(b.end-b.start+1)*l-o;if(c.append("rect").attr("x",t).attr("y",d).attr("width",e).attr("height",r).attr("class","packetBlock"),c.append("text").attr("x",t+e/2).attr("y",d+r/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(b.label),!s)continue;const a=b.end===b.start,n=d-2;c.append("text").attr("x",t+(a?e/2:0)).attr("y",n).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",a?"middle":"start").text(b.start),a||c.append("text").attr("x",t+e).attr("y",n).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(b.end)}},"drawWord"),$={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},m={parser:f,db:p,renderer:{draw:u},styles:(0,l.K2)(({packet:t}={})=>{const e=(0,o.$t)($,t);return`\n\t.packetByte {\n\t\tfont-size: ${e.byteFontSize};\n\t}\n\t.packetByte.start {\n\t\tfill: ${e.startByteColor};\n\t}\n\t.packetByte.end {\n\t\tfill: ${e.endByteColor};\n\t}\n\t.packetLabel {\n\t\tfill: ${e.labelColor};\n\t\tfont-size: ${e.labelFontSize};\n\t}\n\t.packetTitle {\n\t\tfill: ${e.titleColor};\n\t\tfont-size: ${e.titleFontSize};\n\t}\n\t.packetBlock {\n\t\tstroke: ${e.blockStrokeColor};\n\t\tstroke-width: ${e.blockStrokeWidth};\n\t\tfill: ${e.blockFillColor};\n\t}\n\t`},"styles")}},22775:(t,e,a)=>{function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(27293).K2)(r,"populateCommonDb")}}]); \ No newline at end of file diff --git a/assets/js/17896441.0a191866.js b/assets/js/17896441.0a191866.js new file mode 100644 index 0000000000..35b4483895 --- /dev/null +++ b/assets/js/17896441.0a191866.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8401],{93932:(e,t,s)=>{s.r(t),s.d(t,{default:()=>ce});var n=s(36672),a=s(10352),i=s(36496),o=s(23420);const l=n.createContext(null);function r({children:e,content:t}){const s=function(e){return(0,n.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}),[e])}(t);return(0,o.jsx)(l.Provider,{value:s,children:e})}function c(){const e=(0,n.useContext)(l);if(null===e)throw new i.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:t,assets:s}=c();return(0,o.jsx)(a.be,{title:e.title,description:e.description,keywords:t.keywords,image:s.image??t.image})}var u=s(13526),m=s(97297),h=s(50120),b=s(28827);function x(e){const{permalink:t,title:s,subLabel:n,isNext:a}=e;return(0,o.jsxs)(b.A,{className:(0,u.A)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[n&&(0,o.jsx)("div",{className:"pagination-nav__sublabel",children:n}),(0,o.jsx)("div",{className:"pagination-nav__label",children:s})]})}function v(e){const{className:t,previous:s,next:n}=e;return(0,o.jsxs)("nav",{className:(0,u.A)(t,"pagination-nav"),"aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[s&&(0,o.jsx)(x,{...s,subLabel:(0,o.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,o.jsx)(x,{...n,subLabel:(0,o.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function p(){const{metadata:e}=c();return(0,o.jsx)(v,{className:"docusaurus-mt-lg",previous:e.previous,next:e.next})}var g=s(68035),j=s(75755),f=s(40987),A=s(62721),_=s(92688);const N={unreleased:function({siteTitle:e,versionMetadata:t}){return(0,o.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:e,versionLabel:(0,o.jsx)("b",{children:t.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function({siteTitle:e,versionMetadata:t}){return(0,o.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:e,versionLabel:(0,o.jsx)("b",{children:t.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function C(e){const t=N[e.versionMetadata.banner];return(0,o.jsx)(t,{...e})}function L({versionLabel:e,to:t,onClick:s}){return(0,o.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:e,latestVersionLink:(0,o.jsx)("b",{children:(0,o.jsx)(b.A,{to:t,onClick:s,children:(0,o.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function T({className:e,versionMetadata:t}){const{siteConfig:{title:s}}=(0,g.A)(),{pluginId:n}=(0,j.vT)({failfast:!0}),{savePreferredVersionName:a}=(0,A.g1)(n),{latestDocSuggestion:i,latestVersionSuggestion:l}=(0,j.HW)(n),r=i??(c=l).docs.find(e=>e.id===c.mainDocId);var c;return(0,o.jsxs)("div",{className:(0,u.A)(e,f.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,o.jsx)("div",{children:(0,o.jsx)(C,{siteTitle:s,versionMetadata:t})}),(0,o.jsx)("div",{className:"margin-top--md",children:(0,o.jsx)(L,{versionLabel:l.label,to:r.path,onClick:()=>a(l.name)})})]})}function k({className:e}){const t=(0,_.r)();return t.banner?(0,o.jsx)(T,{className:e,versionMetadata:t}):null}function M({className:e}){const t=(0,_.r)();return t.badge?(0,o.jsx)("span",{className:(0,u.A)(e,f.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,o.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:t.label},children:"Version: {versionLabel}"})}):null}const w={tag:"tag_pAIo",tagRegular:"tagRegular_kD8B",tagWithCount:"tagWithCount_KrMf"};function y({permalink:e,label:t,count:s,description:n}){return(0,o.jsxs)(b.A,{rel:"tag",href:e,title:n,className:(0,u.A)(w.tag,s?w.tagWithCount:w.tagRegular),children:[t,s&&(0,o.jsx)("span",{children:s})]})}const B={tags:"tags_wWOc",tag:"tag_SGXR"};function I({tags:e}){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("b",{children:(0,o.jsx)(h.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,o.jsx)("ul",{className:(0,u.A)(B.tags,"padding--none","margin-left--sm"),children:e.map(e=>(0,o.jsx)("li",{className:B.tag,children:(0,o.jsx)(y,{...e})},e.permalink))})]})}var H=s(10748);function V(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:s,lastUpdatedBy:n,tags:a}=e,i=a.length>0,l=!!(t||s||n);return i||l?(0,o.jsxs)("footer",{className:(0,u.A)(f.G.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,o.jsx)("div",{className:(0,u.A)("row margin-top--sm",f.G.docs.docFooterTagsRow),children:(0,o.jsx)("div",{className:"col",children:(0,o.jsx)(I,{tags:a})})}),l&&(0,o.jsx)(H.A,{className:(0,u.A)("margin-top--sm",f.G.docs.docFooterEditMetaRow),editUrl:t,lastUpdatedAt:s,lastUpdatedBy:n})]}):null}var R=s(42018),G=s(93622);const F={tocCollapsibleButton:"tocCollapsibleButton_MtTV",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_VQRl"};function E({collapsed:e,...t}){return(0,o.jsx)("button",{type:"button",...t,className:(0,u.A)("clean-btn",F.tocCollapsibleButton,!e&&F.tocCollapsibleButtonExpanded,t.className),children:(0,o.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const D={tocCollapsible:"tocCollapsible_Rv3I",tocCollapsibleContent:"tocCollapsibleContent_XFsF",tocCollapsibleExpanded:"tocCollapsibleExpanded_TFgA"};function U({toc:e,className:t,minHeadingLevel:s,maxHeadingLevel:n}){const{collapsed:a,toggleCollapsed:i}=(0,R.u)({initialState:!0});return(0,o.jsxs)("div",{className:(0,u.A)(D.tocCollapsible,!a&&D.tocCollapsibleExpanded,t),children:[(0,o.jsx)(E,{collapsed:a,onClick:i}),(0,o.jsx)(R.N,{lazy:!0,className:D.tocCollapsibleContent,collapsed:a,children:(0,o.jsx)(G.A,{toc:e,minHeadingLevel:s,maxHeadingLevel:n})})]})}const O={tocMobile:"tocMobile_HJNs"};function S(){const{toc:e,frontMatter:t}=c();return(0,o.jsx)(U,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.A)(f.G.docs.docTocMobile,O.tocMobile)})}var W=s(95992);function P(){const{toc:e,frontMatter:t}=c();return(0,o.jsx)(W.A,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:f.G.docs.docTocDesktop})}var X=s(45544),$=s(2444);function z({children:e}){const t=function(){const{metadata:e,frontMatter:t,contentTitle:s}=c();return t.hide_title||void 0!==s?null:e.title}();return(0,o.jsxs)("div",{className:(0,u.A)(f.G.docs.docMarkdown,"markdown"),children:[t&&(0,o.jsx)("header",{children:(0,o.jsx)(X.A,{as:"h1",children:t})}),(0,o.jsx)($.A,{children:e})]})}var J=s(36149),K=s(29837),Q=s(55928);function Y(e){return(0,o.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,o.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const q={breadcrumbHomeIcon:"breadcrumbHomeIcon_YiAp"};function Z(){const e=(0,Q.Ay)("/");return(0,o.jsx)("li",{className:"breadcrumbs__item",children:(0,o.jsx)(b.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,o.jsx)(Y,{className:q.breadcrumbHomeIcon})})})}var ee=s(19521);function te(e){const t=function({breadcrumbs:e}){const{siteConfig:t}=(0,g.A)();return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.filter(e=>e.href).map((e,s)=>({"@type":"ListItem",position:s+1,name:e.label,item:`${t.url}${e.href}`}))}}({breadcrumbs:e.breadcrumbs});return(0,o.jsx)(ee.A,{children:(0,o.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}const se={breadcrumbsContainer:"breadcrumbsContainer_yRvd"};function ne({children:e,href:t,isLast:s}){const n="breadcrumbs__link";return s?(0,o.jsx)("span",{className:n,children:e}):t?(0,o.jsx)(b.A,{className:n,href:t,children:(0,o.jsx)("span",{children:e})}):(0,o.jsx)("span",{className:n,children:e})}function ae({children:e,active:t}){return(0,o.jsx)("li",{className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":t}),children:e})}function ie(){const e=(0,J.OF)(),t=(0,K.Dt)();return e?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(te,{breadcrumbs:e}),(0,o.jsx)("nav",{className:(0,u.A)(f.G.docs.docBreadcrumbs,se.breadcrumbsContainer),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,o.jsxs)("ul",{className:"breadcrumbs",children:[t&&(0,o.jsx)(Z,{}),e.map((t,s)=>{const n=s===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,o.jsx)(ae,{active:n,children:(0,o.jsx)(ne,{href:a,isLast:n,children:t.label})},s)})]})})]}):null}var oe=s(36711);const le={docItemContainer:"docItemContainer_MHtG",docItemCol:"docItemCol_oWXt"};function re({children:e}){const t=function(){const{frontMatter:e,toc:t}=c(),s=(0,m.l)(),n=e.hide_table_of_contents,a=!n&&t.length>0;return{hidden:n,mobile:a?(0,o.jsx)(S,{}):void 0,desktop:!a||"desktop"!==s&&"ssr"!==s?void 0:(0,o.jsx)(P,{})}}(),{metadata:s}=c();return(0,o.jsxs)("div",{className:"row",children:[(0,o.jsxs)("div",{className:(0,u.A)("col",!t.hidden&&le.docItemCol),children:[(0,o.jsx)(oe.A,{metadata:s}),(0,o.jsx)(k,{}),(0,o.jsxs)("div",{className:le.docItemContainer,children:[(0,o.jsxs)("article",{children:[(0,o.jsx)(ie,{}),(0,o.jsx)(M,{}),t.mobile,(0,o.jsx)(z,{children:e}),(0,o.jsx)(V,{})]}),(0,o.jsx)(p,{})]})]}),t.desktop&&(0,o.jsx)("div",{className:"col col--3",children:t.desktop})]})}function ce(e){const t=`docs-doc-id-${e.content.metadata.id}`,s=e.content;return(0,o.jsx)(r,{content:e.content,children:(0,o.jsxs)(a.e3,{className:t,children:[(0,o.jsx)(d,{}),(0,o.jsx)(re,{children:(0,o.jsx)(s,{})})]})})}}}]); \ No newline at end of file diff --git a/assets/js/1874.e4531d36.js b/assets/js/1874.e4531d36.js new file mode 100644 index 0000000000..f1ce012aaf --- /dev/null +++ b/assets/js/1874.e4531d36.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1874],{6064:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(22663);const o=function(t,n){return(0,e.A)(n,function(n){return t[n]})};var c=r(22859);const u=function(t){return null==t?[]:o(t,(0,c.A)(t))}},9532:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(37617);const o=function(t,n){return!!(null==t?0:t.length)&&(0,e.A)(t,n,0)>-1}},9584:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){return t.has(n)}},13027:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(80565),o=r(97427);const c=function(t){return"symbol"==typeof t||(0,o.A)(t)&&"[object Symbol]"==(0,e.A)(t)}},16687:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(){}},22663:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length,o=Array(e);++r{r.d(n,{A:()=>u});var e=r(66916),o=r(84738),c=r(42849);const u=function(t){return(0,c.A)(t)?(0,e.A)(t):(0,o.A)(t)}},25601:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length;++r{r.d(n,{A:()=>a});var e=r(95526),o=r(13027),c=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/;const a=function(t,n){if((0,e.A)(t))return!1;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!(0,o.A)(t))||(u.test(t)||!c.test(t)||null!=n&&t in Object(n))}},31211:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(71031),o=r(89882),c=Object.prototype.propertyIsEnumerable,u=Object.getOwnPropertySymbols;const a=u?function(t){return null==t?[]:(t=Object(t),(0,e.A)(u(t),function(n){return c.call(t,n)}))}:o.A},31528:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(13027);const o=function(t){if("string"==typeof t||(0,e.A)(t))return t;var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},33744:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length;++r{r.d(n,{A:()=>u});var e=r(46482);const o=function(t){return t!=t};const c=function(t,n,r){for(var e=r-1,o=t.length;++e{r.d(n,{A:()=>e});const e=function(t){return function(n){return null==n?void 0:n[t]}}},44753:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(94578),o=r(42849);const c=function(t,n){return function(r,e){if(null==r)return r;if(!(0,o.A)(r))return t(r,e);for(var c=r.length,u=n?c:-1,a=Object(r);(n?u--:++u{r.d(n,{A:()=>e});const e=function(t,n,r,e){for(var o=t.length,c=r+(e?1:-1);e?c--:++c{r.d(n,{A:()=>a});var e=r(45786);const o=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const c=function(t){return this.__data__.has(t)};function u(t){var n=-1,r=null==t?0:t.length;for(this.__data__=new e.A;++n{r.d(n,{A:()=>u});var e=r(74724),o=r(82520),c=r(96920);const u=function(t){return(0,e.A)(t,c.A,o.A)}},49759:(t,n,r)=>{r.d(n,{A:()=>f});var e=r(71849),o=r(55842),c=r(56267),u=r(95526),a=o.A?o.A.isConcatSpreadable:void 0;const i=function(t){return(0,u.A)(t)||(0,c.A)(t)||!!(a&&t&&t[a])};const f=function t(n,r,o,c,u){var a=-1,f=n.length;for(o||(o=i),u||(u=[]);++a0&&o(A)?r>1?t(A,r-1,o,c,u):(0,e.A)(u,A):c||(u[u.length]=A)}return u}},52837:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(44753);const o=function(t,n){var r=[];return(0,e.A)(t,function(t,e,o){n(t,e,o)&&r.push(t)}),r}},52916:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=t}),r}},53261:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(55842),o=r(22663),c=r(95526),u=r(13027),a=e.A?e.A.prototype:void 0,i=a?a.toString:void 0;const f=function t(n){if("string"==typeof n)return n;if((0,c.A)(n))return(0,o.A)(n,t)+"";if((0,u.A)(n))return i?i.call(n):"";var r=n+"";return"0"==r&&1/n==-1/0?"-0":r};const A=function(t){return null==t?"":f(t)}},53924:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n,r){for(var e=-1,o=null==t?0:t.length;++e{r.d(n,{A:()=>e});const e=function(t){return void 0===t}},60870:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(95526),o=r(26995),c=r(4003);var u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g;const i=function(t){var n=(0,c.A)(t,function(t){return 500===r.size&&r.clear(),t}),r=n.cache;return n}(function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(u,function(t,r,e,o){n.push(e?o.replace(a,"$1"):r||t)}),n});var f=r(53261);const A=function(t,n){return(0,e.A)(t)?t:(0,o.A)(t,n)?[t]:i((0,f.A)(t))}},71031:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length,o=0,c=[];++r{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=n.length,o=t.length;++r{r.d(n,{A:()=>c});var e=r(71849),o=r(95526);const c=function(t,n,r){var c=n(t);return(0,o.A)(t)?c:(0,e.A)(c,r(t))}},76095:(t,n,r)=>{r.d(n,{A:()=>J});var e=r(56389),o=r(46691),c=r(25601),u=r(9584);const a=function(t,n,r,e,a,i){var f=1&r,A=t.length,s=n.length;if(A!=s&&!(f&&s>A))return!1;var v=i.get(t),l=i.get(n);if(v&&l)return v==n&&l==t;var b=-1,d=!0,j=2&r?new o.A:void 0;for(i.set(t,n),i.set(n,t);++b{r.d(n,{A:()=>s});var e=r(46691),o=r(9532),c=r(53924),u=r(9584),a=r(30256),i=r(16687),f=r(52916);const A=a.A&&1/(0,f.A)(new a.A([,-0]))[1]==1/0?function(t){return new a.A(t)}:i.A;const s=function(t,n,r){var a=-1,i=o.A,s=t.length,v=!0,l=[],b=l;if(r)v=!1,i=c.A;else if(s>=200){var d=n?null:A(t);if(d)return(0,f.A)(d);v=!1,i=u.A,b=new e.A}else b=n?[]:l;t:for(;++a{r.d(n,{A:()=>c});var e=r(60870),o=r(31528);const c=function(t,n){for(var r=0,c=(n=(0,e.A)(n,t)).length;null!=t&&r{r.d(n,{A:()=>a});var e=r(71849),o=r(79728),c=r(31211),u=r(89882);const a=Object.getOwnPropertySymbols?function(t){for(var n=[];t;)(0,e.A)(n,(0,c.A)(t)),t=(0,o.A)(t);return n}:u.A},83129:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(33744),o=r(44753),c=r(86413),u=r(95526);const a=function(t,n){return((0,u.A)(t)?e.A:o.A)(t,(0,c.A)(n))}},85973:(t,n,r)=>{r.d(n,{A:()=>c});const e=function(t,n){return null!=t&&n in Object(t)};var o=r(96923);const c=function(t,n){return null!=t&&(0,o.A)(t,n,e)}},86413:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(56117);const o=function(t){return"function"==typeof t?t:e.A}},89882:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(){return[]}},89945:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(74724),o=r(31211),c=r(22859);const u=function(t){return(0,e.A)(t,c.A,o.A)}},89949:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(71031),o=r(52837),c=r(76095),u=r(95526);const a=function(t,n){return((0,u.A)(t)?e.A:o.A)(t,(0,c.A)(n,3))}},94578:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(88749),o=r(22859);const c=function(t,n){return t&&(0,e.A)(t,n,o.A)}},96800:(t,n,r)=>{r.d(n,{A:()=>i});const e=function(t,n,r,e){var o=-1,c=null==t?0:t.length;for(e&&c&&(r=t[++o]);++o{r.d(n,{A:()=>f});var e=r(60870),o=r(56267),c=r(95526),u=r(31408),a=r(47227),i=r(31528);const f=function(t,n,r){for(var f=-1,A=(n=(0,e.A)(n,t)).length,s=!1;++f{r.d(n,{A:()=>Q});var e=r(56389),o=r(33744),c=r(63406),u=r(88168),a=r(22859);const i=function(t,n){return t&&(0,u.A)(n,(0,a.A)(n),t)};var f=r(96920);const A=function(t,n){return t&&(0,u.A)(n,(0,f.A)(n),t)};var s=r(14779),v=r(9554),l=r(31211);const b=function(t,n){return(0,u.A)(t,(0,l.A)(t),n)};var d=r(82520);const j=function(t,n){return(0,u.A)(t,(0,d.A)(t),n)};var h=r(89945),p=r(47042),y=r(44254),g=Object.prototype.hasOwnProperty;const w=function(t){var n=t.length,r=new t.constructor(n);return n&&"string"==typeof t[0]&&g.call(t,"index")&&(r.index=t.index,r.input=t.input),r};var _=r(9634);const O=function(t,n){var r=n?(0,_.A)(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)};var m=/\w*$/;const S=function(t){var n=new t.constructor(t.source,m.exec(t));return n.lastIndex=t.lastIndex,n};var k=r(55842),E=k.A?k.A.prototype:void 0,x=E?E.valueOf:void 0;const I=function(t){return x?Object(x.call(t)):{}};var U=r(39448);const B=function(t,n,r){var e=t.constructor;switch(n){case"[object ArrayBuffer]":return(0,_.A)(t);case"[object Boolean]":case"[object Date]":return new e(+t);case"[object DataView]":return O(t,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,U.A)(t,r);case"[object Map]":case"[object Set]":return new e;case"[object Number]":case"[object String]":return new e(t);case"[object RegExp]":return S(t);case"[object Symbol]":return I(t)}};var C=r(77585),D=r(95526),F=r(27163),M=r(97427);const z=function(t){return(0,M.A)(t)&&"[object Map]"==(0,y.A)(t)};var L=r(5220),P=r(10130),$=P.A&&P.A.isMap;const N=$?(0,L.A)($):z;var R=r(49084);const V=function(t){return(0,M.A)(t)&&"[object Set]"==(0,y.A)(t)};var G=P.A&&P.A.isSet;const W=G?(0,L.A)(G):V;var q="[object Arguments]",H="[object Function]",J="[object Object]",K={};K[q]=K["[object Array]"]=K["[object ArrayBuffer]"]=K["[object DataView]"]=K["[object Boolean]"]=K["[object Date]"]=K["[object Float32Array]"]=K["[object Float64Array]"]=K["[object Int8Array]"]=K["[object Int16Array]"]=K["[object Int32Array]"]=K["[object Map]"]=K["[object Number]"]=K[J]=K["[object RegExp]"]=K["[object Set]"]=K["[object String]"]=K["[object Symbol]"]=K["[object Uint8Array]"]=K["[object Uint8ClampedArray]"]=K["[object Uint16Array]"]=K["[object Uint32Array]"]=!0,K["[object Error]"]=K[H]=K["[object WeakMap]"]=!1;const Q=function t(n,r,u,l,d,g){var _,O=1&r,m=2&r,S=4&r;if(u&&(_=d?u(n,l,d,g):u(n)),void 0!==_)return _;if(!(0,R.A)(n))return n;var k=(0,D.A)(n);if(k){if(_=w(n),!O)return(0,v.A)(n,_)}else{var E=(0,y.A)(n),x=E==H||"[object GeneratorFunction]"==E;if((0,F.A)(n))return(0,s.A)(n,O);if(E==J||E==q||x&&!d){if(_=m||x?{}:(0,C.A)(n),!O)return m?j(n,A(_,n)):b(n,i(_,n))}else{if(!K[E])return d?n:{};_=B(n,E,O)}}g||(g=new e.A);var I=g.get(n);if(I)return I;g.set(n,_),W(n)?n.forEach(function(e){_.add(t(e,r,u,e,n,g))}):N(n)&&n.forEach(function(e,o){_.set(o,t(e,r,u,o,n,g))});var U=S?m?p.A:h.A:m?f.A:a.A,M=k?void 0:U(n);return(0,o.A)(M||n,function(e,o){M&&(e=n[o=e]),(0,c.A)(_,o,t(e,r,u,o,n,g))}),_}}}]); \ No newline at end of file diff --git a/assets/js/19b95078.24dbad74.js b/assets/js/19b95078.24dbad74.js new file mode 100644 index 0000000000..951be8ad17 --- /dev/null +++ b/assets/js/19b95078.24dbad74.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8104],{65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const r={},o=n.createContext(r);function i(e){const s=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:s},e.children)}},74568:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.12.4/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sort_plugins","permalink":"/ModuleCheck/docs/0.12.4/rules/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/sorting/sort_plugins.md","tags":[],"version":"0.12.4","frontMatter":{"id":"sort_plugins","slug":"/rules/sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.4/rules/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.4/rules/disable_android_resources"}}');var r=t(23420),o=t(65404);const i={id:"sort_plugins",slug:"/rules/sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(d,{...e})}):d()}}}]); \ No newline at end of file diff --git a/assets/js/19d61b19.e67483c8.js b/assets/js/19d61b19.e67483c8.js new file mode 100644 index 0000000000..28b597c29f --- /dev/null +++ b/assets/js/19d61b19.e67483c8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7432],{19148:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.11.3/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/0.11.3/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/must_be_api.md","tags":[],"version":"0.11.3","frontMatter":{"id":"must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.11.3/rules/unused"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.11.3/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1a3a5cbb.8ba00a30.js b/assets/js/1a3a5cbb.8ba00a30.js new file mode 100644 index 0000000000..f87f3b7119 --- /dev/null +++ b/assets/js/1a3a5cbb.8ba00a30.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3821],{33875:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.11.1/rules/android/disable_resources.md","sourceDirName":"rules/android","slug":"/rules/android/disable_resources","permalink":"/ModuleCheck/docs/0.11.1/rules/android/disable_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/android/disable_resources.md","tags":[],"version":"0.11.1","frontMatter":{"id":"disable_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.11.1/rules/android/disable_viewbinding"}}');var o=r(23420),d=r(65404);const i={id:"disable_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,c={},a=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1a3bb66a.8ca073f7.js b/assets/js/1a3bb66a.8ca073f7.js new file mode 100644 index 0000000000..1af7817283 --- /dev/null +++ b/assets/js/1a3bb66a.8ca073f7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8029],{6478:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","source":"@site/versioned_docs/version-0.12.1/ci_workflow.md","sourceDirName":".","slug":"/ci-workflow","permalink":"/ModuleCheck/docs/0.12.1/ci-workflow","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/ci_workflow.md","tags":[],"version":"0.12.1","frontMatter":{"id":"ci-workflow","sidebar_label":"CI Workflow","title":"CI Workflow"},"sidebar":"Docs","previous":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.1/suppressing-findings"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_dependency"}}');var s=t(23420),a=t(65404);const i={id:"ci-workflow",sidebar_label:"CI Workflow",title:"CI Workflow"},l=void 0,r={},c=[{value:"Using CI over git hooks",id:"using-ci-over-git-hooks",level:3},{value:"Example Flow chart",id:"example-flow-chart",level:3},{value:"Example GitHub Action",id:"example-github-action",level:3}];function h(e){const n={a:"a",code:"code",h3:"h3",mermaid:"mermaid",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and\nautomatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to\napply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run.\nThis is similar to a git pre-commit hook, except the work is delegated to a build server."}),"\n",(0,s.jsx)(n.h3,{id:"using-ci-over-git-hooks",children:"Using CI over git hooks"}),"\n",(0,s.jsx)(n.p,{children:"The traditional method for applying changes automatically is with a git hook, such as pre-commit or\npre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor\ndeveloper experience. With a CI task, the execution is done automatically and asynchronously, while\nthe developer is already moving on to something else."}),"\n",(0,s.jsx)(n.p,{children:"A git hook also technically doesn't guarantee that a task is executed before code is checked in to a\nmain branch, since there's no guarantee that a hook is enabled. With CI, the task will output a\nstatus check. If a branch protection rule is enabled, that status check can be required. This will\nthen guarantee that the task has run (successfully) before any code is checked in to the protected\nbranch."}),"\n",(0,s.jsx)(n.h3,{id:"example-flow-chart",children:"Example Flow chart"}),"\n",(0,s.jsxs)(n.p,{children:['This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The\ncancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an\n"optimistic" workflow, in that it assumes that the ',(0,s.jsx)(n.code,{children:"modulecheck"})," task will not generate changes\nwhich would trigger a restart."]}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n Start(CI Start):::good --\x3e mGraph\n Start --\x3e tGraph\n Start --\x3e cGraph\n\n subgraph mGraph [runner 1]\n direction TB\n ModuleCheck(./gradlew moduleCheckAuto):::code --\x3e ChangesModuleCheck\n ChangesModuleCheck{Graph changes?} --- yesM[yes]:::lineLabel --\x3e CommitModuleCheck(Commit changes and push):::stop\n ChangesModuleCheck --- noM[no]:::lineLabel --\x3e EndModuleCheck("#10003;"):::good\n end\n\n subgraph tGraph [runner 2]\n direction TB\n Tests(./gradlew test):::code --\x3e EndTests("#10003;"):::good\n end\n\n subgraph cGraph [runner 3]\n direction TB\n Cancel(Cancel previous CI run):::code\n end\n\n style tGraph fill:#EEE,stroke:#000\n style cGraph fill:#EEE,stroke:#000\n style mGraph fill:#EEE,stroke:#000\n\n classDef good fill:#0B0,stroke:#000\n classDef stop fill:#E33,stroke:#000\n\n classDef code fill:#AAA,stroke:#000\n\n style ChangesModuleCheck fill:#CD1,stroke:#000\n\n classDef lineLabel fill:#FFF,stroke:#FFF'}),"\n",(0,s.jsx)(n.h3,{id:"example-github-action",children:"Example GitHub Action"}),"\n",(0,s.jsxs)(n.p,{children:["Here's an Action which will run ModuleCheck, then commit any changes\nusing ",(0,s.jsx)(n.a,{href:"https://github.com/stefanzweifel/git-auto-commit-action",children:"Stefanzweifel's auto-commit"}),". This\nrequires a personal access token secret, or the commit step will fail."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:"title=.github/workflows.module-check.yml",children:"name: ModuleCheck\n\non:\n pull_request:\n\njobs:\n\n cancel-stale-jobs:\n name: Cancel stale jobs\n runs-on: ubuntu-latest\n\n steps:\n # cancel previous jobs\n - name: Cancel Previous Runs\n uses: styfle/cancel-workflow-action@0.9.0\n env:\n GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'\n\n ModuleCheck:\n name: ModuleCheck\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n # Must use a personal access token in order to commit changes\n token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '11'\n\n # performs tree-shaking on the Gradle dependency graph\n - name: modulecheck\n run: ./gradlew moduleCheckAuto --no-daemon\n\n # If ModuleCheck generated changes, commit and push those changes.\n # If there are no changes, then this is a no-op.\n - name: commit changes\n uses: stefanzweifel/git-auto-commit-action@v4\n with:\n commit_message: Apply ModuleCheck changes\n commit_options: '--no-verify --signoff'\n\n tests:\n name: Unit tests\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n token: ${{ secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n - name: all tests\n run: ./gradlew test --no-daemon\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var o=t(36672);const s={},a=o.createContext(s);function i(e){const n=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.af9b292e.js b/assets/js/1a4e3797.af9b292e.js new file mode 100644 index 0000000000..acd66b6b80 --- /dev/null +++ b/assets/js/1a4e3797.af9b292e.js @@ -0,0 +1 @@ +(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2138],{1906:e=>{e.exports=function(e){return e.reduce(function(e,t){return e.concat(t)},[])}},3918:e=>{"use strict";e.exports=function(){return Array.prototype.slice.call(arguments).reduceRight(function(e,t){return Object.keys(Object(t)).forEach(function(r){var i="number"==typeof e[r]?e[r]:0,n=t[r];void 0!==n&&n>=i&&(void 0!==e[r]&&delete e[r],e[r]=n)}),e},{})}},20548:e=>{"use strict";e.exports=function(e,t){if(null===e)return{};var r,i,n={},s=Object.keys(e);for(i=0;i=0||(n[r]=e[r]);return n}},20742:(e,t,r)=>{"use strict";var i=r(63024),n=r(95290),s=r(72028),a=r(59740),c=r(56386);function o(e,t,r,n){return new i(e,t,r,n)}o.version=r(21575),o.AlgoliaSearchHelper=i,o.SearchParameters=a,o.RecommendParameters=n,o.SearchResults=c,o.RecommendResults=s,e.exports=o},21575:e=>{"use strict";e.exports="3.26.0"},25168:e=>{"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},25669:e=>{"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},28181:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function i(e){return"object"==typeof e&&null!==e}function n(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,s,a,c,o,u;if(this._events||(this._events={}),"error"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(n(s=this._events[e]))return!1;if(r(s))switch(arguments.length){case 1:s.call(this);break;case 2:s.call(this,arguments[1]);break;case 3:s.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),s.apply(this,c)}else if(i(s))for(c=Array.prototype.slice.call(arguments,1),a=(u=s.slice()).length,o=0;o0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var i=!1;function n(){this.removeListener(e,n),i||(i=!0,t.apply(this,arguments))}return n.listener=t,this.on(e,n),this},t.prototype.removeListener=function(e,t){var n,s,a,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,s=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(i(n)){for(c=a;c-- >0;)if(n[c]===t||n[c].listener&&n[c].listener===t){s=c;break}if(s<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(s,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,i;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(i=this._events[e]))this.removeListener(e,i);else if(i)for(;i.length;)this.removeListener(e,i[i.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},28375:(e,t,r)=>{"use strict";var i=r(64217),n=r(61672),s=r(20548),a={addRefinement:function(e,t,r){if(a.isRefined(e,t,r))return e;var n=""+r,s=e[t]?e[t].concat(n):[n],c={};return c[t]=s,i(c,e)},removeRefinement:function(e,t,r){if(void 0===r)return a.clearRefinement(e,function(e,r){return t===r});var i=""+r;return a.clearRefinement(e,function(e,r){return t===r&&i===e})},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return a.isRefined(e,t,r)?a.removeRefinement(e,t,r):a.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return n(e)?{}:e;if("string"==typeof t)return s(e,[t]);if("function"==typeof t){var i=!1,a=Object.keys(e).reduce(function(n,s){var a=e[s]||[],c=a.filter(function(e){return!t(e,s,r)});return c.length!==a.length&&(i=!0),n[s]=c,n},{});return i?a:e}},isRefined:function(e,t,r){var i=Boolean(e[t])&&e[t].length>0;if(void 0===r||!i)return i;var n=""+r;return-1!==e[t].indexOf(n)}};e.exports=a},29414:e=>{"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},33032:(e,t,r)=>{"use strict";var i=r(82898),n=r(1906);e.exports=function(e,t){var r={};return t.forEach(function(t){t.forEach(function(t,i){e.includes(t.objectID)||(r[t.objectID]?r[t.objectID]={indexSum:r[t.objectID].indexSum+i,count:r[t.objectID].count+1}:r[t.objectID]={indexSum:i,count:1})})}),function(e,t){var r=[];return Object.keys(e).forEach(function(i){e[i].count<2&&(e[i].indexSum+=100),r.push({objectID:i,avgOfIndices:e[i].indexSum/t})}),r.sort(function(e,t){return e.avgOfIndices>t.avgOfIndices?1:-1})}(r,t.length).reduce(function(e,r){var s=i(n(t),function(e){return e.objectID===r.objectID});return s?e.concat(s):e},[])}},38956:e=>{"use strict";e.exports=function(e,t){if(!Array.isArray(e))return-1;for(var r=0;r{"use strict";var i=r(28181);function n(e,t,r){this.main=e,this.fn=t,this.recommendFn=r,this.lastResults=null,this.lastRecommendResults=null}r(25669)(n,i),n.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},n.prototype.getModifiedState=function(e){return this.fn(e)},n.prototype.getModifiedRecommendState=function(e){return this.recommendFn(e)},e.exports=n},51160:e=>{"use strict";e.exports=function(e,t){return e.filter(function(r,i){return t.indexOf(r)>-1&&e.indexOf(r)===i})}},55972:e=>{"use strict";function t(e,t){if(e!==t){var r=void 0!==e,i=null===e,n=void 0!==t,s=null===t;if(!s&&e>t||i&&n||!r)return 1;if(!i&&e=i.length?s:"desc"===i[n]?-s:s}return e.index-r.index}),n.map(function(e){return e.value})}},56386:(e,t,r)=>{"use strict";var i=r(25168),n=r(64217),s=r(93310),a=r(82898),c=r(38956),o=r(67802),u=r(3918),h=r(55972),l=s.escapeFacetValue,f=s.unescapeFacetValue,m=r(96422);function d(e){var t={};return e.forEach(function(e,r){t[e]=r}),t}function p(e,t,r){t&&t[r]&&(e.stats=t[r])}function g(e,t,r){var s=t[0]||{};this._rawResults=t;var o=this;Object.keys(s).forEach(function(e){o[e]=s[e]});var h=n(r,{persistHierarchicalRootCount:!1});Object.keys(h).forEach(function(e){o[e]=h[e]}),this.processingTimeMS=t.reduce(function(e,t){return void 0===t.processingTimeMS?e:e+t.processingTimeMS},0),this.disjunctiveFacets=[],this.hierarchicalFacets=e.hierarchicalFacets.map(function(){return[]}),this.facets=[];var l=e.getRefinedDisjunctiveFacets(),g=d(e.facets),v=d(e.disjunctiveFacets),y=1,R=s.facets||{};Object.keys(R).forEach(function(t){var r,i,n=R[t],u=(r=e.hierarchicalFacets,i=t,a(r,function(e){return(e.attributes||[]).indexOf(i)>-1}));if(u){var h=u.attributes.indexOf(t),l=c(e.hierarchicalFacets,function(e){return e.name===u.name});o.hierarchicalFacets[l][h]={attribute:t,data:n,exhaustive:s.exhaustiveFacetsCount}}else{var f,m=-1!==e.disjunctiveFacets.indexOf(t),d=-1!==e.facets.indexOf(t);m&&(f=v[t],o.disjunctiveFacets[f]={name:t,data:n,exhaustive:s.exhaustiveFacetsCount},p(o.disjunctiveFacets[f],s.facets_stats,t)),d&&(f=g[t],o.facets[f]={name:t,data:n,exhaustive:s.exhaustiveFacetsCount},p(o.facets[f],s.facets_stats,t))}}),this.hierarchicalFacets=i(this.hierarchicalFacets),l.forEach(function(r){var i=t[y],a=i&&i.facets?i.facets:{},h=e.getHierarchicalFacetByName(r);Object.keys(a).forEach(function(t){var r,l=a[t];if(h){r=c(e.hierarchicalFacets,function(e){return e.name===h.name});var m=c(o.hierarchicalFacets[r],function(e){return e.attribute===t});if(-1===m)return;o.hierarchicalFacets[r][m].data=o.persistHierarchicalRootCount?u(o.hierarchicalFacets[r][m].data,l):n(l,o.hierarchicalFacets[r][m].data)}else{r=v[t];var d=s.facets&&s.facets[t]||{};o.disjunctiveFacets[r]={name:t,data:u(d,l),exhaustive:i.exhaustiveFacetsCount},p(o.disjunctiveFacets[r],i.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach(function(i){!o.disjunctiveFacets[r].data[i]&&e.disjunctiveFacetsRefinements[t].indexOf(f(i))>-1&&(o.disjunctiveFacets[r].data[i]=0)})}}),y++}),e.getRefinedHierarchicalFacets().forEach(function(r){var i=e.getHierarchicalFacetByName(r),s=e._getHierarchicalFacetSeparator(i),a=e.getHierarchicalRefinement(r);0===a.length||a[0].split(s).length<2||t.slice(y).forEach(function(t){var r=t&&t.facets?t.facets:{};Object.keys(r).forEach(function(t){var u=r[t],h=c(e.hierarchicalFacets,function(e){return e.name===i.name}),l=c(o.hierarchicalFacets[h],function(e){return e.attribute===t});if(-1!==l){var f={};if(a.length>0&&!o.persistHierarchicalRootCount){var m=a[0].split(s)[0];f[m]=o.hierarchicalFacets[h][l].data[m]}o.hierarchicalFacets[h][l].data=n(f,u,o.hierarchicalFacets[h][l].data)}}),y++})}),Object.keys(e.facetsExcludes).forEach(function(t){var r=e.facetsExcludes[t],i=g[t];o.facets[i]={name:t,data:R[t],exhaustive:s.exhaustiveFacetsCount},r.forEach(function(e){o.facets[i]=o.facets[i]||{name:t},o.facets[i].data=o.facets[i].data||{},o.facets[i].data[e]=0})}),this.hierarchicalFacets=this.hierarchicalFacets.map(m(e)),this.facets=i(this.facets),this.disjunctiveFacets=i(this.disjunctiveFacets),this._state=e}function v(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var i=a(e.facets,r);return i?Object.keys(i.data).map(function(r){var n=l(r);return{name:r,escapedValue:n,count:i.data[r],isRefined:e._state.isFacetRefined(t,n),isExcluded:e._state.isExcludeRefined(t,r)}}):[]}if(e._state.isDisjunctiveFacet(t)){var n=a(e.disjunctiveFacets,r);return n?Object.keys(n.data).map(function(r){var i=l(r);return{name:r,escapedValue:i,count:n.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,i)}}):[]}if(e._state.isHierarchicalFacet(t)){var s=a(e.hierarchicalFacets,r);if(!s)return s;var c=e._state.getHierarchicalFacetByName(t),o=e._state._getHierarchicalFacetSeparator(c),u=f(e._state.getHierarchicalRefinement(t)[0]||"");0===u.indexOf(c.rootPath)&&(u=u.replace(c.rootPath+o,""));var h=u.split(o);return h.unshift(t),y(s,h,0),s}}function y(e,t,r){e.isRefined=e.name===(t[r]&&t[r].trim()),e.data&&e.data.forEach(function(e){y(e,t,r+1)})}function R(e,t,r,i){if(i=i||0,Array.isArray(t))return e(t,r[i]);if(!t.data||0===t.data.length)return t;var s=t.data.map(function(t){return R(e,t,r,i+1)}),a=e(s,r[i]);return n({data:a},t)}function F(e,t){var r=a(e,function(e){return e.name===t});return r&&r.stats}function _(e,t,r,i,n){var s=a(n,function(e){return e.name===r}),c=s&&s.data&&s.data[i]?s.data[i]:0,o=s&&s.exhaustive||!1;return{type:t,attributeName:r,name:i,count:c,exhaustive:o}}g.prototype.getFacetByName=function(e){function t(t){return t.name===e}return a(this.facets,t)||a(this.disjunctiveFacets,t)||a(this.hierarchicalFacets,t)},g.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],g.prototype.getFacetValues=function(e,t){var r=v(this,e);if(r){var i,s=n(t,{sortBy:g.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),a=this;if(Array.isArray(r))i=[e];else i=a._state.getHierarchicalFacetByName(r.name).attributes;return R(function(e,t){if(s.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(a,t);if(r)return function(e,t){var r=[],i=[],n=t.hide||[],s=(t.order||[]).reduce(function(e,t,r){return e[t]=r,e},{});e.forEach(function(e){var t=e.path||e.name,a=n.indexOf(t)>-1;a||void 0===s[t]?a||i.push(e):r[s[t]]=e}),r=r.filter(function(e){return e});var a,c=t.sortRemainingBy;return"hidden"===c?r:(a="alpha"===c?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(h(i,a[0],a[1])))}(e,r)}if(Array.isArray(s.sortBy)){var i=o(s.sortBy,g.DEFAULT_SORT);return h(e,i[0],i[1])}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")},r,i)}},g.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?F(this.facets,e):this._state.isDisjunctiveFacet(e)?F(this.disjunctiveFacets,e):void 0},g.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach(function(i){e.facetsRefinements[i].forEach(function(n){r.push(_(e,"facet",i,n,t.facets))})}),Object.keys(e.facetsExcludes).forEach(function(i){e.facetsExcludes[i].forEach(function(n){r.push(_(e,"exclude",i,n,t.facets))})}),Object.keys(e.disjunctiveFacetsRefinements).forEach(function(i){e.disjunctiveFacetsRefinements[i].forEach(function(n){r.push(_(e,"disjunctive",i,n,t.disjunctiveFacets))})}),Object.keys(e.hierarchicalFacetsRefinements).forEach(function(i){e.hierarchicalFacetsRefinements[i].forEach(function(n){r.push(function(e,t,r,i){var n=e.getHierarchicalFacetByName(t),s=e._getHierarchicalFacetSeparator(n),c=r.split(s),o=a(i,function(e){return e.name===t}),u=c.reduce(function(e,t){var r=e&&a(e.data,function(e){return e.name===t});return void 0!==r?r:e},o),h=u&&u.count||0,l=u&&u.exhaustive||!1,f=u&&u.path||"";return{type:"hierarchical",attributeName:t,name:f,count:h,exhaustive:l}}(e,i,n,t.hierarchicalFacets))})}),Object.keys(e.numericRefinements).forEach(function(t){var i=e.numericRefinements[t];Object.keys(i).forEach(function(e){i[e].forEach(function(i){r.push({type:"numeric",attributeName:t,name:i,numericValue:i,operator:e})})})}),e.tagRefinements.forEach(function(e){r.push({type:"tag",attributeName:"_tags",name:e})}),r},e.exports=g},57277:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>W});var i=r(36672),n=r(13526),s=r(20742),a=r.n(s);function c(e){let t;const r=`algolia-client-js-${e.key}`;function i(){return void 0===t&&(t=e.localStorage||window.localStorage),t}function n(){return JSON.parse(i().getItem(r)||"{}")}function s(e){i().setItem(r,JSON.stringify(e))}return{get:(t,r,i={miss:()=>Promise.resolve()})=>Promise.resolve().then(()=>(function(){const t=e.timeToLive?1e3*e.timeToLive:null,r=n(),i=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e.timestamp));if(s(i),!t)return;s(Object.fromEntries(Object.entries(i).filter(([,e])=>{const r=(new Date).getTime();return!(e.timestamp+tPromise.all([e?e.value:r(),void 0!==e])).then(([e,t])=>Promise.all([e,t||i.miss(e)])).then(([e])=>e),set:(e,t)=>Promise.resolve().then(()=>{const s=n();return s[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},i().setItem(r,JSON.stringify(s)),t}),delete:e=>Promise.resolve().then(()=>{const t=n();delete t[JSON.stringify(e)],i().setItem(r,JSON.stringify(t))}),clear:()=>Promise.resolve().then(()=>{i().removeItem(r)})}}function o(e){const t=[...e.caches],r=t.shift();return void 0===r?{get:(e,t,r={miss:()=>Promise.resolve()})=>t().then(e=>Promise.all([e,r.miss(e)])).then(([e])=>e),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,i,n={miss:()=>Promise.resolve()})=>r.get(e,i,n).catch(()=>o({caches:t}).get(e,i,n)),set:(e,i)=>r.set(e,i).catch(()=>o({caches:t}).set(e,i)),delete:e=>r.delete(e).catch(()=>o({caches:t}).delete(e)),clear:()=>r.clear().catch(()=>o({caches:t}).clear())}}function u(e={serializable:!0}){let t={};return{get(r,i,n={miss:()=>Promise.resolve()}){const s=JSON.stringify(r);if(s in t)return Promise.resolve(e.serializable?JSON.parse(t[s]):t[s]);const a=i();return a.then(e=>n.miss(e)).then(()=>a)},set:(r,i)=>(t[JSON.stringify(r)]=e.serializable?JSON.stringify(i):i,Promise.resolve(i)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function h({algoliaAgents:e,client:t,version:r}){const i=function(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}(r).add({segment:t,version:r});return e.forEach(e=>i.add(e)),i}var l=12e4;function f(e,t="up"){const r=Date.now();return{...e,status:t,lastUpdate:r,isUp:function(){return"up"===t||Date.now()-r>l},isTimedOut:function(){return"timed out"===t&&Date.now()-r<=l}}}var m=class extends Error{name="AlgoliaError";constructor(e,t){super(e),t&&(this.name=t)}},d=class extends m{stackTrace;constructor(e,t,r){super(e,r),this.stackTrace=t}},p=class extends d{constructor(e){super("Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support.",e,"RetryError")}},g=class extends d{status;constructor(e,t,r,i="ApiError"){super(e,r,i),this.status=t}},v=class extends m{response;constructor(e,t){super(e,"DeserializationError"),this.response=t}},y=class extends g{error;constructor(e,t,r,i){super(e,t,i,"DetailedApiError"),this.error=r}};function R(e,t,r){const i=(n=r,Object.keys(n).filter(e=>void 0!==n[e]).sort().map(e=>`${e}=${encodeURIComponent("[object Array]"===Object.prototype.toString.call(n[e])?n[e].join(","):n[e]).replace(/\+/g,"%20")}`).join("&"));var n;let s=`${e.protocol}://${e.url}${e.port?`:${e.port}`:""}/${"/"===t.charAt(0)?t.substring(1):t}`;return i.length&&(s+=`?${i}`),s}function F(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function _({hosts:e,hostsCache:t,baseHeaders:r,logger:i,baseQueryParameters:n,algoliaAgent:s,timeouts:a,requester:c,requestsCache:o,responsesCache:u}){async function h(o,u,h=!0){const l=[],m=function(e,t){if("GET"===e.method||void 0===e.data&&void 0===t.data)return;const r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(o,u),d=function(e,t,r){const i={Accept:"application/json",...e,...t,...r},n={};return Object.keys(i).forEach(e=>{const t=i[e];n[e.toLowerCase()]=t}),n}(r,o.headers,u.headers),_="GET"===o.method?{...o.data,...u.data}:{},b={...n,...o.queryParameters,..._};if(s.value&&(b["x-algolia-agent"]=s.value),u&&u.queryParameters)for(const e of Object.keys(u.queryParameters))u.queryParameters[e]&&"[object Object]"!==Object.prototype.toString.call(u.queryParameters[e])?b[e]=u.queryParameters[e].toString():b[e]=u.queryParameters[e];let P=0;const j=async(e,r)=>{const n=e.pop();if(void 0===n)throw new p(function(e){return e.map(e=>F(e))}(l));const s={...a,...u.timeouts},_={data:m,headers:d,method:o.method,url:R(n,o.path,b),connectTimeout:r(P,s.connect),responseTimeout:r(P,h?s.read:s.write)},x=t=>{const r={request:_,response:t,host:n,triesLeft:e.length};return l.push(r),r},E=await c.send(_);if(function({isTimedOut:e,status:t}){return e||function({isTimedOut:e,status:t}){return!e&&0===~~t}({isTimedOut:e,status:t})||2!=~~(t/100)&&4!=~~(t/100)}(E)){const s=x(E);return E.isTimedOut&&P++,i.info("Retryable failure",F(s)),await t.set(n,f(n,E.isTimedOut?"timed out":"down")),j(e,r)}if(function({status:e}){return 2==~~(e/100)}(E))return function(e){try{return JSON.parse(e.content)}catch(t){throw new v(t.message,e)}}(E);throw x(E),function({content:e,status:t},r){try{const i=JSON.parse(e);return"error"in i?new y(i.message,t,i.error,r):new g(i.message,t,r)}catch{}return new g(e,t,r)}(E,l)},x=e.filter(e=>"readWrite"===e.accept||(h?"read"===e.accept:"write"===e.accept)),E=await async function(e){const r=await Promise.all(e.map(e=>t.get(e,()=>Promise.resolve(f(e))))),i=r.filter(e=>e.isUp()),n=r.filter(e=>e.isTimedOut()),s=[...i,...n];return{hosts:s.length>0?s:e,getTimeout:(e,t)=>(0===n.length&&0===e?1:n.length+3+e)*t}}(x);return j([...E.hosts].reverse(),E.getTimeout)}return{hostsCache:t,requester:c,timeouts:a,logger:i,algoliaAgent:s,baseHeaders:r,baseQueryParameters:n,hosts:e,request:function(e,t={}){const i=e.useReadTransporter||"GET"===e.method;if(!i)return h(e,t,i);const s=()=>h(e,t);if(!0!==(t.cacheable||e.cacheable))return s();const a={request:e,requestOptions:t,transporter:{queryParameters:n,headers:r}};return u.get(a,()=>o.get(a,()=>o.set(a,s()).then(e=>Promise.all([o.delete(a),e]),e=>Promise.all([o.delete(a),Promise.reject(e)])).then(([e,t])=>t)),{miss:e=>u.set(a,e)})},requestsCache:o,responsesCache:u}}var b="5.30.0";function P(e){return[{url:`${e}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${e}.algolia.net`,accept:"write",protocol:"https"}].concat(function(e){const t=e;for(let r=e.length-1;r>0;r--){const i=Math.floor(Math.random()*(r+1)),n=e[r];t[r]=e[i],t[i]=n}return t}([{url:`${e}-1.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${e}-2.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${e}-3.algolianet.com`,accept:"readWrite",protocol:"https"}]))}function j(e,t,r){if(!e||"string"!=typeof e)throw new Error("`appId` is missing.");if(!t||"string"!=typeof t)throw new Error("`apiKey` is missing.");return function({appId:e,apiKey:t,authMode:r,algoliaAgents:i,...n}){const s=function(e,t,r="WithinHeaders"){const i={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers:()=>"WithinHeaders"===r?i:{},queryParameters:()=>"WithinQueryParameters"===r?i:{}}}(e,t,r),a=_({hosts:P(e),...n,algoliaAgent:h({algoliaAgents:i,client:"Lite",version:b}),baseHeaders:{"content-type":"text/plain",...s.headers(),...n.baseHeaders},baseQueryParameters:{...s.queryParameters(),...n.baseQueryParameters}});return{transporter:a,appId:e,apiKey:t,clearCache:()=>Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then(()=>{}),get _ua(){return a.algoliaAgent.value},addAlgoliaAgent(e,t){a.algoliaAgent.add({segment:e,version:t})},setClientApiKey({apiKey:e}){r&&"WithinHeaders"!==r?a.baseQueryParameters["x-algolia-api-key"]=e:a.baseHeaders["x-algolia-api-key"]=e},searchForHits(e,t){return this.search(e,t)},searchForFacets(e,t){return this.search(e,t)},customPost({path:e,parameters:t,body:r},i){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");const n={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:r||{}};return a.request(n,i)},getRecommendations(e,t){if(e&&Array.isArray(e)&&(e={requests:e}),!e)throw new Error("Parameter `getRecommendationsParams` is required when calling `getRecommendations`.");if(!e.requests)throw new Error("Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.");const r={method:"POST",path:"/1/indexes/*/recommendations",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return a.request(r,t)},search(e,t){if(e&&Array.isArray(e)){const t={requests:e.map(({params:e,...t})=>"facet"===t.type?{...t,...e,type:"facet"}:{...t,...e,facet:void 0,maxFacetHits:void 0,facetQuery:void 0})};e=t}if(!e)throw new Error("Parameter `searchMethodParams` is required when calling `search`.");if(!e.requests)throw new Error("Parameter `searchMethodParams.requests` is required when calling `search`.");const r={method:"POST",path:"/1/indexes/*/queries",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return a.request(r,t)}}}({appId:e,apiKey:t,timeouts:{connect:1e3,read:2e3,write:3e4},logger:{debug:(e,t)=>Promise.resolve(),info:(e,t)=>Promise.resolve(),error:(e,t)=>Promise.resolve()},requester:{send:function(e){return new Promise(t=>{let r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach(t=>r.setRequestHeader(t,e.headers[t]));let i,n=(e,i)=>setTimeout(()=>{r.abort(),t({status:0,content:i,isTimedOut:!0})},e),s=n(e.connectTimeout,"Connection timeout");r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===i&&(clearTimeout(s),i=n(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(s),clearTimeout(i),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(s),clearTimeout(i),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)})}},algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:o({caches:[c({key:`${b}-${e}`}),u()]}),...r})}var x=r(40932),E=r(19521),w=r(28827),O=r(75755),A=r(68035);const H=["zero","one","two","few","many","other"];function S(e){return H.filter(t=>e.includes(t))}const Q={locale:"en",pluralForms:S(["one","other"]),select:e=>1===e?"one":"other"};function N(){const{i18n:{currentLocale:e}}=(0,A.A)();return(0,i.useMemo)(()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:S(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),Q}},[e])}function T(){const e=N();return{selectMessage:(t,r)=>function(e,t,r){const i=e.split("|");if(1===i.length)return i[0];i.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${i.length}: ${e}`);const n=r.select(t),s=r.pluralForms.indexOf(n);return i[Math.min(s,i.length-1)]}(r,t,e)}}var C=r(8243),I=r(36496),D=r(10352),k=r(50120),q=r(64829),V=r(76833),L=r(32592),$=r(45544);const B={searchQueryInput:"searchQueryInput_BHsc",searchVersionInput:"searchVersionInput_fGgd",searchResultsColumn:"searchResultsColumn_UW9C",algoliaLogo:"algoliaLogo_V9e0",algoliaLogoPathFill:"algoliaLogoPathFill__cJo",searchResultItem:"searchResultItem_OQlH",searchResultItemHeading:"searchResultItemHeading_kKNu",searchResultItemPath:"searchResultItemPath_wOE1",searchResultItemSummary:"searchResultItemSummary_O1q3",searchQueryColumn:"searchQueryColumn_WeQf",searchVersionColumn:"searchVersionColumn_PhHw",searchLogoColumn:"searchLogoColumn_c1HD",loadingSpinner:"loadingSpinner_DBHN","loading-spin":"loading-spin_Zsvw",loader:"loader_umaA"};var M=r(23420);function z({docsSearchVersionsHelpers:e}){const t=Object.entries(e.allDocsData).filter(([,e])=>e.versions.length>1);return(0,M.jsx)("div",{className:(0,n.A)("col","col--3","padding-left--none",B.searchVersionColumn),children:t.map(([r,i])=>{const n=t.length>1?`${r}: `:"";return(0,M.jsx)("select",{onChange:t=>e.setSearchVersion(r,t.target.value),defaultValue:e.searchVersions[r],className:B.searchVersionInput,children:i.versions.map((e,t)=>(0,M.jsx)("option",{label:`${n}${e.label}`,value:e.name},t))},r)})})}function J(){const{i18n:{currentLocale:e}}=(0,A.A)(),{algolia:{appId:t,apiKey:r,indexName:s,contextualSearch:c}}=(0,q.c)(),o=(0,V.C)(),u=function(){const{selectMessage:e}=T();return t=>e(t,(0,k.T)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}(),h=function(){const e=(0,O.Gy)(),[t,r]=(0,i.useState)(()=>Object.entries(e).reduce((e,[t,r])=>({...e,[t]:r.versions[0].name}),{})),n=Object.values(e).some(e=>e.versions.length>1);return{allDocsData:e,versioningEnabled:n,searchVersions:t,setSearchVersion:(e,t)=>r(r=>({...r,[e]:t}))}}(),[l,f]=(0,C.b)(),m=function(e){return e?(0,k.T)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:e}):(0,k.T)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})}(l),d={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},[p,g]=(0,i.useReducer)((e,t)=>{switch(t.type){case"reset":return d;case"loading":return{...e,loading:!0};case"update":return l!==t.value.query?e:{...t.value,items:0===t.value.lastPage?t.value.items:e.items.concat(t.value.items)};case"advance":{const t=e.totalPages>e.lastPage+1;return{...e,lastPage:t?e.lastPage+1:e.lastPage,hasMore:t}}default:return e}},d),v=c?["language","docusaurus_tag"]:[],y=j(t,r),R=a()(y,s,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:v});R.on("result",({results:{query:e,hits:t,page:r,nbHits:i,nbPages:n}})=>{if(""===e||!Array.isArray(t))return void g({type:"reset"});const s=e=>e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match"),a=t.map(({url:e,_highlightResult:{hierarchy:t},_snippetResult:r={}})=>{const i=Object.keys(t).map(e=>s(t[e].value));return{title:i.pop(),url:o(e),summary:r.content?`${s(r.content.value)}...`:"",breadcrumbs:i}});g({type:"update",value:{items:a,query:e,totalResults:i,totalPages:n,lastPage:r,hasMore:n>r+1,loading:!1}})});const[F,_]=(0,i.useState)(null),b=(0,i.useRef)(0),P=(0,i.useRef)(x.A.canUseIntersectionObserver&&new IntersectionObserver(e=>{const{isIntersecting:t,boundingClientRect:{y:r}}=e[0];t&&b.current>r&&g({type:"advance"}),b.current=r},{threshold:1})),H=(0,I._q)((t=0)=>{c&&(R.addDisjunctiveFacetRefinement("docusaurus_tag","default"),R.addDisjunctiveFacetRefinement("language",e),Object.entries(h.searchVersions).forEach(([e,t])=>{R.addDisjunctiveFacetRefinement("docusaurus_tag",`docs-${e}-${t}`)})),R.setQuery(l).setPage(t).search()});return(0,i.useEffect)(()=>{if(!F)return;const e=P.current;return e?(e.observe(F),()=>e.unobserve(F)):()=>!0},[F]),(0,i.useEffect)(()=>{g({type:"reset"}),l&&(g({type:"loading"}),setTimeout(()=>{H()},300))},[l,h.searchVersions,H]),(0,i.useEffect)(()=>{p.lastPage&&0!==p.lastPage&&H(p.lastPage)},[H,p.lastPage]),(0,M.jsxs)(L.A,{children:[(0,M.jsx)(D.be,{title:m}),(0,M.jsx)(E.A,{children:(0,M.jsx)("meta",{property:"robots",content:"noindex, follow"})}),(0,M.jsxs)("div",{className:"container margin-vert--lg",children:[(0,M.jsx)($.A,{as:"h1",children:m}),(0,M.jsxs)("form",{className:"row",onSubmit:e=>e.preventDefault(),children:[(0,M.jsx)("div",{className:(0,n.A)("col",B.searchQueryColumn,{"col--9":h.versioningEnabled,"col--12":!h.versioningEnabled}),children:(0,M.jsx)("input",{type:"search",name:"q",className:B.searchQueryInput,placeholder:(0,k.T)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,k.T)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:e=>f(e.target.value),value:l,autoComplete:"off",autoFocus:!0})}),c&&h.versioningEnabled&&(0,M.jsx)(z,{docsSearchVersionsHelpers:h})]}),(0,M.jsxs)("div",{className:"row",children:[(0,M.jsx)("div",{className:(0,n.A)("col","col--8",B.searchResultsColumn),children:!!p.totalResults&&u(p.totalResults)}),(0,M.jsx)("div",{className:(0,n.A)("col","col--4","text--right",B.searchLogoColumn),children:(0,M.jsx)(w.A,{to:"https://www.algolia.com/","aria-label":(0,k.T)({id:"theme.SearchPage.algoliaLabel",message:"Search by Algolia",description:"The ARIA label for Algolia mention"}),children:(0,M.jsx)("svg",{viewBox:"0 0 168 24",className:B.algoliaLogo,children:(0,M.jsxs)("g",{fill:"none",children:[(0,M.jsx)("path",{className:B.algoliaLogoPathFill,d:"M120.925 18.804c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17zM6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z"}),(0,M.jsx)("path",{fill:"#5468FF",d:"M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938z"}),(0,M.jsx)("path",{fill:"white",d:"M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36"})]})})})})]}),p.items.length>0?(0,M.jsx)("main",{children:p.items.map(({title:e,url:t,summary:r,breadcrumbs:i},s)=>(0,M.jsxs)("article",{className:B.searchResultItem,children:[(0,M.jsx)($.A,{as:"h2",className:B.searchResultItemHeading,children:(0,M.jsx)(w.A,{to:t,dangerouslySetInnerHTML:{__html:e}})}),i.length>0&&(0,M.jsx)("nav",{"aria-label":"breadcrumbs",children:(0,M.jsx)("ul",{className:(0,n.A)("breadcrumbs",B.searchResultItemPath),children:i.map((e,t)=>(0,M.jsx)("li",{className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}},t))})}),r&&(0,M.jsx)("p",{className:B.searchResultItemSummary,dangerouslySetInnerHTML:{__html:r}})]},s))}):[l&&!p.loading&&(0,M.jsx)("p",{children:(0,M.jsx)(k.A,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result",children:"No results were found"})},"no-results"),!!p.loading&&(0,M.jsx)("div",{className:B.loadingSpinner},"spinner")],p.hasMore&&(0,M.jsx)("div",{className:B.loader,ref:_,children:(0,M.jsx)(k.A,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results",children:"Fetching new results..."})})]})]})}function W(){return(0,M.jsx)(D.e3,{className:"search-page-wrapper",children:(0,M.jsx)(J,{})})}},59740:(e,t,r)=>{"use strict";var i=r(64217),n=r(82898),s=r(51160),a=r(95929),c=r(61672),o=r(20548),u=r(29414),h=r(70095),l=r(28375);function f(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every(function(e,r){return f(t[r],e)}):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach(function(e){var i=-1!==m.PARAMETERS.indexOf(e),n=void 0!==t[e];!i&&n&&(r[e]=t[e])})}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach(function(r){var i=e[r];if("string"==typeof i){var n=parseFloat(i);t[r]=isNaN(n)?i:n}}),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map(function(e){return Array.isArray(e)?e.map(function(e){return parseFloat(e)}):e})),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach(function(t){var i=e.numericRefinements[t]||{};r[t]={},Object.keys(i).forEach(function(e){var n=i[e].map(function(e){return Array.isArray(e)?e.map(function(e){return"string"==typeof e?parseFloat(e):e}):"string"==typeof e?parseFloat(e):e});r[t][e]=n})}),t.numericRefinements=r}return a(e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach(function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}}),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&c(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):c(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:l.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:l.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:l.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:l.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var i=u(r);if(this.isNumericRefined(e,t,i))return this;var n=a({},this.numericRefinements);return n[e]=a({},n[e]),n[e][t]?(n[e][t]=n[e][t].slice(),n[e][t].push(i)):n[e][t]=[i],this.setQueryParameters({numericRefinements:n})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){var i=r;return void 0!==i?this.isNumericRefined(e,t,i)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements(function(r,n){return n===e&&r.op===t&&f(r.val,u(i))})}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements(function(r,i){return i===e&&r.op===t})}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements(function(t,r){return r===e})}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return c(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return o(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,i=Object.keys(r).reduce(function(i,n){var s=r[n],a={};return s=s||{},Object.keys(s).forEach(function(r){var i=s[r]||[],c=[];i.forEach(function(t){e({val:t,op:r},n,"numeric")||c.push(t)}),c.length!==i.length&&(t=!0),a[r]=c}),i[n]=a,i},{});return t?i:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:l.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:l.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return l.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:l.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter(function(t){return t!==e})}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter(function(t){return t!==e})}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter(function(t){return t.name!==e})}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:l.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:l.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return l.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:l.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter(function(t){return t!==e})};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:l.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:l.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:l.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),n={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?n[e]=[]:n[e]=[t.slice(0,t.lastIndexOf(r))]:n[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i(n,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i(r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:i(t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&l.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&l.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&l.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return Boolean(this.numericRefinements[e]);var i=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!i)return i;var s,a,c=u(r),o=void 0!==(s=this.numericRefinements[e][t],a=c,n(s,function(e){return f(e,a)}));return i&&o},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=s(Object.keys(this.numericRefinements).filter(function(t){return Object.keys(e.numericRefinements[t]).length>0}),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter(function(t){return e.disjunctiveFacetsRefinements[t].length>0}).concat(t).concat(this.getRefinedHierarchicalFacets()).sort()},getRefinedHierarchicalFacets:function(){var e=this;return s(this.hierarchicalFacets.map(function(e){return e.name}),Object.keys(this.hierarchicalFacetsRefinements).filter(function(t){return e.hierarchicalFacetsRefinements[t].length>0})).sort()},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter(function(t){return-1===e.indexOf(t)})},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","hierarchicalFacets","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach(function(i){var n=r[i];-1===e.indexOf(i)&&void 0!==n&&(t[i]=n)}),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,i=m._parseNumbers(e),n=Object.keys(this).reduce(function(e,t){return e[t]=r[t],e},{}),s=Object.keys(i).reduce(function(e,t){var r=void 0!==e[t],n=void 0!==i[t];return r&&!n?o(e,[t]):(n&&(e[t]=i[t]),e)},n);return new this.constructor(s)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return n(this.hierarchicalFacets,function(t){return t.name===e})},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map(function(e){return e.trim()})},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},60271:(e,t,r)=>{"use strict";var i=r(95929);function n(e){return Object.keys(e).sort().reduce(function(t,r){return t[r]=e[r],t},{})}var s={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:s._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach(function(i){r.push({indexName:e,params:s._getDisjunctiveFacetSearchParams(t,i)})}),t.getRefinedHierarchicalFacets().forEach(function(i){var n=t.getHierarchicalFacetByName(i),a=t.getHierarchicalRefinement(i),c=t._getHierarchicalFacetSeparator(n);if(a.length>0&&a[0].split(c).length>1){var o=a[0].split(c).slice(0,-1).reduce(function(e,t,r){return e.concat({attribute:n.attributes[r],value:0===r?t:[e[e.length-1].value,t].join(c)})},[]);o.forEach(function(i,a){var c=s._getDisjunctiveFacetSearchParams(t,i.attribute,0===a);function u(e){return n.attributes.some(function(t){return t===e.split(":")[0]})}var h=(c.facetFilters||[]).reduce(function(e,t){if(Array.isArray(t)){var r=t.filter(function(e){return!u(e)});r.length>0&&e.push(r)}return"string"!=typeof t||u(t)||e.push(t),e},[]),l=o[a-1];a>0?c.facetFilters=h.concat(l.attribute+":"+l.value):h.length>0?c.facetFilters=h:delete c.facetFilters,r.push({indexName:e,params:c})})}}),r},_getCompositionQueries:function(e){return[{compositionID:e.index,requestBody:{params:s._getCompositionHitsSearchParams(e)}}]},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(s._getHitsHierarchicalFacetsAttributes(e)).sort(),r=s._getFacetFilters(e),a=s._getNumericFilters(e),c=s._getTagFilters(e),o={};return t.length>0&&(o.facets=t.indexOf("*")>-1?["*"]:t),c.length>0&&(o.tagFilters=c),r.length>0&&(o.facetFilters=r),a.length>0&&(o.numericFilters=a),n(i({},e.getQueryParams(),o))},_getCompositionHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets.map(function(t){return e.disjunctiveFacetsRefinements&&e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].length>0?"disjunctive("+t+")":t})).concat(s._getHitsHierarchicalFacetsAttributes(e)).sort(),r=s._getFacetFilters(e),a=s._getNumericFilters(e),c=s._getTagFilters(e),o={};t.length>0&&(o.facets=t.indexOf("*")>-1?["*"]:t),c.length>0&&(o.tagFilters=c),r.length>0&&(o.facetFilters=r),a.length>0&&(o.numericFilters=a);var u=e.getQueryParams();return delete u.highlightPreTag,delete u.highlightPostTag,delete u.index,n(i({},u,o))},_getDisjunctiveFacetSearchParams:function(e,t,r){var a=s._getFacetFilters(e,t,r),c=s._getNumericFilters(e,t),o=s._getTagFilters(e),u={hitsPerPage:0,page:0,analytics:!1,clickAnalytics:!1};o.length>0&&(u.tagFilters=o);var h=e.getHierarchicalFacetByName(t);return u.facets=h?s._getDisjunctiveHierarchicalFacetAttribute(e,h,r):t,c.length>0&&(u.numericFilters=c),a.length>0&&(u.facetFilters=a),n(i({},e.getQueryParams(),u))},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach(function(i){var n=e.numericRefinements[i]||{};Object.keys(n).forEach(function(e){var s=n[e]||[];t!==i&&s.forEach(function(t){if(Array.isArray(t)){var n=t.map(function(t){return i+e+t});r.push(n)}else r.push(i+e+t)})})}),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var i=[],n=e.facetsRefinements||{};Object.keys(n).sort().forEach(function(e){(n[e]||[]).slice().sort().forEach(function(t){i.push(e+":"+t)})});var s=e.facetsExcludes||{};Object.keys(s).sort().forEach(function(e){(s[e]||[]).sort().forEach(function(t){i.push(e+":-"+t)})});var a=e.disjunctiveFacetsRefinements||{};Object.keys(a).sort().forEach(function(e){var r=a[e]||[];if(e!==t&&r&&0!==r.length){var n=[];r.slice().sort().forEach(function(t){n.push(e+":"+t)}),i.push(n)}});var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).sort().forEach(function(n){var s=(c[n]||[])[0];if(void 0!==s){var a,o,u=e.getHierarchicalFacetByName(n),h=e._getHierarchicalFacetSeparator(u),l=e._getHierarchicalRootPath(u);if(t===n){if(-1===s.indexOf(h)||!l&&!0===r||l&&l.split(h).length===s.split(h).length)return;l?(o=l.split(h).length-1,s=l):(o=s.split(h).length-2,s=s.slice(0,s.lastIndexOf(h))),a=u.attributes[o]}else o=s.split(h).length-1,a=u.attributes[o];a&&i.push([a+":"+s])}}),i},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce(function(t,r){var i=e.getHierarchicalRefinement(r.name)[0];if(!i)return t.push(r.attributes[0]),t;var n=e._getHierarchicalFacetSeparator(r),s=i.split(n).length,a=r.attributes.slice(0,s+1);return t.concat(a)},[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var i=e._getHierarchicalFacetSeparator(t);if(!0===r){var n=e._getHierarchicalRootPath(t),s=0;return n&&(s=n.split(i).length),[t.attributes[s]]}var a=(e.getHierarchicalRefinement(t.name)[0]||"").split(i).length-1;return t.attributes.slice(0,a+1)},getSearchForFacetQuery:function(e,t,r,a){var c=a.isDisjunctiveFacet(e)?a.clearRefinements(e):a,o={facetQuery:t,facetName:e};return"number"==typeof r&&(o.maxFacetHits=r),n(i({},s._getHitsSearchParams(c),o))}};e.exports=s},61672:e=>{"use strict";e.exports=function(e){return e&&Object.keys(e).length>0}},63024:(e,t,r)=>{"use strict";var i=r(28181),n=r(50029),s=r(93310).escapeFacetValue,a=r(25669),c=r(95929),o=r(61672),u=r(20548),h=r(95290),l=r(72028),f=r(60271),m=r(59740),d=r(56386),p=r(33032),g=r(21575);function v(e,t,r,i){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+g+")"),this.setClient(e);var n=r||{};n.index=t,this.state=m.make(n),this.recommendState=new h({params:n.recommendState}),this.lastResults=null,this.lastRecommendResults=null,this._queryId=0,this._recommendQueryId=0,this._lastQueryIdReceived=-1,this._lastRecommendQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0,this._currentNbRecommendQueries=0,this._searchResultsOptions=i,this._recommendCache={}}function y(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function R(){return this.state.page}a(v,i),v.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},v.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},v.prototype.searchWithComposition=function(){return this._runComposition({onlyWithDerivedHelpers:!0}),this},v.prototype.recommend=function(){return this._recommend(),this},v.prototype.getQuery=function(){var e=this.state;return f._getHitsSearchParams(e)},v.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,i=f._getQueries(r.index,r),n=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(i).then(function(e){return n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),{content:new d(r,e.results),state:r,_originalResponse:e}},function(e){throw n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),e});this.client.search(i).then(function(e){n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),t(null,new d(r,e.results),r)}).catch(function(e){n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),t(e,null,r)})},v.prototype.findAnswers=function(e){console.warn("[algoliasearch-helper] answers is no longer supported");var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var i=r.getModifiedState(t),n=c({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:u(f._getHitsSearchParams(i),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),s="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(s);var a=this.client.initIndex(i.index);if("function"!=typeof a.findAnswers)throw new Error(s);return a.findAnswers(i.query,e.queryLanguages,n)},v.prototype.searchForFacetValues=function(e,t,r,i){var n="function"==typeof this.client.searchForFacetValues&&"function"!=typeof this.client.searchForFacets,a="function"==typeof this.client.initIndex;if(!n&&!a&&"function"!=typeof this.client.search)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var c=this.state.setQueryParameters(i||{}),o=c.isDisjunctiveFacet(e),u=f.getSearchForFacetQuery(e,t,r,c);this._currentNbQueries++;var h,l=this;n?h=this.client.searchForFacetValues([{indexName:c.index,params:u}]):a?h=this.client.initIndex(c.index).searchForFacetValues(u):(delete u.facetName,h=this.client.search([{type:"facet",facet:e,indexName:c.index,params:u}]).then(function(e){return e.results[0]})),this.emit("searchForFacetValues",{state:c,facet:e,query:t});var m=this.lastResults&&this.lastResults.index===c.index&&this.lastResults.renderingContent&&this.lastResults.renderingContent.facetOrdering&&this.lastResults.renderingContent.facetOrdering.values&&this.lastResults.renderingContent.facetOrdering.values[e]&&this.lastResults.renderingContent.facetOrdering.values[e].hide||[];return h.then(function(t){return l._currentNbQueries--,0===l._currentNbQueries&&l.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach(function(r,i){m.indexOf(r.value)>-1?t.facetHits.splice(i,1):(r.escapedValue=s(r.value),r.isRefined=o?c.isDisjunctiveFacetRefined(e,r.escapedValue):c.isFacetRefined(e,r.escapedValue))}),t},function(e){throw l._currentNbQueries--,0===l._currentNbQueries&&l.emit("searchQueueEmpty"),e})},v.prototype.searchForCompositionFacetValues=function(e,t,r,i){if("function"!=typeof this.client.searchForFacetValues)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues");var n=this.state.setQueryParameters(i||{}),a=n.isDisjunctiveFacet(e);this._currentNbQueries++;var c,o=this;return c=this.client.searchForFacetValues({compositionID:n.index,facetName:e,searchForFacetValuesRequest:{params:{query:t,maxFacetHits:r,searchQuery:f._getCompositionHitsSearchParams(n)}}}),this.emit("searchForFacetValues",{state:n,facet:e,query:t}),c.then(function(t){return o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),(t=t.results[0]).facetHits.forEach(function(t){t.escapedValue=s(t.value),t.isRefined=a?n.isDisjunctiveFacetRefined(e,t.escapedValue):n.isFacetRefined(e,t.escapedValue)}),t},function(e){throw o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),e})},v.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},v.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},v.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},v.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},v.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},v.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},v.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},v.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},v.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},v.prototype.addFrequentlyBoughtTogether=function(e){return this._recommendChange({state:this.recommendState.addFrequentlyBoughtTogether(e)}),this},v.prototype.addRelatedProducts=function(e){return this._recommendChange({state:this.recommendState.addRelatedProducts(e)}),this},v.prototype.addTrendingItems=function(e){return this._recommendChange({state:this.recommendState.addTrendingItems(e)}),this},v.prototype.addTrendingFacets=function(e){return this._recommendChange({state:this.recommendState.addTrendingFacets(e)}),this},v.prototype.addLookingSimilar=function(e){return this._recommendChange({state:this.recommendState.addLookingSimilar(e)}),this},v.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},v.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},v.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},v.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},v.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},v.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},v.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},v.prototype.removeFrequentlyBoughtTogether=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeRelatedProducts=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeTrendingItems=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeTrendingFacets=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeLookingSimilar=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},v.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},v.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},v.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},v.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},v.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},v.prototype.setCurrentPage=y,v.prototype.setPage=y,v.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},v.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},v.prototype.setState=function(e){return this._change({state:m.make(e),isPageReset:!1}),this},v.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new m(e),this},v.prototype.hasRefinements=function(e){return!!o(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},v.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},v.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},v.prototype.hasTag=function(e){return this.state.isTagRefined(e)},v.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},v.prototype.getIndex=function(){return this.state.index},v.prototype.getCurrentPage=R,v.prototype.getPage=R,v.prototype.getTags=function(){return this.state.tagRefinements},v.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach(function(e){t.push({value:e,type:"conjunctive"})}),this.state.getExcludeRefinements(e).forEach(function(e){t.push({value:e,type:"exclude"})});else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach(function(e){t.push({value:e,type:"disjunctive"})})}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach(function(e){var i=r[e];t.push({value:i,operator:e,type:"numeric"})}),t},v.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},v.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},v.prototype._search=function(e){var t=this.state,r=[],i=[];e.onlyWithDerivedHelpers||(i=f._getQueries(t.index,t),r.push({state:t,queriesCount:i.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var n=this.derivedHelpers.map(function(e){var i=e.getModifiedState(t),n=i.index?f._getQueries(i.index,i):[];return r.push({state:i,queriesCount:n.length,helper:e}),e.emit("search",{state:i,results:e.lastResults}),n}),s=Array.prototype.concat.apply(i,n),a=this._queryId++;if(this._currentNbQueries++,!s.length)return Promise.resolve({results:[]}).then(this._dispatchAlgoliaResponse.bind(this,r,a));try{this.client.search(s).then(this._dispatchAlgoliaResponse.bind(this,r,a)).catch(this._dispatchAlgoliaError.bind(this,a))}catch(c){this.emit("error",{error:c})}},v.prototype._runComposition=function(){var e=this.state,t=[],r=this.derivedHelpers.map(function(r){var i=r.getModifiedState(e),n=f._getCompositionQueries(i);return t.push({state:i,queriesCount:n.length,helper:r}),r.emit("search",{state:i,results:r.lastResults}),n}),i=Array.prototype.concat.apply([],r),n=this._queryId++;if(this._currentNbQueries++,!i.length)return Promise.resolve({results:[]}).then(this._dispatchAlgoliaResponse.bind(this,t,n));if(i.length>1)throw new Error("Only one query is allowed when using a composition.");var s=i[0];try{this.client.search(s).then(this._dispatchAlgoliaResponse.bind(this,t,n)).catch(this._dispatchAlgoliaError.bind(this,n))}catch(a){this.emit("error",{error:a})}},v.prototype._recommend=function(){var e=this.state,t=this.recommendState,r=this.getIndex(),i=[{state:t,index:r,helper:this}],n=t.params.map(function(e){return e.$$id});this.emit("fetch",{recommend:{state:t,results:this.lastRecommendResults}});var s=this._recommendCache,a=this.derivedHelpers.map(function(t){var r=t.getModifiedState(e).index;if(!r)return[];var a=t.getModifiedRecommendState(new h);return i.push({state:a,index:r,helper:t}),n=Array.prototype.concat.apply(n,a.params.map(function(e){return e.$$id})),t.emit("fetch",{recommend:{state:a,results:t.lastRecommendResults}}),a._buildQueries(r,s)}),c=Array.prototype.concat.apply(this.recommendState._buildQueries(r,s),a);if(0!==c.length)if(c.length>0&&void 0===this.client.getRecommendations)console.warn("Please update algoliasearch/lite to the latest version in order to use recommend widgets.");else{var o=this._recommendQueryId++;this._currentNbRecommendQueries++;try{this.client.getRecommendations(c).then(this._dispatchRecommendResponse.bind(this,o,i,n)).catch(this._dispatchRecommendError.bind(this,o))}catch(u){this.emit("error",{error:u})}}},v.prototype._dispatchAlgoliaResponse=function(e,t,r){var i=this;if(!(t0},v.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},v.prototype._recommendChange=function(e){var t=e.state;t!==this.recommendState&&(this.recommendState=t,this.emit("recommend:change",{search:{results:this.lastResults,state:this.state},recommend:{results:this.lastRecommendResults,state:this.recommendState}}))},v.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},v.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+g+")"),this.client=e),this},v.prototype.getClient=function(){return this.client},v.prototype.derive=function(e,t){var r=new n(this,e,t);return this.derivedHelpers.push(r),r},v.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},v.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=v},64217:e=>{"use strict";e.exports=function(){return Array.prototype.slice.call(arguments).reduceRight(function(e,t){return Object.keys(Object(t)).forEach(function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])}),e},{})}},67802:(e,t,r)=>{"use strict";var i=r(82898);e.exports=function(e,t){var r=(t||[]).map(function(e){return e.split(":")});return e.reduce(function(e,t){var n=t.split(":"),s=i(r,function(e){return e[0]===n[0]});return n.length>1||!s?(e[0].push(n[0]),e[1].push(n[1]),e):(e[0].push(s[0]),e[1].push(s[1]),e)},[[],[]])}},70095:e=>{"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},72028:e=>{"use strict";function t(e,t){this._state=e,this._rawResults={};var r=this;e.params.forEach(function(e){var i=e.$$id;r[i]=t[i],r._rawResults[i]=t[i]})}t.prototype={constructor:t},e.exports=t},82898:e=>{"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r{"use strict";e.exports={escapeFacetValue:function(e){return"string"!=typeof e?e:String(e).replace(/^-/,"\\-")},unescapeFacetValue:function(e){return"string"!=typeof e?e:e.replace(/^\\-/,"-")}}},95290:e=>{"use strict";function t(e){e=e||{},this.params=e.params||[]}t.prototype={constructor:t,addParams:function(e){var r=this.params.slice();return r.push(e),new t({params:r})},removeParams:function(e){return new t({params:this.params.filter(function(t){return t.$$id!==e})})},addFrequentlyBoughtTogether:function(e){return this.addParams(Object.assign({},e,{model:"bought-together"}))},addRelatedProducts:function(e){return this.addParams(Object.assign({},e,{model:"related-products"}))},addTrendingItems:function(e){return this.addParams(Object.assign({},e,{model:"trending-items"}))},addTrendingFacets:function(e){return this.addParams(Object.assign({},e,{model:"trending-facets"}))},addLookingSimilar:function(e){return this.addParams(Object.assign({},e,{model:"looking-similar"}))},_buildQueries:function(e,t){return this.params.filter(function(e){return void 0===t[e.$$id]}).map(function(t){var r=Object.assign({},t,{indexName:e,threshold:t.threshold||0});return delete r.$$id,r})}},e.exports=t},95929:e=>{"use strict";function t(e){return"object"==typeof e&&null!==e?i(Array.isArray(e)?[]:{},e):e}function r(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function i(e,n){if(e===n)return e;for(var s in n)if(Object.prototype.hasOwnProperty.call(n,s)&&"__proto__"!==s&&"constructor"!==s){var a=n[s],c=e[s];void 0!==c&&void 0===a||(r(c)&&r(a)?e[s]=i(c,a):e[s]=t(a))}return e}e.exports=function(e){r(e)||(e={});for(var t=1,n=arguments.length;t{"use strict";e.exports=function(e){return function(t,r){var i=e.hierarchicalFacets[r],u=e.hierarchicalFacetsRefinements[i.name]&&e.hierarchicalFacetsRefinements[i.name][0]||"",h=e._getHierarchicalFacetSeparator(i),l=e._getHierarchicalRootPath(i),f=e._getHierarchicalShowParentLevel(i),m=s(e._getHierarchicalFacetSortBy(i)),d=t.every(function(e){return e.exhaustive}),p=function(e,t,r,i,s){return function(u,h,l){var f=u;if(l>0){var m=0;for(f=u;m{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>c,frontMatter:()=>d,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","source":"@site/versioned_docs/version-0.12.1/rules/android/unused_kotlin_android_extensions.md","sourceDirName":"rules/android","slug":"/rules/unused_kotlin_android_extensions","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_kotlin_android_extensions","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/android/unused_kotlin_android_extensions.md","tags":[],"version":"0.12.1","frontMatter":{"id":"unused_kotlin_android_extensions","slug":"/rules/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","sidebar_label":"Unused Kotlin Android Extensions"},"sidebar":"Docs","previous":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.1/rules/disable_view_binding"}}');var t=s(23420),i=s(65404);const d={id:"unused_kotlin_android_extensions",slug:"/rules/unused_kotlin_android_extensions",title:"Unused Kotlin Android Extensions",sidebar_label:"Unused Kotlin Android Extensions"},r=void 0,u={},l=[];function a(e){const n={p:"p",...(0,i.R)(),...e.components};return(0,t.jsx)(n.p,{children:"Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any\nsynthetic imports or deprecated @Parcelize annotation"})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var o=s(36672);const t={},i=o.createContext(t);function d(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1e828d0d.eae29f3f.js b/assets/js/1e828d0d.eae29f3f.js new file mode 100644 index 0000000000..1e1b448492 --- /dev/null +++ b/assets/js/1e828d0d.eae29f3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7259],{65404:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>c});var d=s(36672);const t={},u=d.createContext(t);function o(e){const n=d.useContext(u);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),d.createElement(u.Provider,{value:n},e.children)}},87612:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>d,toc:()=>i});const d=JSON.parse('{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.12.3/rules/unused_dependency.md","sourceDirName":"rules","slug":"/rules/unused_dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/unused_dependency.md","tags":[],"version":"0.12.3","frontMatter":{"id":"unused_dependency","slug":"/rules/unused_dependency","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.3/ci-workflow"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.3/rules/must_be_api"}}');var t=s(23420),u=s(65404);const o={id:"unused_dependency",slug:"/rules/unused_dependency",title:"Unused Dependency",sidebar_label:"Unused Dependency"},c=void 0,r={},i=[];function l(e){const n={p:"p",...(0,u.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,t.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/assets/js/1ecac929.4026d79c.js b/assets/js/1ecac929.4026d79c.js new file mode 100644 index 0000000000..f8cdb119fb --- /dev/null +++ b/assets/js/1ecac929.4026d79c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7930],{65404:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>a});var t=o(36672);const r={},i=t.createContext(r);function s(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(i.Provider,{value:n},e.children)}},68255:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.12.3/rules/compiler/use_anvil_factory_generation.md","sourceDirName":"rules/compiler","slug":"/rules/use_anvil_factory_generation","permalink":"/ModuleCheck/docs/0.12.3/rules/use_anvil_factory_generation","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/compiler/use_anvil_factory_generation.md","tags":[],"version":"0.12.3","frontMatter":{"id":"use_anvil_factory_generation","slug":"/rules/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","sidebar_label":"Could Use Anvil Factory Generation"},"sidebar":"Docs","previous":{"title":"Project Depth","permalink":"/ModuleCheck/docs/0.12.3/rules/project_depth"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_processor"}}');var r=o(23420),i=o(65404);const s={id:"use_anvil_factory_generation",slug:"/rules/use_anvil_factory_generation",title:"Could Use Anvil Factory Generation",sidebar_label:"Could Use Anvil Factory Generation"},a=void 0,l={},c=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or\nSubcomponents, and it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.8cf8f13b.js b/assets/js/1f391b9e.8cf8f13b.js new file mode 100644 index 0000000000..e1e8b2784e --- /dev/null +++ b/assets/js/1f391b9e.8cf8f13b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6061],{65314:(e,a,s)=>{s.r(a),s.d(a,{default:()=>x});s(36672);var t=s(13526),d=s(10352),l=s(40987),c=s(32592),r=s(2444),i=s(95992),n=s(36711),o=s(10748);const m={mdxPageWrapper:"mdxPageWrapper_L88T"};var p=s(23420);function x(e){const{content:a}=e,{metadata:s,assets:x}=a,{title:g,editUrl:h,description:j,frontMatter:A,lastUpdatedBy:u,lastUpdatedAt:v}=s,{keywords:_,wrapperClassName:k,hide_table_of_contents:w}=A,f=x.image??A.image,N=!!(h||v||u);return(0,p.jsx)(d.e3,{className:(0,t.A)(k??l.G.wrapper.mdxPages,l.G.page.mdxPage),children:(0,p.jsxs)(c.A,{children:[(0,p.jsx)(d.be,{title:g,description:j,keywords:_,image:f}),(0,p.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,p.jsxs)("div",{className:(0,t.A)("row",m.mdxPageWrapper),children:[(0,p.jsxs)("div",{className:(0,t.A)("col",!w&&"col--8"),children:[(0,p.jsx)(n.A,{metadata:s}),(0,p.jsx)("article",{children:(0,p.jsx)(r.A,{children:(0,p.jsx)(a,{})})}),N&&(0,p.jsx)(o.A,{className:(0,t.A)("margin-top--sm",l.G.pages.pageFooterEditMetaRow),editUrl:h,lastUpdatedAt:v,lastUpdatedBy:u})]}),!w&&a.toc.length>0&&(0,p.jsx)("div",{className:"col col--2",children:(0,p.jsx)(i.A,{toc:a.toc,minHeadingLevel:A.toc_min_heading_level,maxHeadingLevel:A.toc_max_heading_level})})]})})]})})}}}]); \ No newline at end of file diff --git a/assets/js/20c870cb.fc120f02.js b/assets/js/20c870cb.fc120f02.js new file mode 100644 index 0000000000..85f7aebffc --- /dev/null +++ b/assets/js/20c870cb.fc120f02.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[314],{65404:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>r});var d=i(36672);const s={},o=d.createContext(s);function t(e){const n=d.useContext(o);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),d.createElement(o.Provider,{value:n},e.children)}},74503:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>t,metadata:()=>d,toc:()=>l});const d=JSON.parse('{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.11.0/rules/android/disable_viewbinding.md","sourceDirName":"rules/android","slug":"/rules/android/disable_viewbinding","permalink":"/ModuleCheck/docs/0.11.0/rules/android/disable_viewbinding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/android/disable_viewbinding.md","tags":[],"version":"0.11.0","frontMatter":{"id":"disable_viewbinding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.11.0/rules/android/disable_resources"}}');var s=i(23420),o=i(65404);const t={id:"disable_viewbinding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,a={},l=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/assets/js/2112.2b03aa07.js b/assets/js/2112.2b03aa07.js new file mode 100644 index 0000000000..96bd2d8327 --- /dev/null +++ b/assets/js/2112.2b03aa07.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2112],{12112:(t,i,e)=>{e.d(i,{diagram:()=>tt});var s=e(24199),a=e(47794),n=e(95379),h=e(27293),o=e(61274),r=function(){var t=(0,h.K2)(function(t,i,e,s){for(e=e||{},s=t.length;s--;e[t[s]]=i);return e},"o"),i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],a=[1,5],n=[1,6],o=[1,7],r=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],c=[1,26],g=[1,28],u=[1,29],x=[1,30],d=[1,31],p=[1,32],f=[1,33],y=[1,34],m=[1,35],b=[1,36],A=[1,37],w=[1,43],S=[1,42],C=[1,47],k=[1,50],_=[1,10,12,14,16,18,19,21,23,34,35,36],T=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],R=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],D=[1,64],L={trace:(0,h.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:(0,h.K2)(function(t,i,e,s,a,n,h){var o=n.length-1;switch(a){case 5:s.setOrientation(n[o]);break;case 9:s.setDiagramTitle(n[o].text.trim());break;case 12:s.setLineData({text:"",type:"text"},n[o]);break;case 13:s.setLineData(n[o-1],n[o]);break;case 14:s.setBarData({text:"",type:"text"},n[o]);break;case 15:s.setBarData(n[o-1],n[o]);break;case 16:this.$=n[o].trim(),s.setAccTitle(this.$);break;case 17:case 18:this.$=n[o].trim(),s.setAccDescription(this.$);break;case 19:case 27:this.$=n[o-1];break;case 20:this.$=[Number(n[o-2]),...n[o]];break;case 21:this.$=[Number(n[o])];break;case 22:s.setXAxisTitle(n[o]);break;case 23:s.setXAxisTitle(n[o-1]);break;case 24:s.setXAxisTitle({type:"text",text:""});break;case 25:s.setXAxisBand(n[o]);break;case 26:s.setXAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 28:this.$=[n[o-2],...n[o]];break;case 29:this.$=[n[o]];break;case 30:s.setYAxisTitle(n[o]);break;case 31:s.setYAxisTitle(n[o-1]);break;case 32:s.setYAxisTitle({type:"text",text:""});break;case 33:s.setYAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 37:case 38:this.$={text:n[o],type:"text"};break;case 39:this.$={text:n[o],type:"markdown"};break;case 40:this.$=n[o];break;case 41:this.$=n[o-1]+""+n[o]}},"anonymous"),table:[t(i,e,{3:1,4:2,7:4,5:s,34:a,35:n,36:o}),{1:[3]},t(i,e,{4:2,7:4,3:8,5:s,34:a,35:n,36:o}),t(i,e,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:a,35:n,36:o}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(r,[2,34]),t(r,[2,35]),t(r,[2,36]),{1:[2,1]},t(i,e,{4:2,7:4,3:21,5:s,34:a,35:n,36:o}),{1:[2,3]},t(r,[2,5]),t(i,[2,7],{4:22,34:a,35:n,36:o}),{11:23,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:39,13:38,24:w,27:S,29:40,30:41,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:45,15:44,27:C,33:46,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:49,17:48,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:52,17:51,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{20:[1,53]},{22:[1,54]},t(_,[2,18]),{1:[2,2]},t(_,[2,8]),t(_,[2,9]),t(T,[2,37],{40:55,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A}),t(T,[2,38]),t(T,[2,39]),t(R,[2,40]),t(R,[2,42]),t(R,[2,43]),t(R,[2,44]),t(R,[2,45]),t(R,[2,46]),t(R,[2,47]),t(R,[2,48]),t(R,[2,49]),t(R,[2,50]),t(R,[2,51]),t(_,[2,10]),t(_,[2,22],{30:41,29:56,24:w,27:S}),t(_,[2,24]),t(_,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,11]),t(_,[2,30],{33:60,27:C}),t(_,[2,32]),{31:[1,61]},t(_,[2,12]),{17:62,24:k},{25:63,27:D},t(_,[2,14]),{17:65,24:k},t(_,[2,16]),t(_,[2,17]),t(R,[2,41]),t(_,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(_,[2,31]),{27:[1,69]},t(_,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(_,[2,15]),t(_,[2,26]),t(_,[2,27]),{11:59,32:72,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,33]),t(_,[2,19]),{25:73,27:D},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:(0,h.K2)(function(t,i){if(!i.recoverable){var e=new Error(t);throw e.hash=i,e}this.trace(t)},"parseError"),parse:(0,h.K2)(function(t){var i=this,e=[0],s=[],a=[null],n=[],o=this.table,r="",l=0,c=0,g=0,u=n.slice.call(arguments,1),x=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);x.setInput(t,d.yy),d.yy.lexer=x,d.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var f=x.yylloc;n.push(f);var y=x.options&&x.options.ranges;function m(){var t;return"number"!=typeof(t=s.pop()||x.lex()||1)&&(t instanceof Array&&(t=(s=t).pop()),t=i.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,h.K2)(function(t){e.length=e.length-2*t,a.length=a.length-t,n.length=n.length-t},"popStack"),(0,h.K2)(m,"lex");for(var b,A,w,S,C,k,_,T,R,D={};;){if(w=e[e.length-1],this.defaultActions[w]?S=this.defaultActions[w]:(null==b&&(b=m()),S=o[w]&&o[w][b]),void 0===S||!S.length||!S[0]){var L="";for(k in R=[],o[w])this.terminals_[k]&&k>2&&R.push("'"+this.terminals_[k]+"'");L=x.showPosition?"Parse error on line "+(l+1)+":\n"+x.showPosition()+"\nExpecting "+R.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[b]||b,line:x.yylineno,loc:f,expected:R})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+b);switch(S[0]){case 1:e.push(b),a.push(x.yytext),n.push(x.yylloc),e.push(S[1]),b=null,A?(b=A,A=null):(c=x.yyleng,r=x.yytext,l=x.yylineno,f=x.yylloc,g>0&&g--);break;case 2:if(_=this.productions_[S[1]][1],D.$=a[a.length-_],D._$={first_line:n[n.length-(_||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(_||1)].first_column,last_column:n[n.length-1].last_column},y&&(D._$.range=[n[n.length-(_||1)].range[0],n[n.length-1].range[1]]),void 0!==(C=this.performAction.apply(D,[r,c,l,d.yy,S[1],a,n].concat(u))))return C;_&&(e=e.slice(0,-1*_*2),a=a.slice(0,-1*_),n=n.slice(0,-1*_)),e.push(this.productions_[S[1]][0]),a.push(D.$),n.push(D._$),T=o[e[e.length-2]][e[e.length-1]],e.push(T);break;case 3:return!0}}return!0},"parse")},P=function(){return{EOF:1,parseError:(0,h.K2)(function(t,i){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,i)},"parseError"),setInput:(0,h.K2)(function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,h.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,h.K2)(function(t){var i=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===s.length?this.yylloc.first_column:0)+s[s.length-e.length].length-e[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},"unput"),more:(0,h.K2)(function(){return this._more=!0,this},"more"),reject:(0,h.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,h.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,h.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,h.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,h.K2)(function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+i+"^"},"showPosition"),test_match:(0,h.K2)(function(t,i){var e,s,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),(s=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var n in a)this[n]=a[n];return!1}return!1},"test_match"),next:(0,h.K2)(function(){if(this.done)return this.EOF;var t,i,e,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),n=0;ni[0].length)){if(i=e,s=n,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,a[n])))return t;if(this._backtrack){i=!1;continue}return!1}if(!this.options.flex)break}return i?!1!==(t=this.test_match(i,a[s]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,h.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,h.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,h.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,h.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,h.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,h.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,h.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,h.K2)(function(t,i,e,s){switch(e){case 0:case 1:case 5:case 43:break;case 2:case 3:return this.popState(),34;case 4:return 34;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:case 25:case 27:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";case 17:return this.pushState("axis_data"),"Y_AXIS";case 18:return this.pushState("axis_band_data"),24;case 19:return 31;case 20:return this.pushState("data"),16;case 21:return this.pushState("data"),18;case 22:return this.pushState("data_inner"),24;case 23:return 27;case 24:return this.popState(),26;case 26:this.pushState("string");break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 44:return 35;case 45:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}}}();function E(){this.yy={}}return L.lexer=P,(0,h.K2)(E,"Parser"),E.prototype=L,L.Parser=E,new E}();r.parser=r;var l=r;function c(t){return"bar"===t.type}function g(t){return"band"===t.type}function u(t){return"linear"===t.type}(0,h.K2)(c,"isBarPlot"),(0,h.K2)(g,"isBandAxisData"),(0,h.K2)(u,"isLinearAxisData");var x=class{constructor(t){this.parentGroup=t}static{(0,h.K2)(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,i){if(!this.parentGroup)return{width:t.reduce((t,i)=>Math.max(i.length,t),0)*i,height:i};const e={width:0,height:0},a=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",i);for(const n of t){const t=(0,s.W6)(a,1,n),h=t?t.width:n.length*i,o=t?t.height:i;e.width=Math.max(e.width,h),e.height=Math.max(e.height,o)}return a.remove(),e}},d=class{constructor(t,i,e,s){this.axisConfig=t,this.title=i,this.textDimensionCalculator=e,this.axisThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{(0,h.K2)(this,"BaseAxis")}setRange(t){this.range=t,"left"===this.axisPosition||"right"===this.axisPosition?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){const t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>2*this.outerPadding&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let i=t.height;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.width;this.outerPadding=Math.min(e.width/2,s);const a=e.height+2*this.axisConfig.labelPadding;this.labelTextHeight=e.height,a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-i}calculateSpaceIfDrawnVertical(t){let i=t.width;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.height;this.outerPadding=Math.min(e.height/2,s);const a=e.width+2*this.axisConfig.labelPadding;a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width-i,this.boundingRect.height=t.height}calculateSpace(t){return"left"===this.axisPosition||"right"===this.axisPosition?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${i},${this.boundingRect.y} L ${i},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(t),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const i=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${i},${this.getScaleValue(t)} L ${i-this.axisConfig.tickLength},${this.getScaleValue(t)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${i} L ${this.getScaleValue(t)},${i+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+2*this.axisConfig.titlePadding:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${i+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(t)},${i+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if("left"===this.axisPosition)return this.getDrawableElementsForLeftAxis();if("right"===this.axisPosition)throw Error("Drawing of right axis is not implemented");return"bottom"===this.axisPosition?this.getDrawableElementsForBottomAxis():"top"===this.axisPosition?this.getDrawableElementsForTopAxis():[]}},p=class extends d{static{(0,h.K2)(this,"BandAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.categories=e,this.scale=(0,o.WH)().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=(0,o.WH)().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),h.Rm.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}},f=class extends d{static{(0,h.K2)(this,"LinearAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.domain=e,this.scale=(0,o.m4Y)().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const t=[...this.domain];"left"===this.axisPosition&&t.reverse(),this.scale=(0,o.m4Y)().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}};function y(t,i,e,s){const a=new x(s);return g(t)?new p(i,e,t.categories,t.title,a):new f(i,e,[t.min,t.max],t.title,a)}(0,h.K2)(y,"getAxis");var m=class{constructor(t,i,e,s){this.textDimensionCalculator=t,this.chartConfig=i,this.chartData=e,this.chartThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{(0,h.K2)(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){const i=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),e=Math.max(i.width,t.width),s=i.height+2*this.chartConfig.titlePadding;return i.width<=e&&i.height<=s&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=e,this.boundingRect.height=s,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};function b(t,i,e,s){const a=new x(s);return new m(a,t,i,e)}(0,h.K2)(b,"getChartTitleComponent");var A=class{constructor(t,i,e,s,a){this.plotData=t,this.xAxis=i,this.yAxis=e,this.orientation=s,this.plotIndex=a}static{(0,h.K2)(this,"LinePlot")}getDrawableElement(){const t=this.plotData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]);let i;return i="horizontal"===this.orientation?(0,o.n8j)().y(t=>t[0]).x(t=>t[1])(t):(0,o.n8j)().x(t=>t[0]).y(t=>t[1])(t),i?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:i,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}},w=class{constructor(t,i,e,s,a,n){this.barData=t,this.boundingRect=i,this.xAxis=e,this.yAxis=s,this.orientation=a,this.plotIndex=n}static{(0,h.K2)(this,"BarPlot")}getDrawableElement(){const t=this.barData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]),i=.95*Math.min(2*this.xAxis.getAxisOuterPadding(),this.xAxis.getTickDistance()),e=i/2;return"horizontal"===this.orientation?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(t=>({x:this.boundingRect.x,y:t[0]-e,height:i,width:t[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(t=>({x:t[0]-e,y:t[1],width:i,height:this.boundingRect.y+this.boundingRect.height-t[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}},S=class{constructor(t,i,e){this.chartConfig=t,this.chartData=i,this.chartThemeConfig=e,this.boundingRect={x:0,y:0,width:0,height:0}}static{(0,h.K2)(this,"BasePlot")}setAxes(t,i){this.xAxis=t,this.yAxis=i}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!this.xAxis||!this.yAxis)throw Error("Axes must be passed to render Plots");const t=[];for(const[i,e]of this.chartData.plots.entries())switch(e.type){case"line":{const s=new A(e,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}break;case"bar":{const s=new w(e,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}}return t}};function C(t,i,e){return new S(t,i,e)}(0,h.K2)(C,"getPlotComponent");var k,_=class{constructor(t,i,e,s){this.chartConfig=t,this.chartData=i,this.componentStore={title:b(t,i,e,s),plot:C(t,i,e),xAxis:y(i.xAxis,t.xAxis,{titleColor:e.xAxisTitleColor,labelColor:e.xAxisLabelColor,tickColor:e.xAxisTickColor,axisLineColor:e.xAxisLineColor},s),yAxis:y(i.yAxis,t.yAxis,{titleColor:e.yAxisTitleColor,labelColor:e.yAxisLabelColor,tickColor:e.yAxisTickColor,axisLineColor:e.yAxisLineColor},s)}}static{(0,h.K2)(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),n=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),h=this.componentStore.plot.calculateSpace({width:a,height:n});t-=h.width,i-=h.height,h=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),s=h.height,i-=h.height,this.componentStore.xAxis.setAxisPosition("bottom"),h=this.componentStore.xAxis.calculateSpace({width:t,height:i}),i-=h.height,this.componentStore.yAxis.setAxisPosition("left"),h=this.componentStore.yAxis.calculateSpace({width:t,height:i}),e=h.width,t-=h.width,t>0&&(a+=t,t=0),i>0&&(n+=i,i=0),this.componentStore.plot.calculateSpace({width:a,height:n}),this.componentStore.plot.setBoundingBoxXY({x:e,y:s}),this.componentStore.xAxis.setRange([e,e+a]),this.componentStore.xAxis.setBoundingBoxXY({x:e,y:s+n}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:s}),this.chartData.plots.some(t=>c(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=0,n=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),h=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),o=this.componentStore.plot.calculateSpace({width:n,height:h});t-=o.width,i-=o.height,o=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),e=o.height,i-=o.height,this.componentStore.xAxis.setAxisPosition("left"),o=this.componentStore.xAxis.calculateSpace({width:t,height:i}),t-=o.width,s=o.width,this.componentStore.yAxis.setAxisPosition("top"),o=this.componentStore.yAxis.calculateSpace({width:t,height:i}),i-=o.height,a=e+o.height,t>0&&(n+=t,t=0),i>0&&(h+=i,i=0),this.componentStore.plot.calculateSpace({width:n,height:h}),this.componentStore.plot.setBoundingBoxXY({x:s,y:a}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:s,y:e}),this.componentStore.xAxis.setRange([a,a+h]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(t=>c(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){"horizontal"===this.chartConfig.chartOrientation?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const i of Object.values(this.componentStore))t.push(...i.getDrawableElements());return t}},T=class{static{(0,h.K2)(this,"XYChartBuilder")}static build(t,i,e,s){return new _(t,i,e,s).getDrawableElement()}},R=0,D=$(),L=I(),P=M(),E=L.plotColorPalette.split(",").map(t=>t.trim()),v=!1,K=!1;function I(){const t=(0,h.P$)(),i=(0,h.zj)();return(0,a.$t)(t.xyChart,i.themeVariables.xyChart)}function $(){const t=(0,h.zj)();return(0,a.$t)(h.UI.xyChart,t.xyChart)}function M(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function z(t){const i=(0,h.zj)();return(0,h.jZ)(t.trim(),i)}function B(t){k=t}function W(t){D.chartOrientation="horizontal"===t?"horizontal":"vertical"}function O(t){P.xAxis.title=z(t.text)}function F(t,i){P.xAxis={type:"linear",title:P.xAxis.title,min:t,max:i},v=!0}function N(t){P.xAxis={type:"band",title:P.xAxis.title,categories:t.map(t=>z(t.text))},v=!0}function X(t){P.yAxis.title=z(t.text)}function V(t,i){P.yAxis={type:"linear",title:P.yAxis.title,min:t,max:i},K=!0}function Y(t){const i=Math.min(...t),e=Math.max(...t),s=u(P.yAxis)?P.yAxis.min:1/0,a=u(P.yAxis)?P.yAxis.max:-1/0;P.yAxis={type:"linear",title:P.yAxis.title,min:Math.min(s,i),max:Math.max(a,e)}}function H(t){let i=[];if(0===t.length)return i;if(!v){const i=u(P.xAxis)?P.xAxis.min:1/0,e=u(P.xAxis)?P.xAxis.max:-1/0;F(Math.min(i,1),Math.max(e,t.length))}if(K||Y(t),g(P.xAxis)&&(i=P.xAxis.categories.map((i,e)=>[i,t[e]])),u(P.xAxis)){const e=P.xAxis.min,s=P.xAxis.max,a=(s-e)/(t.length-1),n=[];for(let t=e;t<=s;t+=a)n.push(`${t}`);i=n.map((i,e)=>[i,t[e]])}return i}function U(t){return E[0===t?0:t%E.length]}function j(t,i){const e=H(i);P.plots.push({type:"line",strokeFill:U(R),strokeWidth:2,data:e}),R++}function G(t,i){const e=H(i);P.plots.push({type:"bar",fill:U(R),data:e}),R++}function Q(){if(0===P.plots.length)throw Error("No Plot to render, please provide a plot with some data");return P.title=(0,h.ab)(),T.build(D,P,L,k)}function Z(){return L}function q(){return D}function J(){return P}(0,h.K2)(I,"getChartDefaultThemeConfig"),(0,h.K2)($,"getChartDefaultConfig"),(0,h.K2)(M,"getChartDefaultData"),(0,h.K2)(z,"textSanitizer"),(0,h.K2)(B,"setTmpSVGG"),(0,h.K2)(W,"setOrientation"),(0,h.K2)(O,"setXAxisTitle"),(0,h.K2)(F,"setXAxisRangeData"),(0,h.K2)(N,"setXAxisBand"),(0,h.K2)(X,"setYAxisTitle"),(0,h.K2)(V,"setYAxisRangeData"),(0,h.K2)(Y,"setYAxisRangeFromPlotData"),(0,h.K2)(H,"transformDataWithoutCategory"),(0,h.K2)(U,"getPlotColorFromPalette"),(0,h.K2)(j,"setLineData"),(0,h.K2)(G,"setBarData"),(0,h.K2)(Q,"getDrawableElem"),(0,h.K2)(Z,"getChartThemeConfig"),(0,h.K2)(q,"getChartConfig"),(0,h.K2)(J,"getXYChartData");var tt={parser:l,db:{getDrawableElem:Q,clear:(0,h.K2)(function(){(0,h.IU)(),R=0,D=$(),P={yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]},L=I(),E=L.plotColorPalette.split(",").map(t=>t.trim()),v=!1,K=!1},"clear"),setAccTitle:h.SV,getAccTitle:h.iN,setDiagramTitle:h.ke,getDiagramTitle:h.ab,getAccDescription:h.m7,setAccDescription:h.EI,setOrientation:W,setXAxisTitle:O,setXAxisRangeData:F,setXAxisBand:N,setYAxisTitle:X,setYAxisRangeData:V,setLineData:j,setBarData:G,setTmpSVGG:B,getChartThemeConfig:Z,getChartConfig:q,getXYChartData:J},renderer:{draw:(0,h.K2)((t,i,e,s)=>{const a=s.db,o=a.getChartThemeConfig(),r=a.getChartConfig(),l=a.getXYChartData().plots[0].data.map(t=>t[1]);function c(t){return"top"===t?"text-before-edge":"middle"}function g(t){return"left"===t?"start":"right"===t?"end":"middle"}function u(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,h.K2)(c,"getDominantBaseLine"),(0,h.K2)(g,"getTextAnchor"),(0,h.K2)(u,"getTextTransformation"),h.Rm.debug("Rendering xychart chart\n"+t);const x=(0,n.D)(i),d=x.append("g").attr("class","main"),p=d.append("rect").attr("width",r.width).attr("height",r.height).attr("class","background");(0,h.a$)(x,r.height,r.width,!0),x.attr("viewBox",`0 0 ${r.width} ${r.height}`),p.attr("fill",o.backgroundColor),a.setTmpSVGG(x.append("g").attr("class","mermaid-tmp-group"));const f=a.getDrawableElem(),y={};function m(t){let i=d,e="";for(const[s]of t.entries()){let a=d;s>0&&y[e]&&(a=y[e]),e+=t[s],i=y[e],i||(i=y[e]=a.append("g").attr("class",t[s]))}return i}(0,h.K2)(m,"getGroup");for(const n of f){if(0===n.data.length)continue;const t=m(n.groupTexts);switch(n.type){case"rect":if(t.selectAll("rect").data(n.data).enter().append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth),r.showDataLabel)if("horizontal"===r.chartOrientation){let i=function(t,i){const{data:s,label:a}=t;return i*a.length*e<=s.width-10};(0,h.K2)(i,"fitsHorizontally");const e=.7,s=n.data.map((t,i)=>({data:t,label:l[i].toString()})).filter(t=>t.data.width>0&&t.data.height>0),a=s.map(t=>{const{data:e}=t;let s=.7*e.height;for(;!i(t,s)&&s>0;)s-=1;return s}),o=Math.floor(Math.min(...a));t.selectAll("text").data(s).enter().append("text").attr("x",t=>t.data.x+t.data.width-10).attr("y",t=>t.data.y+t.data.height/2).attr("text-anchor","end").attr("dominant-baseline","middle").attr("fill","black").attr("font-size",`${o}px`).text(t=>t.label)}else{let i=function(t,i,e){const{data:s,label:a}=t,n=i*a.length*.7,h=s.x+s.width/2,o=h+n/2,r=h-n/2>=s.x&&o<=s.x+s.width,l=s.y+e+i<=s.y+s.height;return r&&l};(0,h.K2)(i,"fitsInBar");const e=10,s=n.data.map((t,i)=>({data:t,label:l[i].toString()})).filter(t=>t.data.width>0&&t.data.height>0),a=s.map(t=>{const{data:s,label:a}=t;let n=s.width/(.7*a.length);for(;!i(t,n,e)&&n>0;)n-=1;return n}),o=Math.floor(Math.min(...a));t.selectAll("text").data(s).enter().append("text").attr("x",t=>t.data.x+t.data.width/2).attr("y",t=>t.data.y+e).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("fill","black").attr("font-size",`${o}px`).text(t=>t.label)}break;case"text":t.selectAll("text").data(n.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>c(t.verticalPos)).attr("text-anchor",t=>g(t.horizontalPos)).attr("transform",t=>u(t)).text(t=>t.text);break;case"path":t.selectAll("path").data(n.data).enter().append("path").attr("d",t=>t.path).attr("fill",t=>t.fill?t.fill:"none").attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth)}}},"draw")}}}}]); \ No newline at end of file diff --git a/assets/js/2192b561.ddda8f54.js b/assets/js/2192b561.ddda8f54.js new file mode 100644 index 0000000000..eb91ebb6b1 --- /dev/null +++ b/assets/js/2192b561.ddda8f54.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8945],{47784:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","source":"@site/versioned_docs/version-0.12.2/ci_workflow.md","sourceDirName":".","slug":"/ci-workflow","permalink":"/ModuleCheck/docs/0.12.2/ci-workflow","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/ci_workflow.md","tags":[],"version":"0.12.2","frontMatter":{"id":"ci-workflow","sidebar_label":"CI Workflow","title":"CI Workflow"},"sidebar":"Docs","previous":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.2/suppressing-findings"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_dependency"}}');var s=t(23420),a=t(65404);const i={id:"ci-workflow",sidebar_label:"CI Workflow",title:"CI Workflow"},l=void 0,r={},c=[{value:"Using CI over git hooks",id:"using-ci-over-git-hooks",level:3},{value:"Example Flow chart",id:"example-flow-chart",level:3},{value:"Example GitHub Action",id:"example-github-action",level:3}];function h(e){const n={a:"a",code:"code",h3:"h3",mermaid:"mermaid",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and\nautomatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to\napply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run.\nThis is similar to a git pre-commit hook, except the work is delegated to a build server."}),"\n",(0,s.jsx)(n.h3,{id:"using-ci-over-git-hooks",children:"Using CI over git hooks"}),"\n",(0,s.jsx)(n.p,{children:"The traditional method for applying changes automatically is with a git hook, such as pre-commit or\npre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor\ndeveloper experience. With a CI task, the execution is done automatically and asynchronously, while\nthe developer is already moving on to something else."}),"\n",(0,s.jsx)(n.p,{children:"A git hook also technically doesn't guarantee that a task is executed before code is checked in to a\nmain branch, since there's no guarantee that a hook is enabled. With CI, the task will output a\nstatus check. If a branch protection rule is enabled, that status check can be required. This will\nthen guarantee that the task has run (successfully) before any code is checked in to the protected\nbranch."}),"\n",(0,s.jsx)(n.h3,{id:"example-flow-chart",children:"Example Flow chart"}),"\n",(0,s.jsxs)(n.p,{children:['This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The\ncancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an\n"optimistic" workflow, in that it assumes that the ',(0,s.jsx)(n.code,{children:"modulecheck"})," task will not generate changes\nwhich would trigger a restart."]}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n Start(CI Start):::good --\x3e mGraph\n Start --\x3e tGraph\n Start --\x3e cGraph\n\n subgraph mGraph [runner 1]\n direction TB\n ModuleCheck(./gradlew moduleCheckAuto):::code --\x3e ChangesModuleCheck\n ChangesModuleCheck{Graph changes?} --- yesM[yes]:::lineLabel --\x3e CommitModuleCheck(Commit changes and push):::stop\n ChangesModuleCheck --- noM[no]:::lineLabel --\x3e EndModuleCheck("#10003;"):::good\n end\n\n subgraph tGraph [runner 2]\n direction TB\n Tests(./gradlew test):::code --\x3e EndTests("#10003;"):::good\n end\n\n subgraph cGraph [runner 3]\n direction TB\n Cancel(Cancel previous CI run):::code\n end\n\n style tGraph fill:#EEE,stroke:#000\n style cGraph fill:#EEE,stroke:#000\n style mGraph fill:#EEE,stroke:#000\n\n classDef good fill:#0B0,stroke:#000\n classDef stop fill:#E33,stroke:#000\n\n classDef code fill:#AAA,stroke:#000\n\n style ChangesModuleCheck fill:#CD1,stroke:#000\n\n classDef lineLabel fill:#FFF,stroke:#FFF'}),"\n",(0,s.jsx)(n.h3,{id:"example-github-action",children:"Example GitHub Action"}),"\n",(0,s.jsxs)(n.p,{children:["Here's an Action which will run ModuleCheck, then commit any changes\nusing ",(0,s.jsx)(n.a,{href:"https://github.com/stefanzweifel/git-auto-commit-action",children:"Stefanzweifel's auto-commit"}),". This\nrequires a personal access token secret, or the commit step will fail."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:"title=.github/workflows.module-check.yml",children:"name: ModuleCheck\n\non:\n pull_request:\n\njobs:\n\n cancel-stale-jobs:\n name: Cancel stale jobs\n runs-on: ubuntu-latest\n\n steps:\n # cancel previous jobs\n - name: Cancel Previous Runs\n uses: styfle/cancel-workflow-action@0.9.0\n env:\n GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'\n\n ModuleCheck:\n name: ModuleCheck\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n # Must use a personal access token in order to commit changes\n token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '11'\n\n # performs tree-shaking on the Gradle dependency graph\n - name: modulecheck\n run: ./gradlew moduleCheckAuto --no-daemon\n\n # If ModuleCheck generated changes, commit and push those changes.\n # If there are no changes, then this is a no-op.\n - name: commit changes\n uses: stefanzweifel/git-auto-commit-action@v4\n with:\n commit_message: Apply ModuleCheck changes\n commit_options: '--no-verify --signoff'\n\n tests:\n name: Unit tests\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n token: ${{ secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n - name: all tests\n run: ./gradlew test --no-daemon\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var o=t(36672);const s={},a=o.createContext(s);function i(e){const n=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/228d1b45.82366616.js b/assets/js/228d1b45.82366616.js new file mode 100644 index 0000000000..ca48a4fde6 --- /dev/null +++ b/assets/js/228d1b45.82366616.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[755],{58873:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.12.2/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/0.12.2/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/must_be_api.md","tags":[],"version":"0.12.2","frontMatter":{"id":"must_be_api","slug":"/rules/must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_dependency"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",slug:"/rules/must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/23284c9b.20730bf6.js b/assets/js/23284c9b.20730bf6.js new file mode 100644 index 0000000000..9de25cfaa1 --- /dev/null +++ b/assets/js/23284c9b.20730bf6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9254],{59643:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>d,toc:()=>a});const d=JSON.parse('{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.12.3/rules/android/disable_view_binding.md","sourceDirName":"rules/android","slug":"/rules/disable_view_binding","permalink":"/ModuleCheck/docs/0.12.3/rules/disable_view_binding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/android/disable_view_binding.md","tags":[],"version":"0.12.3","frontMatter":{"id":"disable_view_binding","slug":"/rules/disable_view_binding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.3/rules/disable_android_resources"},"next":{"title":"Unused Kotlin Android Extensions","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_kotlin_android_extensions"}}');var s=i(23420),t=i(65404);const o={id:"disable_view_binding",slug:"/rules/disable_view_binding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,l={},a=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},65404:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var d=i(36672);const s={},t=d.createContext(s);function o(e){const n=d.useContext(t);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),d.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2342.25912561.js b/assets/js/2342.25912561.js new file mode 100644 index 0000000000..ee2a02850f --- /dev/null +++ b/assets/js/2342.25912561.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2342],{82342:(t,n,e)=>{e.d(n,{diagram:()=>ot});var i=e(27293),s=e(61274);function r(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e>i||void 0===e&&i>=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e>s||void 0===e&&s>=s)&&(e=s)}return e}function o(t){return t.target.depth}function c(t,n){return t.sourceLinks.length?t.depth:n-1}function l(t,n){let e=0;if(void 0===n)for(let i of t)(i=+i)&&(e+=i);else{let i=-1;for(let s of t)(s=+n(s,++i,t))&&(e+=s)}return e}function a(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e=s)&&(e=s)}return e}function h(t){return function(){return t}}function u(t,n){return y(t.source,n.source)||t.index-n.index}function f(t,n){return y(t.target,n.target)||t.index-n.index}function y(t,n){return t.y0-n.y0}function d(t){return t.value}function p(t){return t.index}function g(t){return t.nodes}function _(t){return t.links}function k(t,n){const e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function x({nodes:t}){for(const n of t){let t=n.y0,e=t;for(const i of n.sourceLinks)i.y0=t+i.width/2,t+=i.width;for(const i of n.targetLinks)i.y1=e+i.width/2,e+=i.width}}function m(){let t,n,e,i=0,s=0,o=1,m=1,v=24,b=8,w=p,L=c,S=g,E=_,K=6;function A(){const c={nodes:S.apply(null,arguments),links:E.apply(null,arguments)};return function({nodes:t,links:n}){for(const[e,s]of t.entries())s.index=e,s.sourceLinks=[],s.targetLinks=[];const i=new Map(t.map((n,e)=>[w(n,e,t),n]));for(const[e,s]of n.entries()){s.index=e;let{source:t,target:n}=s;"object"!=typeof t&&(t=s.source=k(i,t)),"object"!=typeof n&&(n=s.target=k(i,n)),t.sourceLinks.push(s),n.targetLinks.push(s)}if(null!=e)for(const{sourceLinks:s,targetLinks:r}of t)s.sort(e),r.sort(e)}(c),function({nodes:t}){for(const n of t)n.value=void 0===n.fixedValue?Math.max(l(n.sourceLinks,d),l(n.targetLinks,d)):n.fixedValue}(c),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.depth=s;for(const{target:n}of t.sourceLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(c),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.height=s;for(const{source:n}of t.targetLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(c),function(e){const c=function({nodes:t}){const e=a(t,t=>t.depth)+1,s=(o-i-v)/(e-1),r=new Array(e);for(const n of t){const t=Math.max(0,Math.min(e-1,Math.floor(L.call(null,n,e))));n.layer=t,n.x0=i+t*s,n.x1=n.x0+v,r[t]?r[t].push(n):r[t]=[n]}if(n)for(const i of r)i.sort(n);return r}(e);t=Math.min(b,(m-s)/(a(c,t=>t.length)-1)),function(n){const e=r(n,n=>(m-s-(n.length-1)*t)/l(n,d));for(const i of n){let n=s;for(const s of i){s.y0=n,s.y1=n+s.value*e,n=s.y1+t;for(const t of s.sourceLinks)t.width=t.value*e}n=(m-n+t)/(i.length+1);for(let t=0;t0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,P(t)}void 0===n&&r.sort(y),T(r,i)}}function I(t,e,i){for(let s=t.length-2;s>=0;--s){const r=t[s];for(const t of r){let n=0,i=0;for(const{target:e,value:r}of t.sourceLinks){let s=r*(e.layer-t.layer);n+=$(t,e)*s,i+=s}if(!(i>0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,P(t)}void 0===n&&r.sort(y),T(r,i)}}function T(n,e){const i=n.length>>1,r=n[i];N(n,r.y0-t,i-1,e),D(n,r.y1+t,i+1,e),N(n,m,n.length-1,e),D(n,s,0,e)}function D(n,e,i,s){for(;i1e-6&&(r.y0+=o,r.y1+=o),e=r.y1+t}}function N(n,e,i,s){for(;i>=0;--i){const r=n[i],o=(r.y1-e)*s;o>1e-6&&(r.y0-=o,r.y1-=o),e=r.y0-t}}function P({sourceLinks:t,targetLinks:n}){if(void 0===e){for(const{source:{sourceLinks:t}}of n)t.sort(f);for(const{target:{targetLinks:n}}of t)n.sort(u)}}function C(t){if(void 0===e)for(const{sourceLinks:n,targetLinks:e}of t)n.sort(f),e.sort(u)}function O(n,e){let i=n.y0-(n.sourceLinks.length-1)*t/2;for(const{target:s,width:r}of n.sourceLinks){if(s===e)break;i+=r+t}for(const{source:t,width:s}of e.targetLinks){if(t===n)break;i-=s}return i}function $(n,e){let i=e.y0-(e.targetLinks.length-1)*t/2;for(const{source:s,width:r}of e.targetLinks){if(s===n)break;i+=r+t}for(const{target:t,width:s}of n.sourceLinks){if(t===e)break;i-=s}return i}return A.update=function(t){return x(t),t},A.nodeId=function(t){return arguments.length?(w="function"==typeof t?t:h(t),A):w},A.nodeAlign=function(t){return arguments.length?(L="function"==typeof t?t:h(t),A):L},A.nodeSort=function(t){return arguments.length?(n=t,A):n},A.nodeWidth=function(t){return arguments.length?(v=+t,A):v},A.nodePadding=function(n){return arguments.length?(b=t=+n,A):b},A.nodes=function(t){return arguments.length?(S="function"==typeof t?t:h(t),A):S},A.links=function(t){return arguments.length?(E="function"==typeof t?t:h(t),A):E},A.linkSort=function(t){return arguments.length?(e=t,A):e},A.size=function(t){return arguments.length?(i=s=0,o=+t[0],m=+t[1],A):[o-i,m-s]},A.extent=function(t){return arguments.length?(i=+t[0][0],o=+t[1][0],s=+t[0][1],m=+t[1][1],A):[[i,s],[o,m]]},A.iterations=function(t){return arguments.length?(K=+t,A):K},A}var v=Math.PI,b=2*v,w=1e-6,L=b-w;function S(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function E(){return new S}S.prototype=E.prototype={constructor:S,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,i){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+i)},bezierCurveTo:function(t,n,e,i,s,r){this._+="C"+ +t+","+ +n+","+ +e+","+ +i+","+(this._x1=+s)+","+(this._y1=+r)},arcTo:function(t,n,e,i,s){t=+t,n=+n,e=+e,i=+i,s=+s;var r=this._x1,o=this._y1,c=e-t,l=i-n,a=r-t,h=o-n,u=a*a+h*h;if(s<0)throw new Error("negative radius: "+s);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(u>w)if(Math.abs(h*c-l*a)>w&&s){var f=e-r,y=i-o,d=c*c+l*l,p=f*f+y*y,g=Math.sqrt(d),_=Math.sqrt(u),k=s*Math.tan((v-Math.acos((d+u-p)/(2*g*_)))/2),x=k/_,m=k/g;Math.abs(x-1)>w&&(this._+="L"+(t+x*a)+","+(n+x*h)),this._+="A"+s+","+s+",0,0,"+ +(h*f>a*y)+","+(this._x1=t+m*c)+","+(this._y1=n+m*l)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,i,s,r){t=+t,n=+n,r=!!r;var o=(e=+e)*Math.cos(i),c=e*Math.sin(i),l=t+o,a=n+c,h=1^r,u=r?i-s:s-i;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+l+","+a:(Math.abs(this._x1-l)>w||Math.abs(this._y1-a)>w)&&(this._+="L"+l+","+a),e&&(u<0&&(u=u%b+b),u>L?this._+="A"+e+","+e+",0,1,"+h+","+(t-o)+","+(n-c)+"A"+e+","+e+",0,1,"+h+","+(this._x1=l)+","+(this._y1=a):u>w&&(this._+="A"+e+","+e+",0,"+ +(u>=v)+","+h+","+(this._x1=t+e*Math.cos(s))+","+(this._y1=n+e*Math.sin(s))))},rect:function(t,n,e,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +i+"h"+-e+"Z"},toString:function(){return this._}};const K=E;var A=Array.prototype.slice;function M(t){return function(){return t}}function I(t){return t[0]}function T(t){return t[1]}function D(t){return t.source}function N(t){return t.target}function P(t){var n=D,e=N,i=I,s=T,r=null;function o(){var o,c=A.call(arguments),l=n.apply(this,c),a=e.apply(this,c);if(r||(r=o=K()),t(r,+i.apply(this,(c[0]=l,c)),+s.apply(this,c),+i.apply(this,(c[0]=a,c)),+s.apply(this,c)),o)return r=null,o+""||null}return o.source=function(t){return arguments.length?(n=t,o):n},o.target=function(t){return arguments.length?(e=t,o):e},o.x=function(t){return arguments.length?(i="function"==typeof t?t:M(+t),o):i},o.y=function(t){return arguments.length?(s="function"==typeof t?t:M(+t),o):s},o.context=function(t){return arguments.length?(r=null==t?null:t,o):r},o}function C(t,n,e,i,s){t.moveTo(n,e),t.bezierCurveTo(n=(n+i)/2,e,n,s,i,s)}function O(t){return[t.source.x1,t.y0]}function $(t){return[t.target.x0,t.y1]}function j(){return P(C).source(O).target($)}var z=function(){var t=(0,i.K2)(function(t,n,e,i){for(e=e||{},i=t.length;i--;e[t[i]]=n);return e},"o"),n=[1,9],e=[1,10],s=[1,5,10,12],r={trace:(0,i.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:(0,i.K2)(function(t,n,e,i,s,r,o){var c=r.length-1;switch(s){case 7:const t=i.findOrCreateNode(r[c-4].trim().replaceAll('""','"')),n=i.findOrCreateNode(r[c-2].trim().replaceAll('""','"')),e=parseFloat(r[c].trim());i.addLink(t,n,e);break;case 8:case 9:case 11:this.$=r[c];break;case 10:this.$=r[c-1]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:n,20:e},{1:[2,6],7:11,10:[1,12]},t(e,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(s,[2,8]),t(s,[2,9]),{19:[1,16]},t(s,[2,11]),{1:[2,1]},{1:[2,5]},t(e,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:n,20:e},{15:18,16:7,17:8,18:n,20:e},{18:[1,19]},t(e,[2,3]),{12:[1,20]},t(s,[2,10]),{15:21,16:7,17:8,18:n,20:e},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:(0,i.K2)(function(t,n){if(!n.recoverable){var e=new Error(t);throw e.hash=n,e}this.trace(t)},"parseError"),parse:(0,i.K2)(function(t){var n=this,e=[0],s=[],r=[null],o=[],c=this.table,l="",a=0,h=0,u=0,f=o.slice.call(arguments,1),y=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);y.setInput(t,d.yy),d.yy.lexer=y,d.yy.parser=this,void 0===y.yylloc&&(y.yylloc={});var g=y.yylloc;o.push(g);var _=y.options&&y.options.ranges;function k(){var t;return"number"!=typeof(t=s.pop()||y.lex()||1)&&(t instanceof Array&&(t=(s=t).pop()),t=n.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,i.K2)(function(t){e.length=e.length-2*t,r.length=r.length-t,o.length=o.length-t},"popStack"),(0,i.K2)(k,"lex");for(var x,m,v,b,w,L,S,E,K,A={};;){if(v=e[e.length-1],this.defaultActions[v]?b=this.defaultActions[v]:(null==x&&(x=k()),b=c[v]&&c[v][x]),void 0===b||!b.length||!b[0]){var M="";for(L in K=[],c[v])this.terminals_[L]&&L>2&&K.push("'"+this.terminals_[L]+"'");M=y.showPosition?"Parse error on line "+(a+1)+":\n"+y.showPosition()+"\nExpecting "+K.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==x?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(M,{text:y.match,token:this.terminals_[x]||x,line:y.yylineno,loc:g,expected:K})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+x);switch(b[0]){case 1:e.push(x),r.push(y.yytext),o.push(y.yylloc),e.push(b[1]),x=null,m?(x=m,m=null):(h=y.yyleng,l=y.yytext,a=y.yylineno,g=y.yylloc,u>0&&u--);break;case 2:if(S=this.productions_[b[1]][1],A.$=r[r.length-S],A._$={first_line:o[o.length-(S||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(S||1)].first_column,last_column:o[o.length-1].last_column},_&&(A._$.range=[o[o.length-(S||1)].range[0],o[o.length-1].range[1]]),void 0!==(w=this.performAction.apply(A,[l,h,a,d.yy,b[1],r,o].concat(f))))return w;S&&(e=e.slice(0,-1*S*2),r=r.slice(0,-1*S),o=o.slice(0,-1*S)),e.push(this.productions_[b[1]][0]),r.push(A.$),o.push(A._$),E=c[e[e.length-2]][e[e.length-1]],e.push(E);break;case 3:return!0}}return!0},"parse")},o=function(){return{EOF:1,parseError:(0,i.K2)(function(t,n){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,n)},"parseError"),setInput:(0,i.K2)(function(t,n){return this.yy=n||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,i.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,i.K2)(function(t){var n=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===i.length?this.yylloc.first_column:0)+i[i.length-e.length].length-e[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:(0,i.K2)(function(){return this._more=!0,this},"more"),reject:(0,i.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,i.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,i.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,i.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,i.K2)(function(){var t=this.pastInput(),n=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+n+"^"},"showPosition"),test_match:(0,i.K2)(function(t,n){var e,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,i.K2)(function(){if(this.done)return this.EOF;var t,n,e,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;rn[0].length)){if(n=e,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,s[r])))return t;if(this._backtrack){n=!1;continue}return!1}if(!this.options.flex)break}return n?!1!==(t=this.test_match(n,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,i.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,i.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,i.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,i.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,i.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,i.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,i.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,i.K2)(function(t,n,e,i){switch(e){case 0:return this.pushState("csv"),4;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;case 5:return 20;case 6:return this.popState("escaped_text"),18;case 7:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}}}();function c(){this.yy={}}return r.lexer=o,(0,i.K2)(c,"Parser"),c.prototype=r,r.Parser=c,new c}();z.parser=z;var U=z,F=[],W=[],G=new Map,V=(0,i.K2)(()=>{F=[],W=[],G=new Map,(0,i.IU)()},"clear"),X=class{constructor(t,n,e=0){this.source=t,this.target=n,this.value=e}static{(0,i.K2)(this,"SankeyLink")}},Y=(0,i.K2)((t,n,e)=>{F.push(new X(t,n,e))},"addLink"),q=class{constructor(t){this.ID=t}static{(0,i.K2)(this,"SankeyNode")}},Q=(0,i.K2)(t=>{t=i.Y2.sanitizeText(t,(0,i.D7)());let n=G.get(t);return void 0===n&&(n=new q(t),G.set(t,n),W.push(n)),n},"findOrCreateNode"),R=(0,i.K2)(()=>W,"getNodes"),B=(0,i.K2)(()=>F,"getLinks"),Z=(0,i.K2)(()=>({nodes:W.map(t=>({id:t.ID})),links:F.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),H={nodesMap:G,getConfig:(0,i.K2)(()=>(0,i.D7)().sankey,"getConfig"),getNodes:R,getLinks:B,getGraph:Z,addLink:Y,findOrCreateNode:Q,getAccTitle:i.iN,setAccTitle:i.SV,getAccDescription:i.m7,setAccDescription:i.EI,getDiagramTitle:i.ab,setDiagramTitle:i.ke,clear:V},J=class t{static{(0,i.K2)(this,"Uid")}static{this.count=0}static next(n){return new t(n+ ++t.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}},tt={left:function(t){return t.depth},right:function(t,n){return n-1-t.height},center:function(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?r(t.sourceLinks,o)-1:0},justify:c},nt=(0,i.K2)(function(t,n,e,r){const{securityLevel:o,sankey:c}=(0,i.D7)(),l=i.ME.sankey;let a;"sandbox"===o&&(a=(0,s.Ltv)("#i"+n));const h="sandbox"===o?(0,s.Ltv)(a.nodes()[0].contentDocument.body):(0,s.Ltv)("body"),u="sandbox"===o?h.select(`[id="${n}"]`):(0,s.Ltv)(`[id="${n}"]`),f=c?.width??l.width,y=c?.height??l.width,d=c?.useMaxWidth??l.useMaxWidth,p=c?.nodeAlignment??l.nodeAlignment,g=c?.prefix??l.prefix,_=c?.suffix??l.suffix,k=c?.showValues??l.showValues,x=r.db.getGraph(),v=tt[p];m().nodeId(t=>t.id).nodeWidth(10).nodePadding(10+(k?15:0)).nodeAlign(v).extent([[0,0],[f,y]])(x);const b=(0,s.UMr)(s.zt);u.append("g").attr("class","nodes").selectAll(".node").data(x.nodes).join("g").attr("class","node").attr("id",t=>(t.uid=J.next("node-")).id).attr("transform",function(t){return"translate("+t.x0+","+t.y0+")"}).attr("x",t=>t.x0).attr("y",t=>t.y0).append("rect").attr("height",t=>t.y1-t.y0).attr("width",t=>t.x1-t.x0).attr("fill",t=>b(t.id));const w=(0,i.K2)(({id:t,value:n})=>k?`${t}\n${g}${Math.round(100*n)/100}${_}`:t,"getText");u.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(x.nodes).join("text").attr("x",t=>t.x0(t.y1+t.y0)/2).attr("dy",(k?"0":"0.35")+"em").attr("text-anchor",t=>t.x0(t.uid=J.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",t=>t.source.x1).attr("x2",t=>t.target.x0);t.append("stop").attr("offset","0%").attr("stop-color",t=>b(t.source.id)),t.append("stop").attr("offset","100%").attr("stop-color",t=>b(t.target.id))}let E;switch(S){case"gradient":E=(0,i.K2)(t=>t.uid,"coloring");break;case"source":E=(0,i.K2)(t=>b(t.source.id),"coloring");break;case"target":E=(0,i.K2)(t=>b(t.target.id),"coloring");break;default:E=S}L.append("path").attr("d",j()).attr("stroke",E).attr("stroke-width",t=>Math.max(1,t.width)),(0,i.ot)(void 0,u,0,d)},"draw"),et={draw:nt},it=(0,i.K2)(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,"\n").trim(),"prepareTextForParsing"),st=(0,i.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n }`,"getStyles"),rt=U.parse.bind(U);U.parse=t=>rt(it(t));var ot={styles:st,parser:U,db:H,renderer:et}}}]); \ No newline at end of file diff --git a/assets/js/23c216bb.d1f3edb7.js b/assets/js/23c216bb.d1f3edb7.js new file mode 100644 index 0000000000..a447a4e1ad --- /dev/null +++ b/assets/js/23c216bb.d1f3edb7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4196],{28802:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>u});const o=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.11.2/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.11.2/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/configuration.mdx","tags":[],"version":"0.11.2","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.11.2/"},"next":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.11.2/ci-workflow"}}');var s=t(23420),r=t(65404);const i={id:"configuration",sidebar_label:"Configuration"},a=void 0,c={},u=[];function d(e){const n={code:"code",pre:"pre",...(0,r.R)(),...e.components};return(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:'plugins {\n id("com.rickbusarow.module-check") version "0.11.2"\n}\n\nmoduleCheck {\n\n autoCorrect = true // default is true\n deleteUnused = true // default is false\n\n checks {\n overshotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedImplementation = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n alwaysIgnore.set(setOf(":test:core-jvm", ":test:core-android"))\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n ignoreAll.set(setOf(":app"))\n\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var o=t(36672);const s={},r=o.createContext(s);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2462.92c834f6.js b/assets/js/2462.92c834f6.js new file mode 100644 index 0000000000..fe40755c02 --- /dev/null +++ b/assets/js/2462.92c834f6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2462],{12462:(e,c,u)=>{u.d(c,{createArchitectureServices:()=>h.S});var h=u(77480);u(34939)}}]); \ No newline at end of file diff --git a/assets/js/24af6869.9e5db2d3.js b/assets/js/24af6869.9e5db2d3.js new file mode 100644 index 0000000000..413be94ac2 --- /dev/null +++ b/assets/js/24af6869.9e5db2d3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1753],{50786:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>p,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","source":"@site/versioned_docs/version-0.10.0/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.10.0/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/quickstart.mdx","tags":[],"version":"0.10.0","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Basics","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.10.0/configuration"}}');var a=r(23420),l=r(65404),o=r(65780),s=r(58118);const i={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},u=void 0,c={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",p:"p",pre:"pre",...(0,l.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsx)(n.p,{children:"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin."}),(0,a.jsx)(n.p,{children:"However, auto-correction of errors is only done by parsing Kotlin files via PSI. Groovy auto-correction is not supported."})]}),"\n",(0,a.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,a.jsxs)(o.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,a.jsxs)(s.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:"// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.10.0"\n}\n'})})]}),(0,a.jsxs)(s.A,{value:"Groovy",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:"// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:'// top-level build.gradle\n\nplugins {\n id "com.rickbusarow.module-check" version "0.10.0"\n}\n'})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,a.jsxs)(n.p,{children:["See ",(0,a.jsx)(n.a,{href:"/ModuleCheck/docs/0.10.0/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,a.jsxs)(o.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,a.jsxs)(s.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nconfigure {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,a.jsx)(n.p,{children:"--or--"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nmoduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,a.jsx)(s.A,{value:"Groovy",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:'// top-level build.gradle\n\nmoduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},58118:(e,n,r)=>{r.d(n,{A:()=>o});r(36672);var t=r(13526);const a={tabItem:"tabItem_qogc"};var l=r(23420);function o({children:e,hidden:n,className:r}){return(0,l.jsx)("div",{role:"tabpanel",className:(0,t.A)(a.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>o,x:()=>s});var t=r(36672);const a={},l=t.createContext(a);function o(e){const n=t.useContext(l);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),t.createElement(l.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>j});var t=r(36672),a=r(13526),l=r(10452),o=r(85291),s=r(10914),i=r(41201),u=r(40622),c=r(42925);function d(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:t}})=>({value:e,label:n,attributes:r,default:t}))}(r);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function f({queryString:e=!1,groupId:n}){const r=(0,o.W6)(),a=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,i.aZ)(a),(0,t.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})},[a,r])]}function g(e){const{defaultValue:n,queryString:r=!1,groupId:a}=e,l=h(e),[o,i]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l})),[u,d]=f({queryString:r,groupId:a}),[g,v]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,a]=(0,c.Dv)(n);return[r,(0,t.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),b=(()=>{const e=u??g;return p({value:e,tabValues:l})?e:null})();(0,s.A)(()=>{b&&i(b)},[b]);return{selectedValue:o,selectValue:(0,t.useCallback)(e=>{if(!p({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),v(e)},[d,v,l]),tabValues:l}}var v=r(74682);const b={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var m=r(23420);function k({className:e,block:n,selectedValue:r,selectValue:t,tabValues:o}){const s=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,a=s.indexOf(n),l=o[a].value;l!==r&&(i(n),t(l))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const r=s.indexOf(e.currentTarget)+1;n=s[r]??s[0];break}case"ArrowLeft":{const r=s.indexOf(e.currentTarget)-1;n=s[r]??s[s.length-1];break}}n?.focus()};return(0,m.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:o.map(({value:e,label:n,attributes:t})=>(0,m.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{s.push(e)},onKeyDown:c,onClick:u,...t,className:(0,a.A)("tabs__item",b.tabItem,t?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function x({lazy:e,children:n,selectedValue:r}){const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=l.find(e=>e.props.value===r);return e?(0,t.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,m.jsx)("div",{className:"margin-top--md",children:l.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function y(e){const n=g(e);return(0,m.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,m.jsx)(k,{...n,...e}),(0,m.jsx)(x,{...n,...e})]})}function j(e){const n=(0,v.A)();return(0,m.jsx)(y,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/25072094.ba042603.js b/assets/js/25072094.ba042603.js new file mode 100644 index 0000000000..c88347d76c --- /dev/null +++ b/assets/js/25072094.ba042603.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4422],{58591:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","source":"@site/versioned_docs/version-0.12.1/rules/project_depth.md","sourceDirName":"rules","slug":"/rules/project_depth","permalink":"/ModuleCheck/docs/0.12.1/rules/project_depth","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/project_depth.md","tags":[],"version":"0.12.1","frontMatter":{"id":"project_depth","slug":"/rules/project_depth","title":"Project Depth","sidebar_label":"Project Depth"},"sidebar":"Docs","previous":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/overshot_dependency"},"next":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/0.12.1/rules/use_anvil_factory_generation"}}');var r=l(23420),t=l(65404);const d={id:"project_depth",slug:"/rules/project_depth",title:"Project Depth",sidebar_label:"Project Depth"},i=void 0,c={},o=[{value:"Dependencies and Build Concurrency",id:"dependencies-and-build-concurrency",level:3},{value:"Depth",id:"depth",level:3}];function h(e){const n={a:"a",code:"code",em:"em",h3:"h3",hr:"hr",li:"li",mermaid:"mermaid",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"TL;DR - Low depth values mean faster builds and better all-around scalability."}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["It's often useful to think of module dependencies as a directed tree\nor ",(0,r.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Directed_acyclic_graph",children:"directed acyclic graph"}),". If a module is a\nnode, then each module dependency is a child node, and the dependencies of those dependencies are\ngrand-child nodes."]}),"\n",(0,r.jsxs)(n.p,{children:["This is especially useful when thinking about ",(0,r.jsx)(n.strong,{children:"build performance"}),", because the parent-child\nrelationship is clear: ",(0,r.jsx)(n.em,{children:"child nodes must build before parent nodes"}),"."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(:app):::depth2\n\n screen1(:screen-1):::depth1\n screen2(:screen-2):::depth1\n\n lib1(:lib-1):::depth0\n lib2(:lib-2):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n\n screen1 --\x3e lib1\n screen1 --\x3e lib2\n screen2 --\x3e lib2"}),"\n",(0,r.jsx)(n.p,{children:"In the above example,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," must be built before ",(0,r.jsx)(n.code,{children:":screen-1"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-2"})," must be build before ",(0,r.jsx)(n.code,{children:":screen-2"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":screen-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," must be built before ",(0,r.jsx)(n.code,{children:":app"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build\nbefore their parents."}),"\n",(0,r.jsx)(n.h3,{id:"dependencies-and-build-concurrency",children:"Dependencies and Build Concurrency"}),"\n",(0,r.jsx)(n.p,{children:"Individual module builds are always done single-threaded, but multiple modules may build in parallel\nso long as no module in the set depends upon another module in that set. In the above graph,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":scren-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of parallel module builds is determined by the structure of the dependency graph\nand the number of available processor cores on the machine which is performing the build."}),"\n",(0,r.jsx)(n.h3,{id:"depth",children:"Depth"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Depth"})," refers to the maximum number of edges between a module and each of its leaf nodes in the\nproject dependency graph."]}),"\n",(0,r.jsx)(n.p,{children:"Low depth values indicate a shallow or flat project structure with loose (or no) coupling between\nmodules. In a full build, these projects scale well with hardware upgrades because they're able to\nbuild all those independent modules in parallel."}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n subgraph sg [A shallow graph]\n direction TB\n\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 2):::depth2\n\n screen1(depth: 1):::depth1\n screen2(depth: 1):::depth1\n screen3(depth: 1):::depth1\n screen4(depth: 1):::depth1\n\n lib1(depth: 0):::depth0\n lib2(depth: 0):::depth0\n lib3(depth: 0):::depth0\n lib4(depth: 0):::depth0\n lib5(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e lib1\n screen1 --\x3e lib4\n\n screen2 --\x3e lib1\n screen2 --\x3e lib3\n screen2 --\x3e lib4\n\n screen3 --\x3e lib2\n screen3 --\x3e lib3\n screen3 --\x3e lib4\n\n screen4 --\x3e lib3\n screen4 --\x3e lib5\n\n end\n\n style sg opacity:0.0\n"}),"\n",(0,r.jsxs)(n.p,{children:['On the other hand, "deep" projects do not offer many opportunities for parallelization. They have\nproject dependencies which must be built ',(0,r.jsx)(n.em,{children:"sequentially"}),". They also perform poorly in incremental\nbuilds, because a single change to even a mid-level module invalidates cached builds for half of the\nproject."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n style sg opacity:0.0\n subgraph sg [A deep graph]\n direction TB\n\n classDef depth6 fill:#800,stroke:#000,color:#FFF\n classDef depth5 fill:#A50,stroke:#000,color:#FFF\n classDef depth4 fill:#C0B,stroke:#000,color:#000\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 6):::depth6\n\n screen1(depth: 5):::depth5\n screen2(depth: 5):::depth5\n\n screen3(depth: 4):::depth4\n screen4(depth: 4):::depth4\n\n lib1(depth: 3):::depth3\n lib2(depth: 3):::depth3\n\n lib3(depth: 2):::depth2\n lib4(depth: 2):::depth2\n\n lib5(depth: 1):::depth1\n\n lib6(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e screen3\n screen1 --\x3e screen4\n\n screen2 --\x3e screen4\n\n screen3 --\x3e lib1\n screen3 --\x3e lib2\n\n screen4 --\x3e lib1\n screen4 --\x3e lib4\n\n lib1 --\x3e lib3\n lib1 --\x3e lib4\n\n lib2 --\x3e lib3\n\n lib3 --\x3e lib5\n lib4 --\x3e lib5\n\n lib5 --\x3e lib6\n\n end\n"})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},65404:(e,n,l)=>{l.d(n,{R:()=>d,x:()=>i});var s=l(36672);const r={},t=s.createContext(r);function d(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2950f807.da4a2425.js b/assets/js/2950f807.da4a2425.js new file mode 100644 index 0000000000..e59883180b --- /dev/null +++ b/assets/js/2950f807.da4a2425.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7914],{48456:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>r,contentTitle:()=>i,default:()=>l,frontMatter:()=>d,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/docs/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/next/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/must_be_api.md","tags":[],"version":"current","frontMatter":{"id":"must_be_api","slug":"/rules/must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/next/rules/unused_dependency"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/next/rules/inherited_dependency"}}');var o=t(23420),c=t(65404);const d={id:"must_be_api",slug:"/rules/must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},i=void 0,r={},u=[];function a(e){const s={code:"code",p:"p",...(0,c.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,c.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},65404:(e,s,t)=>{t.d(s,{R:()=>d,x:()=>i});var n=t(36672);const o={},c=n.createContext(o);function d(e){const s=n.useContext(c);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),n.createElement(c.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/29a2444a.ca3c70d1.js b/assets/js/29a2444a.ca3c70d1.js new file mode 100644 index 0000000000..ac7f92da82 --- /dev/null +++ b/assets/js/29a2444a.ca3c70d1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4040],{61091:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>m,frontMatter:()=>c,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.12.2/rules/compiler/custom_kapt_matchers.md","sourceDirName":"rules/compiler","slug":"/rules/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.12.2/rules/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/compiler/custom_kapt_matchers.md","tags":[],"version":"0.12.2","frontMatter":{"id":"custom_kapt_matchers","slug":"/rules/custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.2/rules/sort_dependencies"}}');var n=s(23420),r=s(65404);const c={id:"custom_kapt_matchers",slug:"/rules/custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},a=void 0,i={},l=[];function u(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,n.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},65404:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>a});var o=s(36672);const n={},r=o.createContext(n);function c(e){const t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:c(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2f675600.bb74ddd9.js b/assets/js/2f675600.bb74ddd9.js new file mode 100644 index 0000000000..5f9ab7be5f --- /dev/null +++ b/assets/js/2f675600.bb74ddd9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7079],{65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const o={},r=n.createContext(o);function i(e){const s=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(r.Provider,{value:s},e.children)}},99112:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.12.0/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_plugins","permalink":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/sorting/sort_plugins.md","tags":[],"version":"0.12.0","frontMatter":{"id":"sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.0/rules/android/disable_resources"}}');var o=t(23420),r=t(65404);const i={id:"sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(d,{...e})}):d()}}}]); \ No newline at end of file diff --git a/assets/js/30f6db9d.c745195e.js b/assets/js/30f6db9d.c745195e.js new file mode 100644 index 0000000000..d3b32858dc --- /dev/null +++ b/assets/js/30f6db9d.c745195e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3911],{32305:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>u});const o=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.11.0/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.11.0/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/configuration.mdx","tags":[],"version":"0.11.0","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.11.0/"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.11.0/rules/unused"}}');var s=t(23420),r=t(65404);const i={id:"configuration",sidebar_label:"Configuration"},a=void 0,c={},u=[];function d(e){const n={code:"code",pre:"pre",...(0,r.R)(),...e.components};return(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:'plugins {\n id("com.rickbusarow.module-check") version "0.11.0"\n}\n\nmoduleCheck {\n\n autoCorrect = true // default is true\n deleteUnused = true // default is false\n\n checks {\n overshotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedImplementation = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n alwaysIgnore.set(setOf(":test:core-jvm", ":test:core-android"))\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n ignoreAll.set(setOf(":app"))\n\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var o=t(36672);const s={},r=o.createContext(s);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3139ff2f.c26a0908.js b/assets/js/3139ff2f.c26a0908.js new file mode 100644 index 0000000000..c021e33c19 --- /dev/null +++ b/assets/js/3139ff2f.c26a0908.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8355],{65404:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>a});var o=s(36672);const t={},i=o.createContext(t);function r(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(i.Provider,{value:n},e.children)}},82295:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.11.2/rules/kapt/unused_kapt_processor.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/kapt/unused_kapt_processor.md","tags":[],"version":"0.11.2","frontMatter":{"id":"unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.11.2/rules/compiler/could_use_anvil_factory"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_plugin"}}');var t=s(23420),i=s(65404);const r={id:"unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,d={},c=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/assets/js/324fc7ff.8b292941.js b/assets/js/324fc7ff.8b292941.js new file mode 100644 index 0000000000..07dab9370c --- /dev/null +++ b/assets/js/324fc7ff.8b292941.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8020],{13335:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"Dependencies","source":"@site/versioned_docs/version-0.12.5/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/quickstart.mdx","tags":[],"version":"0.12.5","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/configuration"}}');var a=r(23420),l=r(65404),s=r(65780),o=r(58118);const i={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},c=void 0,u={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",...(0,l.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,a.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,a.jsxs)(o.A,{value:"Kotlin",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven("https://oss.sonatype.org/content/repositories/snapshots/")\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.13.0-SNAPSHOT"\n}\n'})})]}),(0,a.jsxs)(o.A,{value:"Groovy",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:'// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven {\n url "https://oss.sonatype.org/content/repositories/snapshots"\n }\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.13.0-SNAPSHOT'\n}\n"})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,a.jsx)(n.p,{children:"all checks"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,a.jsx)(n.p,{children:"all checks with auto-correct"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"check sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,a.jsx)(n.p,{children:"apply sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"report depths of each module"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckDepths\n"})}),"\n",(0,a.jsx)(n.p,{children:"generate (module-only) dependency graphs"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckGraphs\n"})}),"\n",(0,a.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,a.jsxs)(n.p,{children:["See ",(0,a.jsx)(n.a,{href:"/ModuleCheck/docs/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,a.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,a.jsxs)(o.A,{value:"Kotlin",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'configure {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,a.jsx)(n.p,{children:"--or--"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,a.jsx)(o.A,{value:"Groovy",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},58118:(e,n,r)=>{r.d(n,{A:()=>s});r(36672);var t=r(13526);const a={tabItem:"tabItem_qogc"};var l=r(23420);function s({children:e,hidden:n,className:r}){return(0,l.jsx)("div",{role:"tabpanel",className:(0,t.A)(a.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>s,x:()=>o});var t=r(36672);const a={},l=t.createContext(a);function s(e){const n=t.useContext(l);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),t.createElement(l.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>y});var t=r(36672),a=r(13526),l=r(10452),s=r(85291),o=r(10914),i=r(41201),c=r(40622),u=r(42925);function d(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:t}})=>({value:e,label:n,attributes:r,default:t}))}(r);return function(e){const n=(0,c.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in . Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,s.W6)(),a=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,i.aZ)(a),(0,t.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})},[a,r])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:a}=e,l=h(e),[s,i]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l})),[c,d]=g({queryString:r,groupId:a}),[m,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,a]=(0,u.Dv)(n);return[r,(0,t.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),b=(()=>{const e=c??m;return p({value:e,tabValues:l})?e:null})();(0,o.A)(()=>{b&&i(b)},[b]);return{selectedValue:s,selectValue:(0,t.useCallback)(e=>{if(!p({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)},[d,f,l]),tabValues:l}}var f=r(74682);const b={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:t,tabValues:s}){const o=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),c=e=>{const n=e.currentTarget,a=o.indexOf(n),l=s[a].value;l!==r&&(i(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:s.map(({value:e,label:n,attributes:t})=>(0,v.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:u,onClick:c,...t,className:(0,a.A)("tabs__item",b.tabItem,t?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=l.find(e=>e.props.value===r);return e?(0,t.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,v.jsx)(x,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/325152a5.7841a58f.js b/assets/js/325152a5.7841a58f.js new file mode 100644 index 0000000000..c5c1bc9571 --- /dev/null +++ b/assets/js/325152a5.7841a58f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6313],{46461:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>a,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.12.1/rules/android/disable_android_resources.md","sourceDirName":"rules/android","slug":"/rules/disable_android_resources","permalink":"/ModuleCheck/docs/0.12.1/rules/disable_android_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/android/disable_android_resources.md","tags":[],"version":"0.12.1","frontMatter":{"id":"disable_android_resources","slug":"/rules/disable_android_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.1/rules/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.1/rules/disable_view_binding"}}');var o=r(23420),d=r(65404);const i={id:"disable_android_resources",slug:"/rules/disable_android_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,a={},c=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3325f0a2.1e18f834.js b/assets/js/3325f0a2.1e18f834.js new file mode 100644 index 0000000000..177d21b1f8 --- /dev/null +++ b/assets/js/3325f0a2.1e18f834.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7141],{31347:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","source":"@site/versioned_docs/version-0.12.4/rules/compiler/unused_kapt_plugin.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/compiler/unused_kapt_plugin.md","tags":[],"version":"0.12.4","frontMatter":{"id":"unused_kapt_plugin","slug":"/rules/unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.4/rules/custom_kapt_matchers"}}');var o=t(23420),u=t(65404);const r={id:"unused_kapt_plugin",slug:"/rules/unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,l={},c=[];function p(e){const n={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(n.p,{children:["If there are no ",(0,o.jsx)(n.code,{children:"kapt"}),"/",(0,o.jsx)(n.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in\napplying the ",(0,o.jsx)(n.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function d(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>i});var s=t(36672);const o={},u=s.createContext(o);function r(e){const n=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3332.03236ca3.js b/assets/js/3332.03236ca3.js new file mode 100644 index 0000000000..c522ee9844 --- /dev/null +++ b/assets/js/3332.03236ca3.js @@ -0,0 +1,2 @@ +/*! For license information please see 3332.03236ca3.js.LICENSE.txt */ +(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3332],{2444:(t,e,r)=>{"use strict";r.d(e,{A:()=>Ln});var n=r(36672),i=r(65404),a=r(19521),o=r(74682),s=r(13526),l=r(77137),c=r(74834);function h(){const{prism:t}=(0,c.p)(),{colorMode:e}=(0,l.G)(),r=t.theme,n=t.darkTheme||r;return"dark"===e?n:r}var u=r(40987),d=r(34809),p=r.n(d),f=r(36496),g=r(23420);const m=/title=(?["'])(?.*?)\1/,y=/\{(?<range>[\d,-]+)\}/,x={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},b={...x,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},k=Object.keys(x);function C(t,e){const r=t.map(t=>{const{start:r,end:n}=b[t];return`(?:${r}\\s*(${e.flatMap(t=>[t.line,t.block?.start,t.block?.end].filter(Boolean)).join("|")})\\s*${n})`}).join("|");return new RegExp(`^\\s*(?:${r})\\s*$`)}function w({showLineNumbers:t,metastring:e}){return"boolean"==typeof t?t?1:void 0:"number"==typeof t?t:function(t){const e=t?.split(" ").find(t=>t.startsWith("showLineNumbers"));if(e){if(e.startsWith("showLineNumbers=")){const t=e.replace("showLineNumbers=","");return parseInt(t,10)}return 1}}(e)}function _(t,e){const{language:r,magicComments:n}=e;if(void 0===r)return{lineClassNames:{},code:t};const i=function(t,e){switch(t){case"js":case"javascript":case"ts":case"typescript":return C(["js","jsBlock"],e);case"jsx":case"tsx":return C(["js","jsBlock","jsx"],e);case"html":return C(["js","jsBlock","html"],e);case"python":case"py":case"bash":return C(["bash"],e);case"markdown":case"md":return C(["html","jsx","bash"],e);case"tex":case"latex":case"matlab":return C(["tex"],e);case"lua":case"haskell":return C(["lua"],e);case"sql":return C(["lua","jsBlock"],e);case"wasm":return C(["wasm"],e);case"vb":case"vba":case"visual-basic":return C(["vb","rem"],e);case"vbnet":return C(["vbnet","rem"],e);case"batch":return C(["rem"],e);case"basic":return C(["rem","f90"],e);case"fsharp":return C(["js","ml"],e);case"ocaml":case"sml":return C(["ml"],e);case"fortran":return C(["f90"],e);case"cobol":return C(["cobol"],e);default:return C(k,e)}}(r,n),a=t.split(/\r?\n/),o=Object.fromEntries(n.map(t=>[t.className,{start:0,range:""}])),s=Object.fromEntries(n.filter(t=>t.line).map(({className:t,line:e})=>[e,t])),l=Object.fromEntries(n.filter(t=>t.block).map(({className:t,block:e})=>[e.start,t])),c=Object.fromEntries(n.filter(t=>t.block).map(({className:t,block:e})=>[e.end,t]));for(let u=0;u<a.length;){const t=a[u].match(i);if(!t){u+=1;continue}const e=t.slice(1).find(t=>void 0!==t);s[e]?o[s[e]].range+=`${u},`:l[e]?o[l[e]].start=u:c[e]&&(o[c[e]].range+=`${o[c[e]].start}-${u-1},`),a.splice(u,1)}const h={};return Object.entries(o).forEach(([t,{range:e}])=>{p()(e).forEach(e=>{h[e]??=[],h[e].push(t)})}),{code:a.join("\n"),lineClassNames:h}}function v(t,e){const r=t.replace(/\r?\n$/,"");return function(t,{metastring:e,magicComments:r}){if(e&&y.test(e)){const n=e.match(y).groups.range;if(0===r.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${e}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const i=r[0].className,a=p()(n).filter(t=>t>0).map(t=>[t-1,[i]]);return{lineClassNames:Object.fromEntries(a),code:t}}return null}(r,{...e})??_(r,{...e})}function S(t){const e=function(t){return e=t.language??function(t){if(!t)return;const e=t.split(" ").find(t=>t.startsWith("language-"));return e?.replace(/language-/,"")}(t.className)??t.defaultLanguage,e?.toLowerCase()??"text";var e}({language:t.language,defaultLanguage:t.defaultLanguage,className:t.className}),{lineClassNames:r,code:n}=v(t.code,{metastring:t.metastring,magicComments:t.magicComments,language:e}),i=function({className:t,language:e}){return(0,s.A)(t,e&&!t?.includes(`language-${e}`)&&`language-${e}`)}({className:t.className,language:e}),a=(o=t.metastring,(o?.match(m)?.groups.title??"")||t.title);var o;const l=w({showLineNumbers:t.showLineNumbers,metastring:t.metastring});return{codeInput:t.code,code:n,className:i,language:e,title:a,lineNumbersStart:l,lineClassNames:r}}const A=(0,n.createContext)(null);function T({metadata:t,wordWrap:e,children:r}){const i=(0,n.useMemo)(()=>({metadata:t,wordWrap:e}),[t,e]);return(0,g.jsx)(A.Provider,{value:i,children:r})}function M(){const t=(0,n.useContext)(A);if(null===t)throw new f.dV("CodeBlockContextProvider");return t}const B="codeBlockContainer_tyQ7";function L({as:t,...e}){const r=function(t){const e={color:"--prism-color",backgroundColor:"--prism-background-color"},r={};return Object.entries(t.plain).forEach(([t,n])=>{const i=e[t];i&&"string"==typeof n&&(r[i]=n)}),r}(h());return(0,g.jsx)(t,{...e,style:r,className:(0,s.A)(e.className,B,u.G.common.codeBlock)})}const F="codeBlock__bzz",$="codeBlockStandalone_Z1WV",E="codeBlockLines_b1Li",D="codeBlockLinesWithNumbering_lTB5";function N({children:t,className:e}){return(0,g.jsx)(L,{as:"pre",tabIndex:0,className:(0,s.A)($,"thin-scrollbar",e),children:(0,g.jsx)("code",{className:E,children:t})})}const O={attributes:!0,characterData:!0,childList:!0,subtree:!0};function R(t,e){const[r,i]=(0,n.useState)(),a=(0,n.useCallback)(()=>{i(t.current?.closest("[role=tabpanel][hidden]"))},[t,i]);(0,n.useEffect)(()=>{a()},[a]),function(t,e,r=O){const i=(0,f._q)(e),a=(0,f.Be)(r);(0,n.useEffect)(()=>{const e=new MutationObserver(i);return t&&e.observe(t,a),()=>e.disconnect()},[t,i,a])}(r,t=>{t.forEach(t=>{"attributes"===t.type&&"hidden"===t.attributeName&&(e(),a())})},{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function I({children:t}){return t}var j=r(3416);function z({line:t,token:e,...r}){return(0,g.jsx)("span",{...r})}const P="codeLine_p4HS",K="codeLineNumber_o6ZJ",q="codeLineContent_Z4Pr";function W({line:t,classNames:e,showLineNumbers:r,getLineProps:n,getTokenProps:i}){const a=function(t){const e=1===t.length&&"\n"===t[0].content?t[0]:void 0;return e?[{...e,content:""}]:t}(t),o=n({line:a,className:(0,s.A)(e,r&&P)}),l=a.map((t,e)=>{const r=i({token:t});return(0,g.jsx)(z,{...r,line:a,token:t,children:r.children},e)});return(0,g.jsxs)("span",{...o,children:[r?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)("span",{className:K}),(0,g.jsx)("span",{className:q,children:l})]}):l,(0,g.jsx)("br",{})]})}const H=n.forwardRef((t,e)=>(0,g.jsx)("pre",{ref:e,tabIndex:0,...t,className:(0,s.A)(t.className,F,"thin-scrollbar")}));function U(t){const{metadata:e}=M();return(0,g.jsx)("code",{...t,className:(0,s.A)(t.className,E,void 0!==e.lineNumbersStart&&D),style:{...t.style,counterReset:void 0===e.lineNumbersStart?void 0:"line-count "+(e.lineNumbersStart-1)}})}function Y({className:t}){const{metadata:e,wordWrap:r}=M(),n=h(),{code:i,language:a,lineNumbersStart:o,lineClassNames:l}=e;return(0,g.jsx)(j.f4,{theme:n,code:i,language:a,children:({className:e,style:n,tokens:i,getLineProps:a,getTokenProps:c})=>(0,g.jsx)(H,{ref:r.codeBlockRef,className:(0,s.A)(t,e),style:n,children:(0,g.jsx)(U,{children:i.map((t,e)=>(0,g.jsx)(W,{line:t,getLineProps:a,getTokenProps:c,classNames:l[e],showLineNumbers:void 0!==o},e))})})})}function G({children:t,fallback:e}){return(0,o.A)()?(0,g.jsx)(g.Fragment,{children:t?.()}):e??null}var V=r(50120);function Z({className:t,...e}){return(0,g.jsx)("button",{type:"button",...e,className:(0,s.A)("clean-btn",t)})}function X(t){return(0,g.jsx)("svg",{viewBox:"0 0 24 24",...t,children:(0,g.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function Q(t){return(0,g.jsx)("svg",{viewBox:"0 0 24 24",...t,children:(0,g.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const J={copyButtonCopied:"copyButtonCopied_lzuF",copyButtonIcons:"copyButtonIcons_Vzzk",copyButtonIcon:"copyButtonIcon_yGyI",copyButtonSuccessIcon:"copyButtonSuccessIcon_Vqwn"};function tt(t){return t?(0,V.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,V.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"})}function et(){const{metadata:{code:t}}=M(),[e,r]=(0,n.useState)(!1),i=(0,n.useRef)(void 0),a=(0,n.useCallback)(()=>{!function(t,{target:e=document.body}={}){if("string"!=typeof t)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof t}\`.`);const r=document.createElement("textarea"),n=document.activeElement;r.value=t,r.setAttribute("readonly",""),r.style.contain="strict",r.style.position="absolute",r.style.left="-9999px",r.style.fontSize="12pt";const i=document.getSelection(),a=i.rangeCount>0&&i.getRangeAt(0);e.append(r),r.select(),r.selectionStart=0,r.selectionEnd=t.length;let o=!1;try{o=document.execCommand("copy")}catch{}r.remove(),a&&(i.removeAllRanges(),i.addRange(a)),n&&n.focus()}(t),r(!0),i.current=window.setTimeout(()=>{r(!1)},1e3)},[t]);return(0,n.useEffect)(()=>()=>window.clearTimeout(i.current),[]),{copyCode:a,isCopied:e}}function rt({className:t}){const{copyCode:e,isCopied:r}=et();return(0,g.jsx)(Z,{"aria-label":tt(r),title:(0,V.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,s.A)(t,J.copyButton,r&&J.copyButtonCopied),onClick:e,children:(0,g.jsxs)("span",{className:J.copyButtonIcons,"aria-hidden":"true",children:[(0,g.jsx)(X,{className:J.copyButtonIcon}),(0,g.jsx)(Q,{className:J.copyButtonSuccessIcon})]})})}function nt(t){return(0,g.jsx)("svg",{viewBox:"0 0 24 24",...t,children:(0,g.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const it="wordWrapButtonIcon_evTN",at="wordWrapButtonEnabled_Aice";function ot({className:t}){const{wordWrap:e}=M();if(!(e.isEnabled||e.isCodeScrollable))return!1;const r=(0,V.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,g.jsx)(Z,{onClick:()=>e.toggle(),className:(0,s.A)(t,e.isEnabled&&at),"aria-label":r,title:r,children:(0,g.jsx)(nt,{className:it,"aria-hidden":"true"})})}const st="buttonGroup_uSbf";function lt({className:t}){return(0,g.jsx)(G,{children:()=>(0,g.jsxs)("div",{className:(0,s.A)(t,st),children:[(0,g.jsx)(ot,{}),(0,g.jsx)(rt,{})]})})}const ct="codeBlockContent_nOVm",ht="codeBlockTitle_rVa_";function ut({className:t}){const{metadata:e}=M();return(0,g.jsxs)(L,{as:"div",className:(0,s.A)(t,e.className),children:[e.title&&(0,g.jsx)("div",{className:ht,children:(0,g.jsx)(I,{children:e.title})}),(0,g.jsxs)("div",{className:ct,children:[(0,g.jsx)(Y,{}),(0,g.jsx)(lt,{})]})]})}function dt(t){const e=function(t){const{prism:e}=(0,c.p)();return S({code:t.children,className:t.className,metastring:t.metastring,magicComments:e.magicComments,defaultLanguage:e.defaultLanguage,language:t.language,title:t.title,showLineNumbers:t.showLineNumbers})}(t),r=function(){const[t,e]=(0,n.useState)(!1),[r,i]=(0,n.useState)(!1),a=(0,n.useRef)(null),o=(0,n.useCallback)(()=>{const r=a.current.querySelector("code");t?r.removeAttribute("style"):(r.style.whiteSpace="pre-wrap",r.style.overflowWrap="anywhere"),e(t=>!t)},[a,t]),s=(0,n.useCallback)(()=>{const{scrollWidth:t,clientWidth:e}=a.current,r=t>e||a.current.querySelector("code").hasAttribute("style");i(r)},[a]);return R(a,s),(0,n.useEffect)(()=>{s()},[t,s]),(0,n.useEffect)(()=>(window.addEventListener("resize",s,{passive:!0}),()=>{window.removeEventListener("resize",s)}),[s]),{codeBlockRef:a,isEnabled:t,isCodeScrollable:r,toggle:o}}();return(0,g.jsx)(T,{metadata:e,wordWrap:r,children:(0,g.jsx)(ut,{})})}function pt({children:t,...e}){const r=(0,o.A)(),i=function(t){return n.Children.toArray(t).some(t=>(0,n.isValidElement)(t))?t:Array.isArray(t)?t.join(""):t}(t),a="string"==typeof i?dt:N;return(0,g.jsx)(a,{...e,children:i},String(r))}function ft(t){return(0,g.jsx)("code",{...t})}var gt=r(28827);var mt=r(65572),yt=r(42018);const xt="details_FSmu",bt="isBrowser_iXC9",kt="collapsibleContent_uSUc";function Ct(t){return!!t&&("SUMMARY"===t.tagName||Ct(t.parentElement))}function wt(t,e){return!!t&&(t===e||wt(t.parentElement,e))}function _t({summary:t,children:e,...r}){(0,mt.A)().collectAnchor(r.id);const i=(0,o.A)(),a=(0,n.useRef)(null),{collapsed:l,setCollapsed:c}=(0,yt.u)({initialState:!r.open}),[h,u]=(0,n.useState)(r.open),d=n.isValidElement(t)?t:(0,g.jsx)("summary",{children:t??"Details"});return(0,g.jsxs)("details",{...r,ref:a,open:h,"data-collapsed":l,className:(0,s.A)(xt,i&&bt,r.className),onMouseDown:t=>{Ct(t.target)&&t.detail>1&&t.preventDefault()},onClick:t=>{t.stopPropagation();const e=t.target;Ct(e)&&wt(e,a.current)&&(t.preventDefault(),l?(c(!1),u(!0)):c(!0))},children:[d,(0,g.jsx)(yt.N,{lazy:!1,collapsed:l,onCollapseTransitionEnd:t=>{c(t),u(!t)},children:(0,g.jsx)("div",{className:kt,children:e})})]})}const vt="details_seRW";function St({...t}){return(0,g.jsx)(_t,{...t,className:(0,s.A)("alert alert--info",vt,t.className)})}function At(t){const e=n.Children.toArray(t.children),r=e.find(t=>n.isValidElement(t)&&"summary"===t.type),i=(0,g.jsx)(g.Fragment,{children:e.filter(t=>t!==r)});return(0,g.jsx)(St,{...t,summary:r,children:i})}var Tt=r(45544);function Mt(t){return(0,g.jsx)(Tt.A,{...t})}const Bt="containsTaskList_RROW";function Lt(t){if(void 0!==t)return(0,s.A)(t,t?.includes("contains-task-list")&&Bt)}const Ft="img_AUsV";var $t=r(7674),Et=r(8155),Dt=r(62986),Nt=r(11889),Ot=r(57442),Rt=(r(84982),r(43545),r(61598),r(70837),r(24199)),It=r(47794),jt=r(77459),zt=r(95379),Pt=r(27293),Kt=r(86793),qt=r(61274),Wt="comm",Ht="rule",Ut="decl",Yt=Math.abs,Gt=String.fromCharCode;Object.assign;function Vt(t){return t.trim()}function Zt(t,e,r){return t.replace(e,r)}function Xt(t,e,r){return t.indexOf(e,r)}function Qt(t,e){return 0|t.charCodeAt(e)}function Jt(t,e,r){return t.slice(e,r)}function te(t){return t.length}function ee(t,e){return e.push(t),t}function re(t,e){for(var r="",n=0;n<t.length;n++)r+=e(t[n],n,t,e)||"";return r}function ne(t,e,r,n){switch(t.type){case"@layer":if(t.children.length)break;case"@import":case"@namespace":case Ut:return t.return=t.return||t.value;case Wt:return"";case"@keyframes":return t.return=t.value+"{"+re(t.children,n)+"}";case Ht:if(!te(t.value=t.props.join(",")))return""}return te(r=re(t.children,n))?t.return=t.value+"{"+r+"}":""}var ie=1,ae=1,oe=0,se=0,le=0,ce="";function he(t,e,r,n,i,a,o,s){return{value:t,root:e,parent:r,type:n,props:i,children:a,line:ie,column:ae,length:o,return:"",siblings:s}}function ue(){return le=se>0?Qt(ce,--se):0,ae--,10===le&&(ae=1,ie--),le}function de(){return le=se<oe?Qt(ce,se++):0,ae++,10===le&&(ae=1,ie++),le}function pe(){return Qt(ce,se)}function fe(){return se}function ge(t,e){return Jt(ce,t,e)}function me(t){switch(t){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function ye(t){return ie=ae=1,oe=te(ce=t),se=0,[]}function xe(t){return ce="",t}function be(t){return Vt(ge(se-1,we(91===t?t+2:40===t?t+1:t)))}function ke(t){for(;(le=pe())&&le<33;)de();return me(t)>2||me(le)>3?"":" "}function Ce(t,e){for(;--e&&de()&&!(le<48||le>102||le>57&&le<65||le>70&&le<97););return ge(t,fe()+(e<6&&32==pe()&&32==de()))}function we(t){for(;de();)switch(le){case t:return se;case 34:case 39:34!==t&&39!==t&&we(le);break;case 40:41===t&&we(t);break;case 92:de()}return se}function _e(t,e){for(;de()&&t+le!==57&&(t+le!==84||47!==pe()););return"/*"+ge(e,se-1)+"*"+Gt(47===t?t:de())}function ve(t){for(;!me(pe());)de();return ge(t,se)}function Se(t){return xe(Ae("",null,null,null,[""],t=ye(t),0,[0],t))}function Ae(t,e,r,n,i,a,o,s,l){for(var c=0,h=0,u=o,d=0,p=0,f=0,g=1,m=1,y=1,x=0,b="",k=i,C=a,w=n,_=b;m;)switch(f=x,x=de()){case 40:if(108!=f&&58==Qt(_,u-1)){-1!=Xt(_+=Zt(be(x),"&","&\f"),"&\f",Yt(c?s[c-1]:0))&&(y=-1);break}case 34:case 39:case 91:_+=be(x);break;case 9:case 10:case 13:case 32:_+=ke(f);break;case 92:_+=Ce(fe()-1,7);continue;case 47:switch(pe()){case 42:case 47:ee(Me(_e(de(),fe()),e,r,l),l),5!=me(f||1)&&5!=me(pe()||1)||!te(_)||" "===Jt(_,-1,void 0)||(_+=" ");break;default:_+="/"}break;case 123*g:s[c++]=te(_)*y;case 125*g:case 59:case 0:switch(x){case 0:case 125:m=0;case 59+h:-1==y&&(_=Zt(_,/\f/g,"")),p>0&&(te(_)-u||0===g&&47===f)&&ee(p>32?Be(_+";",n,r,u-1,l):Be(Zt(_," ","")+";",n,r,u-2,l),l);break;case 59:_+=";";default:if(ee(w=Te(_,e,r,c,h,i,s,b,k=[],C=[],u,a),a),123===x)if(0===h)Ae(_,e,w,w,k,a,u,s,C);else{switch(d){case 99:if(110===Qt(_,3))break;case 108:if(97===Qt(_,2))break;default:h=0;case 100:case 109:case 115:}h?Ae(t,w,w,n&&ee(Te(t,w,w,0,0,i,s,b,i,k=[],u,C),C),i,C,u,s,n?k:C):Ae(_,w,w,w,[""],C,0,s,C)}}c=h=p=0,g=y=1,b=_="",u=o;break;case 58:u=1+te(_),p=f;default:if(g<1)if(123==x)--g;else if(125==x&&0==g++&&125==ue())continue;switch(_+=Gt(x),x*g){case 38:y=h>0?1:(_+="\f",-1);break;case 44:s[c++]=(te(_)-1)*y,y=1;break;case 64:45===pe()&&(_+=be(de())),d=pe(),h=u=te(b=_+=ve(fe())),x++;break;case 45:45===f&&2==te(_)&&(g=0)}}return a}function Te(t,e,r,n,i,a,o,s,l,c,h,u){for(var d=i-1,p=0===i?a:[""],f=function(t){return t.length}(p),g=0,m=0,y=0;g<n;++g)for(var x=0,b=Jt(t,d+1,d=Yt(m=o[g])),k=t;x<f;++x)(k=Vt(m>0?p[x]+" "+b:Zt(b,/&\f/g,p[x])))&&(l[y++]=k);return he(t,e,r,0===i?Ht:s,l,c,h,u)}function Me(t,e,r,n){return he(t,e,r,Wt,Gt(le),Jt(t,2,-2),0,n)}function Be(t,e,r,n,i){return he(t,e,r,Ut,Jt(t,0,n),Jt(t,n+1,-1),n,i)}var Le=r(28404),Fe=r(90570),$e={id:"c4",detector:(0,Pt.K2)(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(6751).then(r.bind(r,76751));return{id:"c4",diagram:t}},"loader")},Ee="flowchart",De={id:Ee,detector:(0,Pt.K2)((t,e)=>"dagre-wrapper"!==e?.flowchart?.defaultRenderer&&"elk"!==e?.flowchart?.defaultRenderer&&/^\s*graph/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(3819).then(r.bind(r,33819));return{id:Ee,diagram:t}},"loader")},Ne="flowchart-v2",Oe={id:Ne,detector:(0,Pt.K2)((t,e)=>"dagre-d3"!==e?.flowchart?.defaultRenderer&&("elk"===e?.flowchart?.defaultRenderer&&(e.layout="elk"),!(!/^\s*graph/.test(t)||"dagre-wrapper"!==e?.flowchart?.defaultRenderer)||/^\s*flowchart/.test(t)),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(3819).then(r.bind(r,33819));return{id:Ne,diagram:t}},"loader")},Re={id:"er",detector:(0,Pt.K2)(t=>/^\s*erDiagram/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(6710).then(r.bind(r,46710));return{id:"er",diagram:t}},"loader")},Ie="gitGraph",je={id:Ie,detector:(0,Pt.K2)(t=>/^\s*gitGraph/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(1874),r.e(5381),r.e(7798)]).then(r.bind(r,27798));return{id:Ie,diagram:t}},"loader")},ze="gantt",Pe={id:ze,detector:(0,Pt.K2)(t=>/^\s*gantt/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(9111).then(r.bind(r,89111));return{id:ze,diagram:t}},"loader")},Ke="info",qe={id:Ke,detector:(0,Pt.K2)(t=>/^\s*info/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(1874),r.e(5381),r.e(6154)]).then(r.bind(r,26154));return{id:Ke,diagram:t}},"loader")},We={id:"pie",detector:(0,Pt.K2)(t=>/^\s*pie/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(1874),r.e(5381),r.e(570)]).then(r.bind(r,570));return{id:"pie",diagram:t}},"loader")},He="quadrantChart",Ue={id:He,detector:(0,Pt.K2)(t=>/^\s*quadrantChart/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(772).then(r.bind(r,50772));return{id:He,diagram:t}},"loader")},Ye="xychart",Ge={id:Ye,detector:(0,Pt.K2)(t=>/^\s*xychart-beta/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(2112).then(r.bind(r,12112));return{id:Ye,diagram:t}},"loader")},Ve="requirement",Ze={id:Ve,detector:(0,Pt.K2)(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(4343).then(r.bind(r,14343));return{id:Ve,diagram:t}},"loader")},Xe="sequence",Qe={id:Xe,detector:(0,Pt.K2)(t=>/^\s*sequenceDiagram/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(8297).then(r.bind(r,88297));return{id:Xe,diagram:t}},"loader")},Je="class",tr={id:Je,detector:(0,Pt.K2)((t,e)=>"dagre-wrapper"!==e?.class?.defaultRenderer&&/^\s*classDiagram/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(6377),r.e(5900)]).then(r.bind(r,95900));return{id:Je,diagram:t}},"loader")},er="classDiagram",rr={id:er,detector:(0,Pt.K2)((t,e)=>!(!/^\s*classDiagram/.test(t)||"dagre-wrapper"!==e?.class?.defaultRenderer)||/^\s*classDiagram-v2/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(6377),r.e(9538)]).then(r.bind(r,49538));return{id:er,diagram:t}},"loader")},nr="state",ir={id:nr,detector:(0,Pt.K2)((t,e)=>"dagre-wrapper"!==e?.state?.defaultRenderer&&/^\s*stateDiagram/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(1874),r.e(4326),r.e(5314),r.e(871)]).then(r.bind(r,20871));return{id:nr,diagram:t}},"loader")},ar="stateDiagram",or={id:ar,detector:(0,Pt.K2)((t,e)=>!!/^\s*stateDiagram-v2/.test(t)||!(!/^\s*stateDiagram/.test(t)||"dagre-wrapper"!==e?.state?.defaultRenderer),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(5314),r.e(8824)]).then(r.bind(r,78824));return{id:ar,diagram:t}},"loader")},sr="journey",lr={id:sr,detector:(0,Pt.K2)(t=>/^\s*journey/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(686).then(r.bind(r,10686));return{id:sr,diagram:t}},"loader")},cr={draw:(0,Pt.K2)((t,e,r)=>{Pt.Rm.debug("rendering svg for syntax error\n");const n=(0,zt.D)(e),i=n.append("g");n.attr("viewBox","0 0 2412 512"),(0,Pt.a$)(n,100,512,!0),i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw")},hr=cr,ur={db:{},renderer:cr,parser:{parse:(0,Pt.K2)(()=>{},"parse")}},dr="flowchart-elk",pr={id:dr,detector:(0,Pt.K2)((t,e={})=>!!(/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&"elk"===e?.flowchart?.defaultRenderer)&&(e.layout="elk",!0),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(3819).then(r.bind(r,33819));return{id:dr,diagram:t}},"loader")},fr="timeline",gr={id:fr,detector:(0,Pt.K2)(t=>/^\s*timeline/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(6538).then(r.bind(r,94157));return{id:fr,diagram:t}},"loader")},mr="mindmap",yr={id:mr,detector:(0,Pt.K2)(t=>/^\s*mindmap/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(8090),r.e(5163)]).then(r.bind(r,15163));return{id:mr,diagram:t}},"loader")},xr="kanban",br={id:xr,detector:(0,Pt.K2)(t=>/^\s*kanban/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(4477).then(r.bind(r,74477));return{id:xr,diagram:t}},"loader")},kr="sankey",Cr={id:kr,detector:(0,Pt.K2)(t=>/^\s*sankey-beta/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await r.e(2342).then(r.bind(r,82342));return{id:kr,diagram:t}},"loader")},wr="packet",_r={id:wr,detector:(0,Pt.K2)(t=>/^\s*packet-beta/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(1874),r.e(5381),r.e(1760)]).then(r.bind(r,21760));return{id:wr,diagram:t}},"loader")},vr="radar",Sr={id:vr,detector:(0,Pt.K2)(t=>/^\s*radar-beta/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(1874),r.e(5381),r.e(6144)]).then(r.bind(r,56144));return{id:vr,diagram:t}},"loader")},Ar="block",Tr={id:Ar,detector:(0,Pt.K2)(t=>/^\s*block-beta/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(1874),r.e(8065)]).then(r.bind(r,58065));return{id:Ar,diagram:t}},"loader")},Mr="architecture",Br={id:Mr,detector:(0,Pt.K2)(t=>/^\s*architecture/.test(t),"detector"),loader:(0,Pt.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(1874),r.e(5381),r.e(8090),r.e(6993)]).then(r.bind(r,46993));return{id:Mr,diagram:t}},"loader")},Lr=!1,Fr=(0,Pt.K2)(()=>{Lr||(Lr=!0,(0,Pt.Js)("error",ur,t=>"error"===t.toLowerCase().trim()),(0,Pt.Js)("---",{db:{clear:(0,Pt.K2)(()=>{},"clear")},styles:{},renderer:{draw:(0,Pt.K2)(()=>{},"draw")},parser:{parse:(0,Pt.K2)(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:(0,Pt.K2)(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),(0,Pt.Xd)(pr,yr,Br),(0,Pt.Xd)($e,br,rr,tr,Re,Pe,qe,We,Ze,Qe,Oe,De,gr,je,or,ir,lr,Ue,Cr,_r,Ge,Tr,Sr))},"addDiagrams"),$r=(0,Pt.K2)(async()=>{Pt.Rm.debug("Loading registered diagrams");const t=(await Promise.allSettled(Object.entries(Pt.mW).map(async([t,{detector:e,loader:r}])=>{if(r)try{(0,Pt.Gs)(t)}catch{try{const{diagram:t,id:n}=await r();(0,Pt.Js)(n,t,e)}catch(n){throw Pt.Rm.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete Pt.mW[t],n}}}))).filter(t=>"rejected"===t.status);if(t.length>0){Pt.Rm.error(`Failed to load ${t.length} external diagrams`);for(const e of t)Pt.Rm.error(e);throw new Error(`Failed to load ${t.length} external diagrams`)}},"loadRegisteredDiagrams");function Er(t,e){t.attr("role","graphics-document document"),""!==e&&t.attr("aria-roledescription",e)}function Dr(t,e,r,n){if(void 0!==t.insert){if(r){const e=`chart-desc-${n}`;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(r)}if(e){const r=`chart-title-${n}`;t.attr("aria-labelledby",r),t.insert("title",":first-child").attr("id",r).text(e)}}}(0,Pt.K2)(Er,"setA11yDiagramInfo"),(0,Pt.K2)(Dr,"addSVGa11yTitleDescription");var Nr=class t{constructor(t,e,r,n,i){this.type=t,this.text=e,this.db=r,this.parser=n,this.renderer=i}static{(0,Pt.K2)(this,"Diagram")}static async fromText(e,r={}){const n=(0,Pt.zj)(),i=(0,Pt.Ch)(e,n);e=(0,It.C4)(e)+"\n";try{(0,Pt.Gs)(i)}catch{const t=(0,Pt.J$)(i);if(!t)throw new Pt.C0(`Diagram ${i} not found.`);const{id:e,diagram:r}=await t();(0,Pt.Js)(e,r)}const{db:a,parser:o,renderer:s,init:l}=(0,Pt.Gs)(i);return o.parser&&(o.parser.yy=a),a.clear?.(),l?.(n),r.title&&a.setDiagramTitle?.(r.title),await o.parse(e),new t(i,e,a,o,s)}async render(t,e){await this.renderer.draw(this.text,t,e,this)}getParser(){return this.parser}getType(){return this.type}},Or=[],Rr=(0,Pt.K2)(()=>{Or.forEach(t=>{t()}),Or=[]},"attachFunctions"),Ir=(0,Pt.K2)(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function jr(t){const e=t.match(Pt.EJ);if(!e)return{text:t,metadata:{}};let r=(0,Nt.H)(e[1],{schema:Nt.r})??{};r="object"!=typeof r||Array.isArray(r)?{}:r;const n={};return r.displayMode&&(n.displayMode=r.displayMode.toString()),r.title&&(n.title=r.title.toString()),r.config&&(n.config=r.config),{text:t.slice(e[0].length),metadata:n}}(0,Pt.K2)(jr,"extractFrontMatter");var zr=(0,Pt.K2)(t=>t.replace(/\r\n?/g,"\n").replace(/<(\w+)([^>]*)>/g,(t,e,r)=>"<"+e+r.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),Pr=(0,Pt.K2)(t=>{const{text:e,metadata:r}=jr(t),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:e}},"processFrontmatter"),Kr=(0,Pt.K2)(t=>{const e=It._K.detectInit(t)??{},r=It._K.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:t})=>"wrap"===t):"wrap"===r?.type&&(e.wrap=!0),{text:(0,It.vU)(t),directive:e}},"processDirectives");function qr(t){const e=zr(t),r=Pr(e),n=Kr(r.text),i=(0,It.$t)(r.config,n.directive);return{code:t=Ir(n.text),title:r.title,config:i}}function Wr(t){const e=(new TextEncoder).encode(t),r=Array.from(e,t=>String.fromCodePoint(t)).join("");return btoa(r)}(0,Pt.K2)(qr,"preprocessDiagram"),(0,Pt.K2)(Wr,"toBase64");var Hr=["foreignobject"],Ur=["dominant-baseline"];function Yr(t){const e=qr(t);return(0,Pt.cL)(),(0,Pt.xA)(e.config??{}),e}async function Gr(t,e){Fr();try{const{code:e,config:r}=Yr(t);return{diagramType:(await on(e)).type,config:r}}catch(r){if(e?.suppressErrors)return!1;throw r}}(0,Pt.K2)(Yr,"processAndSetConfigs"),(0,Pt.K2)(Gr,"parse");var Vr=(0,Pt.K2)((t,e,r=[])=>`\n.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),Zr=(0,Pt.K2)((t,e=new Map)=>{let r="";if(void 0!==t.themeCSS&&(r+=`\n${t.themeCSS}`),void 0!==t.fontFamily&&(r+=`\n:root { --mermaid-font-family: ${t.fontFamily}}`),void 0!==t.altFontFamily&&(r+=`\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){const n=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(t=>{(0,Fe.A)(t.styles)||n.forEach(e=>{r+=Vr(t.id,e,t.styles)}),(0,Fe.A)(t.textStyles)||(r+=Vr(t.id,"tspan",(t?.textStyles||[]).map(t=>t.replace("color","fill"))))})}return r},"createCssStyles"),Xr=(0,Pt.K2)((t,e,r,n)=>{const i=Zr(t,r);return re(Se(`${n}{${(0,Pt.tM)(e,i,t.themeVariables)}}`),ne)},"createUserStyles"),Qr=(0,Pt.K2)((t="",e,r)=>{let n=t;return r||e||(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=(0,It.Sm)(n),n=n.replace(/<br>/g,"<br/>"),n},"cleanUpSvgCode"),Jr=(0,Pt.K2)((t="",e)=>`<iframe style="width:100%;height:${e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":"100%"};border:0;margin:0;" src="data:text/html;charset=UTF-8;base64,${Wr(`<body style="margin:0">${t}</body>`)}" sandbox="allow-top-navigation-by-user-activation allow-popups">\n The "iframe" tag is not supported by your browser.\n</iframe>`,"putIntoIFrame"),tn=(0,Pt.K2)((t,e,r,n,i)=>{const a=t.append("div");a.attr("id",r),n&&a.attr("style",n);const o=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return i&&o.attr("xmlns:xlink",i),o.append("g"),t},"appendDivSvgG");function en(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}(0,Pt.K2)(en,"sandboxedIframe");var rn=(0,Pt.K2)((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),nn=(0,Pt.K2)(async function(t,e,r){Fr();const n=Yr(e);e=n.code;const i=(0,Pt.zj)();Pt.Rm.debug(i),e.length>(i?.maxTextSize??5e4)&&(e="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa");const a="#"+t,o="i"+t,s="#"+o,l="d"+t,c="#"+l,h=(0,Pt.K2)(()=>{const t=d?s:c,e=(0,qt.Ltv)(t).node();e&&"remove"in e&&e.remove()},"removeTempElements");let u=(0,qt.Ltv)("body");const d="sandbox"===i.securityLevel,p="loose"===i.securityLevel,f=i.fontFamily;if(void 0!==r){if(r&&(r.innerHTML=""),d){const t=en((0,qt.Ltv)(r),o);u=(0,qt.Ltv)(t.nodes()[0].contentDocument.body),u.node().style.margin=0}else u=(0,qt.Ltv)(r);tn(u,t,l,`font-family: ${f}`,"http://www.w3.org/1999/xlink")}else{if(rn(document,t,l,o),d){const t=en((0,qt.Ltv)("body"),o);u=(0,qt.Ltv)(t.nodes()[0].contentDocument.body),u.node().style.margin=0}else u=(0,qt.Ltv)("body");tn(u,t,l)}let g,m;try{g=await Nr.fromText(e,{title:n.title})}catch(M){if(i.suppressErrorRendering)throw h(),M;g=await Nr.fromText("error"),m=M}const y=u.select(c).node(),x=g.type,b=y.firstChild,k=b.firstChild,C=g.renderer.getClasses?.(e,g),w=Xr(i,x,C,a),_=document.createElement("style");_.innerHTML=w,b.insertBefore(_,k);try{await g.renderer.draw(e,t,jt.n.version,g)}catch(B){throw i.suppressErrorRendering?h():hr.draw(e,t,jt.n.version),B}const v=u.select(`${c} svg`),S=g.db.getAccTitle?.(),A=g.db.getAccDescription?.();sn(x,v,S,A),u.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let T=u.select(c).node().innerHTML;if(Pt.Rm.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),T=Qr(T,d,(0,Pt._3)(i.arrowMarkerAbsolute)),d){const t=u.select(c+" svg").node();T=Jr(T,t)}else p||(T=Le.A.sanitize(T,{ADD_TAGS:Hr,ADD_ATTR:Ur,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(Rr(),m)throw m;return h(),{diagramType:x,svg:T,bindFunctions:g.db.bindFunctions}},"render");function an(t={}){const e=(0,Pt.hH)({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),(0,Pt.wZ)(e),e?.theme&&e.theme in Pt.H$?e.themeVariables=Pt.H$[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=Pt.H$.default.getThemeVariables(e.themeVariables));const r="object"==typeof e?(0,Pt.UU)(e):(0,Pt.Q2)();(0,Pt.He)(r.logLevel),Fr()}(0,Pt.K2)(an,"initialize");var on=(0,Pt.K2)((t,e={})=>{const{code:r}=qr(t);return Nr.fromText(r,e)},"getDiagramFromText");function sn(t,e,r,n){Er(e,t),Dr(e,r,n,e.attr("id"))}(0,Pt.K2)(sn,"addA11yInfo");var ln=Object.freeze({render:nn,parse:Gr,getDiagramFromText:on,initialize:an,getConfig:Pt.zj,setConfig:Pt.Nk,getSiteConfig:Pt.Q2,updateSiteConfig:Pt.B6,reset:(0,Pt.K2)(()=>{(0,Pt.cL)()},"reset"),globalReset:(0,Pt.K2)(()=>{(0,Pt.cL)(Pt.sb)},"globalReset"),defaultConfig:Pt.sb});(0,Pt.He)((0,Pt.zj)().logLevel),(0,Pt.cL)((0,Pt.zj)());var cn=(0,Pt.K2)((t,e,r)=>{Pt.Rm.warn(t),(0,It.dq)(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),hn=(0,Pt.K2)(async function(t={querySelector:".mermaid"}){try{await un(t)}catch(e){if((0,It.dq)(e)&&Pt.Rm.error(e.str),wn.parseError&&wn.parseError(e),!t.suppressErrors)throw Pt.Rm.error("Use the suppressErrors option to suppress these errors"),e}},"run"),un=(0,Pt.K2)(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){const n=ln.getConfig();let i;if(Pt.Rm.debug((t?"":"No ")+"Callback function found"),r)i=r;else{if(!e)throw new Error("Nodes and querySelector are both undefined");i=document.querySelectorAll(e)}Pt.Rm.debug(`Found ${i.length} diagrams`),void 0!==n?.startOnLoad&&(Pt.Rm.debug("Start On Load: "+n?.startOnLoad),ln.updateSiteConfig({startOnLoad:n?.startOnLoad}));const a=new It._K.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed);let o;const s=[];for(const c of Array.from(i)){if(Pt.Rm.info("Rendering diagram: "+c.id),c.getAttribute("data-processed"))continue;c.setAttribute("data-processed","true");const e=`mermaid-${a.next()}`;o=c.innerHTML,o=(0,Kt.T)(It._K.entityDecode(o)).trim().replace(/<br\s*\/?>/gi,"<br/>");const r=It._K.detectInit(o);r&&Pt.Rm.debug("Detected early reinit: ",r);try{const{svg:r,bindFunctions:n}=await Cn(e,o,c);c.innerHTML=r,t&&await t(e),n&&n(c)}catch(l){cn(l,s,wn.parseError)}}if(s.length>0)throw s[0]},"runThrowsErrors"),dn=(0,Pt.K2)(function(t){ln.initialize(t)},"initialize"),pn=(0,Pt.K2)(async function(t,e,r){Pt.Rm.warn("mermaid.init is deprecated. Please use run instead."),t&&dn(t);const n={postRenderCallback:r,querySelector:".mermaid"};"string"==typeof e?n.querySelector=e:e&&(e instanceof HTMLElement?n.nodes=[e]:n.nodes=e),await hn(n)},"init"),fn=(0,Pt.K2)(async(t,{lazyLoad:e=!0}={})=>{Fr(),(0,Pt.Xd)(...t),!1===e&&await $r()},"registerExternalDiagrams"),gn=(0,Pt.K2)(function(){if(wn.startOnLoad){const{startOnLoad:t}=ln.getConfig();t&&wn.run().catch(t=>Pt.Rm.error("Mermaid failed to initialize",t))}},"contentLoaded");"undefined"!=typeof document&&window.addEventListener("load",gn,!1);var mn=(0,Pt.K2)(function(t){wn.parseError=t},"setParseErrorHandler"),yn=[],xn=!1,bn=(0,Pt.K2)(async()=>{if(!xn){for(xn=!0;yn.length>0;){const e=yn.shift();if(e)try{await e()}catch(t){Pt.Rm.error("Error executing queue",t)}}xn=!1}},"executeQueue"),kn=(0,Pt.K2)(async(t,e)=>new Promise((r,n)=>{const i=(0,Pt.K2)(()=>new Promise((i,a)=>{ln.parse(t,e).then(t=>{i(t),r(t)},t=>{Pt.Rm.error("Error parsing",t),wn.parseError?.(t),a(t),n(t)})}),"performCall");yn.push(i),bn().catch(n)}),"parse"),Cn=(0,Pt.K2)((t,e,r)=>new Promise((n,i)=>{const a=(0,Pt.K2)(()=>new Promise((a,o)=>{ln.render(t,e,r).then(t=>{a(t),n(t)},t=>{Pt.Rm.error("Error parsing",t),wn.parseError?.(t),o(t),i(t)})}),"performCall");yn.push(a),bn().catch(i)}),"render"),wn={startOnLoad:!0,mermaidAPI:ln,parse:kn,render:Cn,init:pn,run:hn,registerExternalDiagrams:fn,registerLayoutLoaders:Ot.sO,initialize:dn,parseError:void 0,contentLoaded:gn,setParseErrorHandler:mn,detectType:Pt.Ch,registerIconPacks:Rt.pC},_n=wn;function vn(){const{colorMode:t}=(0,l.G)(),e=(0,c.p)().mermaid,r=e.theme[t],{options:i}=e;return(0,n.useMemo)(()=>({startOnLoad:!1,...i,theme:r}),[r,i])}function Sn({text:t,config:e}){const[r,i]=(0,n.useState)(null),a=(0,n.useState)(`mermaid-svg-${Math.round(1e7*Math.random())}`)[0],o=vn(),s=e??o;return(0,n.useEffect)(()=>{(async function({id:t,text:e,config:r}){_n.mermaidAPI.initialize(r);try{return await _n.render(t,e)}catch(n){throw document.querySelector(`#d${t}`)?.remove(),n}})({id:a,text:t,config:s}).then(i).catch(t=>{i(()=>{throw t})})},[a,t,s]),r}const An="container_QZpv";function Tn({renderResult:t}){const e=(0,n.useRef)(null);return(0,n.useEffect)(()=>{const r=e.current;t.bindFunctions?.(r)},[t]),(0,g.jsx)("div",{ref:e,className:`docusaurus-mermaid-container ${An}`,dangerouslySetInnerHTML:{__html:t.svg}})}function Mn({value:t}){const e=Sn({text:t});return null===e?null:(0,g.jsx)(Tn,{renderResult:e})}const Bn={Head:a.A,details:At,Details:At,code:function(t){return function(t){return void 0!==t.children&&n.Children.toArray(t.children).every(t=>"string"==typeof t&&!t.includes("\n"))}(t)?(0,g.jsx)(ft,{...t}):(0,g.jsx)(pt,{...t})},a:function(t){return(0,g.jsx)(gt.A,{...t})},pre:function(t){return(0,g.jsx)(g.Fragment,{children:t.children})},ul:function(t){return(0,g.jsx)("ul",{...t,className:Lt(t.className)})},li:function(t){return(0,mt.A)().collectAnchor(t.id),(0,g.jsx)("li",{...t})},img:function(t){return(0,g.jsx)("img",{decoding:"async",loading:"lazy",...t,className:(e=t.className,(0,s.A)(e,Ft))});var e},h1:t=>(0,g.jsx)(Mt,{as:"h1",...t}),h2:t=>(0,g.jsx)(Mt,{as:"h2",...t}),h3:t=>(0,g.jsx)(Mt,{as:"h3",...t}),h4:t=>(0,g.jsx)(Mt,{as:"h4",...t}),h5:t=>(0,g.jsx)(Mt,{as:"h5",...t}),h6:t=>(0,g.jsx)(Mt,{as:"h6",...t}),admonition:$t.A,mermaid:function(t){return(0,g.jsx)(Et.A,{fallback:t=>(0,g.jsx)(Dt.MN,{...t}),children:(0,g.jsx)(Mn,{...t})})}};function Ln({children:t}){return(0,g.jsx)(i.x,{components:Bn,children:t})}},4003:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(45786);function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var r=function(){var n=arguments,i=e?e.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var o=t.apply(this,n);return r.cache=a.set(i,o)||a,o};return r.cache=new(i.Cache||n.A),r}i.Cache=n.A;const a=i},5220:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t){return function(e){return t(e)}}},6727:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n="object"==typeof global&&global&&global.Object===Object&&global},7674:(t,e,r)=>{"use strict";r.d(e,{A:()=>$});var n=r(36672),i=r(23420);function a(t){const{mdxAdmonitionTitle:e,rest:r}=function(t){const e=n.Children.toArray(t),r=e.find(t=>n.isValidElement(t)&&"mdxAdmonitionTitle"===t.type),a=e.filter(t=>t!==r),o=r?.props.children;return{mdxAdmonitionTitle:o,rest:a.length>0?(0,i.jsx)(i.Fragment,{children:a}):null}}(t.children),a=t.title??e;return{...t,...a&&{title:a},children:r}}var o=r(13526),s=r(50120),l=r(40987);const c="admonition_NGYd",h="admonitionHeading_hx_a",u="admonitionIcon_n04r",d="admonitionContent_LOU5";function p({type:t,className:e,children:r}){return(0,i.jsx)("div",{className:(0,o.A)(l.G.common.admonition,l.G.common.admonitionType(t),c,e),children:r})}function f({icon:t,title:e}){return(0,i.jsxs)("div",{className:h,children:[(0,i.jsx)("span",{className:u,children:t}),e]})}function g({children:t}){return t?(0,i.jsx)("div",{className:d,children:t}):null}function m(t){const{type:e,icon:r,title:n,children:a,className:o}=t;return(0,i.jsxs)(p,{type:e,className:o,children:[n||r?(0,i.jsx)(f,{title:n,icon:r}):null,(0,i.jsx)(g,{children:a})]})}function y(t){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...t,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const x={icon:(0,i.jsx)(y,{}),title:(0,i.jsx)(s.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function b(t){return(0,i.jsx)(m,{...x,...t,className:(0,o.A)("alert alert--secondary",t.className),children:t.children})}function k(t){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...t,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const C={icon:(0,i.jsx)(k,{}),title:(0,i.jsx)(s.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function w(t){return(0,i.jsx)(m,{...C,...t,className:(0,o.A)("alert alert--success",t.className),children:t.children})}function _(t){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...t,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const v={icon:(0,i.jsx)(_,{}),title:(0,i.jsx)(s.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function S(t){return(0,i.jsx)(m,{...v,...t,className:(0,o.A)("alert alert--info",t.className),children:t.children})}function A(t){return(0,i.jsx)("svg",{viewBox:"0 0 16 16",...t,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const T={icon:(0,i.jsx)(A,{}),title:(0,i.jsx)(s.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function M(t){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...t,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const B={icon:(0,i.jsx)(M,{}),title:(0,i.jsx)(s.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const L={icon:(0,i.jsx)(A,{}),title:(0,i.jsx)(s.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const F={...{note:b,tip:w,info:S,warning:function(t){return(0,i.jsx)(m,{...T,...t,className:(0,o.A)("alert alert--warning",t.className),children:t.children})},danger:function(t){return(0,i.jsx)(m,{...B,...t,className:(0,o.A)("alert alert--danger",t.className),children:t.children})}},...{secondary:t=>(0,i.jsx)(b,{title:"secondary",...t}),important:t=>(0,i.jsx)(S,{title:"important",...t}),success:t=>(0,i.jsx)(w,{title:"success",...t}),caution:function(t){return(0,i.jsx)(m,{...L,...t,className:(0,o.A)("alert alert--warning",t.className),children:t.children})}}};function $(t){const e=a(t),r=(n=e.type,F[n]||(console.warn(`No admonition component found for admonition type "${n}". Using Info as fallback.`),F.info));var n;return(0,i.jsx)(r,{...e})}},9554:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}},9634:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=r(83927);const i=function(t){var e=new t.constructor(t.byteLength);return new n.A(e).set(new n.A(t)),e}},10130:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var n=r(6727),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=i&&"object"==typeof module&&module&&!module.nodeType&&module,o=a&&a.exports===i&&n.A.process;const s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(e){}}()},10748:(t,e,r)=>{"use strict";r.d(e,{A:()=>y});r(36672);var n=r(13526),i=r(50120),a=r(40987),o=r(28827);const s={iconEdit:"iconEdit_M1a8"};var l=r(23420);function c({className:t,...e}){return(0,l.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,n.A)(s.iconEdit,t),"aria-hidden":"true",...e,children:(0,l.jsx)("g",{children:(0,l.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function h({editUrl:t}){return(0,l.jsxs)(o.A,{to:t,className:a.G.common.editThisPage,children:[(0,l.jsx)(c,{}),(0,l.jsx)(i.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var u=r(68035);function d(t={}){const{i18n:{currentLocale:e}}=(0,u.A)(),r=function(){const{i18n:{currentLocale:t,localeConfigs:e}}=(0,u.A)();return e[t].calendar}();return new Intl.DateTimeFormat(e,{calendar:r,...t})}function p({lastUpdatedAt:t}){const e=new Date(t),r=d({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(e);return(0,l.jsx)(i.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,l.jsx)("b",{children:(0,l.jsx)("time",{dateTime:e.toISOString(),itemProp:"dateModified",children:r})})},children:" on {date}"})}function f({lastUpdatedBy:t}){return(0,l.jsx)(i.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,l.jsx)("b",{children:t})},children:" by {user}"})}function g({lastUpdatedAt:t,lastUpdatedBy:e}){return(0,l.jsxs)("span",{className:a.G.common.lastUpdated,children:[(0,l.jsx)(i.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,l.jsx)(p,{lastUpdatedAt:t}):"",byUser:e?(0,l.jsx)(f,{lastUpdatedBy:e}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const m={lastUpdated:"lastUpdated_UgWq"};function y({className:t,editUrl:e,lastUpdatedAt:r,lastUpdatedBy:i}){return(0,l.jsxs)("div",{className:(0,n.A)("row",t),children:[(0,l.jsx)("div",{className:"col",children:e&&(0,l.jsx)(h,{editUrl:e})}),(0,l.jsx)("div",{className:(0,n.A)("col",m.lastUpdated),children:(r||i)&&(0,l.jsx)(g,{lastUpdatedAt:r,lastUpdatedBy:i})})]})}},11628:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(46554),i=r(55385);const a=(t,e,r)=>{const a=i.A.parse(t),o=a[e],s=n.A.channel.clamp[e](o+r);return o!==s&&(a[e]=s),i.A.stringify(a)}},11889:(t,e,r)=>{"use strict";r.d(e,{H:()=>rr,r:()=>er});var n=r(27293);function i(t){return null==t}function a(t){return"object"==typeof t&&null!==t}function o(t){return Array.isArray(t)?t:i(t)?[]:[t]}function s(t,e){var r,n,i,a;if(e)for(r=0,n=(a=Object.keys(e)).length;r<n;r+=1)t[i=a[r]]=e[i];return t}function l(t,e){var r,n="";for(r=0;r<e;r+=1)n+=t;return n}function c(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t}(0,n.K2)(i,"isNothing"),(0,n.K2)(a,"isObject"),(0,n.K2)(o,"toArray"),(0,n.K2)(s,"extend"),(0,n.K2)(l,"repeat"),(0,n.K2)(c,"isNegativeZero");var h={isNothing:i,isObject:a,toArray:o,repeat:l,isNegativeZero:c,extend:s};function u(t,e){var r="",n=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(r+='in "'+t.mark.name+'" '),r+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!e&&t.mark.snippet&&(r+="\n\n"+t.mark.snippet),n+" "+r):n}function d(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=u(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}(0,n.K2)(u,"formatError"),(0,n.K2)(d,"YAMLException$1"),d.prototype=Object.create(Error.prototype),d.prototype.constructor=d,d.prototype.toString=(0,n.K2)(function(t){return this.name+": "+u(this,t)},"toString");var p=d;function f(t,e,r,n,i){var a="",o="",s=Math.floor(i/2)-1;return n-e>s&&(e=n-s+(a=" ... ").length),r-n>s&&(r=n+s-(o=" ...").length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+o,pos:n-e+a.length}}function g(t,e){return h.repeat(" ",e-t.length)+t}function m(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var r,n=/\r?\n|\r|\0/g,i=[0],a=[],o=-1;r=n.exec(t.buffer);)a.push(r.index),i.push(r.index+r[0].length),t.position<=r.index&&o<0&&(o=i.length-2);o<0&&(o=i.length-1);var s,l,c="",u=Math.min(t.line+e.linesAfter,a.length).toString().length,d=e.maxLength-(e.indent+u+3);for(s=1;s<=e.linesBefore&&!(o-s<0);s++)l=f(t.buffer,i[o-s],a[o-s],t.position-(i[o]-i[o-s]),d),c=h.repeat(" ",e.indent)+g((t.line-s+1).toString(),u)+" | "+l.str+"\n"+c;for(l=f(t.buffer,i[o],a[o],t.position,d),c+=h.repeat(" ",e.indent)+g((t.line+1).toString(),u)+" | "+l.str+"\n",c+=h.repeat("-",e.indent+u+3+l.pos)+"^\n",s=1;s<=e.linesAfter&&!(o+s>=a.length);s++)l=f(t.buffer,i[o+s],a[o+s],t.position-(i[o]-i[o+s]),d),c+=h.repeat(" ",e.indent)+g((t.line+s+1).toString(),u)+" | "+l.str+"\n";return c.replace(/\n$/,"")}(0,n.K2)(f,"getLine"),(0,n.K2)(g,"padStart"),(0,n.K2)(m,"makeSnippet");var y=m,x=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],b=["scalar","sequence","mapping"];function k(t){var e={};return null!==t&&Object.keys(t).forEach(function(r){t[r].forEach(function(t){e[String(t)]=r})}),e}function C(t,e){if(e=e||{},Object.keys(e).forEach(function(e){if(-1===x.indexOf(e))throw new p('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=k(e.styleAliases||null),-1===b.indexOf(this.kind))throw new p('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}(0,n.K2)(k,"compileStyleAliases"),(0,n.K2)(C,"Type$1");var w=C;function _(t,e){var r=[];return t[e].forEach(function(t){var e=r.length;r.forEach(function(r,n){r.tag===t.tag&&r.kind===t.kind&&r.multi===t.multi&&(e=n)}),r[e]=t}),r}function v(){var t,e,r={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(t){t.multi?(r.multi[t.kind].push(t),r.multi.fallback.push(t)):r[t.kind][t.tag]=r.fallback[t.tag]=t}for((0,n.K2)(i,"collectType"),t=0,e=arguments.length;t<e;t+=1)arguments[t].forEach(i);return r}function S(t){return this.extend(t)}(0,n.K2)(_,"compileList"),(0,n.K2)(v,"compileMap"),(0,n.K2)(S,"Schema$1"),S.prototype.extend=(0,n.K2)(function(t){var e=[],r=[];if(t instanceof w)r.push(t);else if(Array.isArray(t))r=r.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new p("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(r=r.concat(t.explicit))}e.forEach(function(t){if(!(t instanceof w))throw new p("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new p("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new p("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(t){if(!(t instanceof w))throw new p("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var n=Object.create(S.prototype);return n.implicit=(this.implicit||[]).concat(e),n.explicit=(this.explicit||[]).concat(r),n.compiledImplicit=_(n,"implicit"),n.compiledExplicit=_(n,"explicit"),n.compiledTypeMap=v(n.compiledImplicit,n.compiledExplicit),n},"extend");var A=new S({explicit:[new w("tag:yaml.org,2002:str",{kind:"scalar",construct:(0,n.K2)(function(t){return null!==t?t:""},"construct")}),new w("tag:yaml.org,2002:seq",{kind:"sequence",construct:(0,n.K2)(function(t){return null!==t?t:[]},"construct")}),new w("tag:yaml.org,2002:map",{kind:"mapping",construct:(0,n.K2)(function(t){return null!==t?t:{}},"construct")})]});function T(t){if(null===t)return!0;var e=t.length;return 1===e&&"~"===t||4===e&&("null"===t||"Null"===t||"NULL"===t)}function M(){return null}function B(t){return null===t}(0,n.K2)(T,"resolveYamlNull"),(0,n.K2)(M,"constructYamlNull"),(0,n.K2)(B,"isNull");var L=new w("tag:yaml.org,2002:null",{kind:"scalar",resolve:T,construct:M,predicate:B,represent:{canonical:(0,n.K2)(function(){return"~"},"canonical"),lowercase:(0,n.K2)(function(){return"null"},"lowercase"),uppercase:(0,n.K2)(function(){return"NULL"},"uppercase"),camelcase:(0,n.K2)(function(){return"Null"},"camelcase"),empty:(0,n.K2)(function(){return""},"empty")},defaultStyle:"lowercase"});function F(t){if(null===t)return!1;var e=t.length;return 4===e&&("true"===t||"True"===t||"TRUE"===t)||5===e&&("false"===t||"False"===t||"FALSE"===t)}function $(t){return"true"===t||"True"===t||"TRUE"===t}function E(t){return"[object Boolean]"===Object.prototype.toString.call(t)}(0,n.K2)(F,"resolveYamlBoolean"),(0,n.K2)($,"constructYamlBoolean"),(0,n.K2)(E,"isBoolean");var D=new w("tag:yaml.org,2002:bool",{kind:"scalar",resolve:F,construct:$,predicate:E,represent:{lowercase:(0,n.K2)(function(t){return t?"true":"false"},"lowercase"),uppercase:(0,n.K2)(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:(0,n.K2)(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});function N(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function O(t){return 48<=t&&t<=55}function R(t){return 48<=t&&t<=57}function I(t){if(null===t)return!1;var e,r=t.length,n=0,i=!1;if(!r)return!1;if("-"!==(e=t[n])&&"+"!==e||(e=t[++n]),"0"===e){if(n+1===r)return!0;if("b"===(e=t[++n])){for(n++;n<r;n++)if("_"!==(e=t[n])){if("0"!==e&&"1"!==e)return!1;i=!0}return i&&"_"!==e}if("x"===e){for(n++;n<r;n++)if("_"!==(e=t[n])){if(!N(t.charCodeAt(n)))return!1;i=!0}return i&&"_"!==e}if("o"===e){for(n++;n<r;n++)if("_"!==(e=t[n])){if(!O(t.charCodeAt(n)))return!1;i=!0}return i&&"_"!==e}}if("_"===e)return!1;for(;n<r;n++)if("_"!==(e=t[n])){if(!R(t.charCodeAt(n)))return!1;i=!0}return!(!i||"_"===e)}function j(t){var e,r=t,n=1;if(-1!==r.indexOf("_")&&(r=r.replace(/_/g,"")),"-"!==(e=r[0])&&"+"!==e||("-"===e&&(n=-1),e=(r=r.slice(1))[0]),"0"===r)return 0;if("0"===e){if("b"===r[1])return n*parseInt(r.slice(2),2);if("x"===r[1])return n*parseInt(r.slice(2),16);if("o"===r[1])return n*parseInt(r.slice(2),8)}return n*parseInt(r,10)}function z(t){return"[object Number]"===Object.prototype.toString.call(t)&&t%1==0&&!h.isNegativeZero(t)}(0,n.K2)(N,"isHexCode"),(0,n.K2)(O,"isOctCode"),(0,n.K2)(R,"isDecCode"),(0,n.K2)(I,"resolveYamlInteger"),(0,n.K2)(j,"constructYamlInteger"),(0,n.K2)(z,"isInteger");var P=new w("tag:yaml.org,2002:int",{kind:"scalar",resolve:I,construct:j,predicate:z,represent:{binary:(0,n.K2)(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:(0,n.K2)(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:(0,n.K2)(function(t){return t.toString(10)},"decimal"),hexadecimal:(0,n.K2)(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),K=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function q(t){return null!==t&&!(!K.test(t)||"_"===t[t.length-1])}function W(t){var e,r;return r="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:r*parseFloat(e,10)}(0,n.K2)(q,"resolveYamlFloat"),(0,n.K2)(W,"constructYamlFloat");var H=/^[-+]?[0-9]+e/;function U(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(h.isNegativeZero(t))return"-0.0";return r=t.toString(10),H.test(r)?r.replace("e",".e"):r}function Y(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||h.isNegativeZero(t))}(0,n.K2)(U,"representYamlFloat"),(0,n.K2)(Y,"isFloat");var G=new w("tag:yaml.org,2002:float",{kind:"scalar",resolve:q,construct:W,predicate:Y,represent:U,defaultStyle:"lowercase"}),V=A.extend({implicit:[L,D,P,G]}),Z=V,X=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Q=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function J(t){return null!==t&&(null!==X.exec(t)||null!==Q.exec(t))}function tt(t){var e,r,n,i,a,o,s,l,c=0,h=null;if(null===(e=X.exec(t))&&(e=Q.exec(t)),null===e)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(a=+e[4],o=+e[5],s=+e[6],e[7]){for(c=e[7].slice(0,3);c.length<3;)c+="0";c=+c}return e[9]&&(h=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(h=-h)),l=new Date(Date.UTC(r,n,i,a,o,s,c)),h&&l.setTime(l.getTime()-h),l}function et(t){return t.toISOString()}(0,n.K2)(J,"resolveYamlTimestamp"),(0,n.K2)(tt,"constructYamlTimestamp"),(0,n.K2)(et,"representYamlTimestamp");var rt=new w("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:J,construct:tt,instanceOf:Date,represent:et});function nt(t){return"<<"===t||null===t}(0,n.K2)(nt,"resolveYamlMerge");var it=new w("tag:yaml.org,2002:merge",{kind:"scalar",resolve:nt}),at="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";function ot(t){if(null===t)return!1;var e,r,n=0,i=t.length,a=at;for(r=0;r<i;r++)if(!((e=a.indexOf(t.charAt(r)))>64)){if(e<0)return!1;n+=6}return n%8==0}function st(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,a=at,o=0,s=[];for(e=0;e<i;e++)e%4==0&&e&&(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|a.indexOf(n.charAt(e));return 0===(r=i%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===r?(s.push(o>>10&255),s.push(o>>2&255)):12===r&&s.push(o>>4&255),new Uint8Array(s)}function lt(t){var e,r,n="",i=0,a=t.length,o=at;for(e=0;e<a;e++)e%3==0&&e&&(n+=o[i>>18&63],n+=o[i>>12&63],n+=o[i>>6&63],n+=o[63&i]),i=(i<<8)+t[e];return 0===(r=a%3)?(n+=o[i>>18&63],n+=o[i>>12&63],n+=o[i>>6&63],n+=o[63&i]):2===r?(n+=o[i>>10&63],n+=o[i>>4&63],n+=o[i<<2&63],n+=o[64]):1===r&&(n+=o[i>>2&63],n+=o[i<<4&63],n+=o[64],n+=o[64]),n}function ct(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}(0,n.K2)(ot,"resolveYamlBinary"),(0,n.K2)(st,"constructYamlBinary"),(0,n.K2)(lt,"representYamlBinary"),(0,n.K2)(ct,"isBinary");var ht=new w("tag:yaml.org,2002:binary",{kind:"scalar",resolve:ot,construct:st,predicate:ct,represent:lt}),ut=Object.prototype.hasOwnProperty,dt=Object.prototype.toString;function pt(t){if(null===t)return!0;var e,r,n,i,a,o=[],s=t;for(e=0,r=s.length;e<r;e+=1){if(n=s[e],a=!1,"[object Object]"!==dt.call(n))return!1;for(i in n)if(ut.call(n,i)){if(a)return!1;a=!0}if(!a)return!1;if(-1!==o.indexOf(i))return!1;o.push(i)}return!0}function ft(t){return null!==t?t:[]}(0,n.K2)(pt,"resolveYamlOmap"),(0,n.K2)(ft,"constructYamlOmap");var gt=new w("tag:yaml.org,2002:omap",{kind:"sequence",resolve:pt,construct:ft}),mt=Object.prototype.toString;function yt(t){if(null===t)return!0;var e,r,n,i,a,o=t;for(a=new Array(o.length),e=0,r=o.length;e<r;e+=1){if(n=o[e],"[object Object]"!==mt.call(n))return!1;if(1!==(i=Object.keys(n)).length)return!1;a[e]=[i[0],n[i[0]]]}return!0}function xt(t){if(null===t)return[];var e,r,n,i,a,o=t;for(a=new Array(o.length),e=0,r=o.length;e<r;e+=1)n=o[e],i=Object.keys(n),a[e]=[i[0],n[i[0]]];return a}(0,n.K2)(yt,"resolveYamlPairs"),(0,n.K2)(xt,"constructYamlPairs");var bt=new w("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:yt,construct:xt}),kt=Object.prototype.hasOwnProperty;function Ct(t){if(null===t)return!0;var e,r=t;for(e in r)if(kt.call(r,e)&&null!==r[e])return!1;return!0}function wt(t){return null!==t?t:{}}(0,n.K2)(Ct,"resolveYamlSet"),(0,n.K2)(wt,"constructYamlSet");var _t=new w("tag:yaml.org,2002:set",{kind:"mapping",resolve:Ct,construct:wt}),vt=Z.extend({implicit:[rt,it],explicit:[ht,gt,bt,_t]}),St=Object.prototype.hasOwnProperty,At=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Tt=/[\x85\u2028\u2029]/,Mt=/[,\[\]\{\}]/,Bt=/^(?:!|!!|![a-z\-]+!)$/i,Lt=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Ft(t){return Object.prototype.toString.call(t)}function $t(t){return 10===t||13===t}function Et(t){return 9===t||32===t}function Dt(t){return 9===t||32===t||10===t||13===t}function Nt(t){return 44===t||91===t||93===t||123===t||125===t}function Ot(t){var e;return 48<=t&&t<=57?t-48:97<=(e=32|t)&&e<=102?e-97+10:-1}function Rt(t){return 120===t?2:117===t?4:85===t?8:0}function It(t){return 48<=t&&t<=57?t-48:-1}function jt(t){return 48===t?"\0":97===t?"\x07":98===t?"\b":116===t||9===t?"\t":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"\x1b":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"\x85":95===t?"\xa0":76===t?"\u2028":80===t?"\u2029":""}function zt(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}(0,n.K2)(Ft,"_class"),(0,n.K2)($t,"is_EOL"),(0,n.K2)(Et,"is_WHITE_SPACE"),(0,n.K2)(Dt,"is_WS_OR_EOL"),(0,n.K2)(Nt,"is_FLOW_INDICATOR"),(0,n.K2)(Ot,"fromHexCode"),(0,n.K2)(Rt,"escapedHexLen"),(0,n.K2)(It,"fromDecimalCode"),(0,n.K2)(jt,"simpleEscapeSequence"),(0,n.K2)(zt,"charFromCodepoint");var Pt,Kt=new Array(256),qt=new Array(256);for(Pt=0;Pt<256;Pt++)Kt[Pt]=jt(Pt)?1:0,qt[Pt]=jt(Pt);function Wt(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||vt,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Ht(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=y(r),new p(e,r)}function Ut(t,e){throw Ht(t,e)}function Yt(t,e){t.onWarning&&t.onWarning.call(null,Ht(t,e))}(0,n.K2)(Wt,"State$1"),(0,n.K2)(Ht,"generateError"),(0,n.K2)(Ut,"throwError"),(0,n.K2)(Yt,"throwWarning");var Gt={YAML:(0,n.K2)(function(t,e,r){var n,i,a;null!==t.version&&Ut(t,"duplication of %YAML directive"),1!==r.length&&Ut(t,"YAML directive accepts exactly one argument"),null===(n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&Ut(t,"ill-formed argument of the YAML directive"),i=parseInt(n[1],10),a=parseInt(n[2],10),1!==i&&Ut(t,"unacceptable YAML version of the document"),t.version=r[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&Yt(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:(0,n.K2)(function(t,e,r){var n,i;2!==r.length&&Ut(t,"TAG directive accepts exactly two arguments"),n=r[0],i=r[1],Bt.test(n)||Ut(t,"ill-formed tag handle (first argument) of the TAG directive"),St.call(t.tagMap,n)&&Ut(t,'there is a previously declared suffix for "'+n+'" tag handle'),Lt.test(i)||Ut(t,"ill-formed tag prefix (second argument) of the TAG directive");try{i=decodeURIComponent(i)}catch(a){Ut(t,"tag prefix is malformed: "+i)}t.tagMap[n]=i},"handleTagDirective")};function Vt(t,e,r,n){var i,a,o,s;if(e<r){if(s=t.input.slice(e,r),n)for(i=0,a=s.length;i<a;i+=1)9===(o=s.charCodeAt(i))||32<=o&&o<=1114111||Ut(t,"expected valid JSON character");else At.test(s)&&Ut(t,"the stream contains non-printable characters");t.result+=s}}function Zt(t,e,r,n){var i,a,o,s;for(h.isObject(r)||Ut(t,"cannot merge mappings; the provided source object is unacceptable"),o=0,s=(i=Object.keys(r)).length;o<s;o+=1)a=i[o],St.call(e,a)||(e[a]=r[a],n[a]=!0)}function Xt(t,e,r,n,i,a,o,s,l){var c,h;if(Array.isArray(i))for(c=0,h=(i=Array.prototype.slice.call(i)).length;c<h;c+=1)Array.isArray(i[c])&&Ut(t,"nested arrays are not supported inside keys"),"object"==typeof i&&"[object Object]"===Ft(i[c])&&(i[c]="[object Object]");if("object"==typeof i&&"[object Object]"===Ft(i)&&(i="[object Object]"),i=String(i),null===e&&(e={}),"tag:yaml.org,2002:merge"===n)if(Array.isArray(a))for(c=0,h=a.length;c<h;c+=1)Zt(t,e,a[c],r);else Zt(t,e,a,r);else t.json||St.call(r,i)||!St.call(e,i)||(t.line=o||t.line,t.lineStart=s||t.lineStart,t.position=l||t.position,Ut(t,"duplicated mapping key")),"__proto__"===i?Object.defineProperty(e,i,{configurable:!0,enumerable:!0,writable:!0,value:a}):e[i]=a,delete r[i];return e}function Qt(t){var e;10===(e=t.input.charCodeAt(t.position))?t.position++:13===e?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):Ut(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function Jt(t,e,r){for(var n=0,i=t.input.charCodeAt(t.position);0!==i;){for(;Et(i);)9===i&&-1===t.firstTabInLine&&(t.firstTabInLine=t.position),i=t.input.charCodeAt(++t.position);if(e&&35===i)do{i=t.input.charCodeAt(++t.position)}while(10!==i&&13!==i&&0!==i);if(!$t(i))break;for(Qt(t),i=t.input.charCodeAt(t.position),n++,t.lineIndent=0;32===i;)t.lineIndent++,i=t.input.charCodeAt(++t.position)}return-1!==r&&0!==n&&t.lineIndent<r&&Yt(t,"deficient indentation"),n}function te(t){var e,r=t.position;return!(45!==(e=t.input.charCodeAt(r))&&46!==e||e!==t.input.charCodeAt(r+1)||e!==t.input.charCodeAt(r+2)||(r+=3,0!==(e=t.input.charCodeAt(r))&&!Dt(e)))}function ee(t,e){1===e?t.result+=" ":e>1&&(t.result+=h.repeat("\n",e-1))}function re(t,e,r){var n,i,a,o,s,l,c,h,u=t.kind,d=t.result;if(Dt(h=t.input.charCodeAt(t.position))||Nt(h)||35===h||38===h||42===h||33===h||124===h||62===h||39===h||34===h||37===h||64===h||96===h)return!1;if((63===h||45===h)&&(Dt(n=t.input.charCodeAt(t.position+1))||r&&Nt(n)))return!1;for(t.kind="scalar",t.result="",i=a=t.position,o=!1;0!==h;){if(58===h){if(Dt(n=t.input.charCodeAt(t.position+1))||r&&Nt(n))break}else if(35===h){if(Dt(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&te(t)||r&&Nt(h))break;if($t(h)){if(s=t.line,l=t.lineStart,c=t.lineIndent,Jt(t,!1,-1),t.lineIndent>=e){o=!0,h=t.input.charCodeAt(t.position);continue}t.position=a,t.line=s,t.lineStart=l,t.lineIndent=c;break}}o&&(Vt(t,i,a,!1),ee(t,t.line-s),i=a=t.position,o=!1),Et(h)||(a=t.position+1),h=t.input.charCodeAt(++t.position)}return Vt(t,i,a,!1),!!t.result||(t.kind=u,t.result=d,!1)}function ne(t,e){var r,n,i;if(39!==(r=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;0!==(r=t.input.charCodeAt(t.position));)if(39===r){if(Vt(t,n,t.position,!0),39!==(r=t.input.charCodeAt(++t.position)))return!0;n=t.position,t.position++,i=t.position}else $t(r)?(Vt(t,n,i,!0),ee(t,Jt(t,!1,e)),n=i=t.position):t.position===t.lineStart&&te(t)?Ut(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);Ut(t,"unexpected end of the stream within a single quoted scalar")}function ie(t,e){var r,n,i,a,o,s;if(34!==(s=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;0!==(s=t.input.charCodeAt(t.position));){if(34===s)return Vt(t,r,t.position,!0),t.position++,!0;if(92===s){if(Vt(t,r,t.position,!0),$t(s=t.input.charCodeAt(++t.position)))Jt(t,!1,e);else if(s<256&&Kt[s])t.result+=qt[s],t.position++;else if((o=Rt(s))>0){for(i=o,a=0;i>0;i--)(o=Ot(s=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+o:Ut(t,"expected hexadecimal character");t.result+=zt(a),t.position++}else Ut(t,"unknown escape sequence");r=n=t.position}else $t(s)?(Vt(t,r,n,!0),ee(t,Jt(t,!1,e)),r=n=t.position):t.position===t.lineStart&&te(t)?Ut(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}Ut(t,"unexpected end of the stream within a double quoted scalar")}function ae(t,e){var r,n,i,a,o,s,l,c,h,u,d,p,f=!0,g=t.tag,m=t.anchor,y=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))o=93,c=!1,a=[];else{if(123!==p)return!1;o=125,c=!0,a={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),p=t.input.charCodeAt(++t.position);0!==p;){if(Jt(t,!0,e),(p=t.input.charCodeAt(t.position))===o)return t.position++,t.tag=g,t.anchor=m,t.kind=c?"mapping":"sequence",t.result=a,!0;f?44===p&&Ut(t,"expected the node content, but found ','"):Ut(t,"missed comma between flow collection entries"),d=null,s=l=!1,63===p&&Dt(t.input.charCodeAt(t.position+1))&&(s=l=!0,t.position++,Jt(t,!0,e)),r=t.line,n=t.lineStart,i=t.position,de(t,e,1,!1,!0),u=t.tag,h=t.result,Jt(t,!0,e),p=t.input.charCodeAt(t.position),!l&&t.line!==r||58!==p||(s=!0,p=t.input.charCodeAt(++t.position),Jt(t,!0,e),de(t,e,1,!1,!0),d=t.result),c?Xt(t,a,y,u,h,d,r,n,i):s?a.push(Xt(t,null,y,u,h,d,r,n,i)):a.push(h),Jt(t,!0,e),44===(p=t.input.charCodeAt(t.position))?(f=!0,p=t.input.charCodeAt(++t.position)):f=!1}Ut(t,"unexpected end of the stream within a flow collection")}function oe(t,e){var r,n,i,a,o=1,s=!1,l=!1,c=e,u=0,d=!1;if(124===(a=t.input.charCodeAt(t.position)))n=!1;else{if(62!==a)return!1;n=!0}for(t.kind="scalar",t.result="";0!==a;)if(43===(a=t.input.charCodeAt(++t.position))||45===a)1===o?o=43===a?3:2:Ut(t,"repeat of a chomping mode identifier");else{if(!((i=It(a))>=0))break;0===i?Ut(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?Ut(t,"repeat of an indentation width identifier"):(c=e+i-1,l=!0)}if(Et(a)){do{a=t.input.charCodeAt(++t.position)}while(Et(a));if(35===a)do{a=t.input.charCodeAt(++t.position)}while(!$t(a)&&0!==a)}for(;0!==a;){for(Qt(t),t.lineIndent=0,a=t.input.charCodeAt(t.position);(!l||t.lineIndent<c)&&32===a;)t.lineIndent++,a=t.input.charCodeAt(++t.position);if(!l&&t.lineIndent>c&&(c=t.lineIndent),$t(a))u++;else{if(t.lineIndent<c){3===o?t.result+=h.repeat("\n",s?1+u:u):1===o&&s&&(t.result+="\n");break}for(n?Et(a)?(d=!0,t.result+=h.repeat("\n",s?1+u:u)):d?(d=!1,t.result+=h.repeat("\n",u+1)):0===u?s&&(t.result+=" "):t.result+=h.repeat("\n",u):t.result+=h.repeat("\n",s?1+u:u),s=!0,l=!0,u=0,r=t.position;!$t(a)&&0!==a;)a=t.input.charCodeAt(++t.position);Vt(t,r,t.position,!1)}}return!0}function se(t,e){var r,n,i=t.tag,a=t.anchor,o=[],s=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),n=t.input.charCodeAt(t.position);0!==n&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,Ut(t,"tab characters must not be used in indentation")),45===n)&&Dt(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,Jt(t,!0,-1)&&t.lineIndent<=e)o.push(null),n=t.input.charCodeAt(t.position);else if(r=t.line,de(t,e,3,!1,!0),o.push(t.result),Jt(t,!0,-1),n=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&0!==n)Ut(t,"bad indentation of a sequence entry");else if(t.lineIndent<e)break;return!!s&&(t.tag=i,t.anchor=a,t.kind="sequence",t.result=o,!0)}function le(t,e,r){var n,i,a,o,s,l,c,h=t.tag,u=t.anchor,d={},p=Object.create(null),f=null,g=null,m=null,y=!1,x=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=d),c=t.input.charCodeAt(t.position);0!==c;){if(y||-1===t.firstTabInLine||(t.position=t.firstTabInLine,Ut(t,"tab characters must not be used in indentation")),n=t.input.charCodeAt(t.position+1),a=t.line,63!==c&&58!==c||!Dt(n)){if(o=t.line,s=t.lineStart,l=t.position,!de(t,r,2,!1,!0))break;if(t.line===a){for(c=t.input.charCodeAt(t.position);Et(c);)c=t.input.charCodeAt(++t.position);if(58===c)Dt(c=t.input.charCodeAt(++t.position))||Ut(t,"a whitespace character is expected after the key-value separator within a block mapping"),y&&(Xt(t,d,p,f,g,null,o,s,l),f=g=m=null),x=!0,y=!1,i=!1,f=t.tag,g=t.result;else{if(!x)return t.tag=h,t.anchor=u,!0;Ut(t,"can not read an implicit mapping pair; a colon is missed")}}else{if(!x)return t.tag=h,t.anchor=u,!0;Ut(t,"can not read a block mapping entry; a multiline key may not be an implicit key")}}else 63===c?(y&&(Xt(t,d,p,f,g,null,o,s,l),f=g=m=null),x=!0,y=!0,i=!0):y?(y=!1,i=!0):Ut(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,c=n;if((t.line===a||t.lineIndent>e)&&(y&&(o=t.line,s=t.lineStart,l=t.position),de(t,e,4,!0,i)&&(y?g=t.result:m=t.result),y||(Xt(t,d,p,f,g,m,o,s,l),f=g=m=null),Jt(t,!0,-1),c=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==c)Ut(t,"bad indentation of a mapping entry");else if(t.lineIndent<e)break}return y&&Xt(t,d,p,f,g,null,o,s,l),x&&(t.tag=h,t.anchor=u,t.kind="mapping",t.result=d),x}function ce(t){var e,r,n,i,a=!1,o=!1;if(33!==(i=t.input.charCodeAt(t.position)))return!1;if(null!==t.tag&&Ut(t,"duplication of a tag property"),60===(i=t.input.charCodeAt(++t.position))?(a=!0,i=t.input.charCodeAt(++t.position)):33===i?(o=!0,r="!!",i=t.input.charCodeAt(++t.position)):r="!",e=t.position,a){do{i=t.input.charCodeAt(++t.position)}while(0!==i&&62!==i);t.position<t.length?(n=t.input.slice(e,t.position),i=t.input.charCodeAt(++t.position)):Ut(t,"unexpected end of the stream within a verbatim tag")}else{for(;0!==i&&!Dt(i);)33===i&&(o?Ut(t,"tag suffix cannot contain exclamation marks"):(r=t.input.slice(e-1,t.position+1),Bt.test(r)||Ut(t,"named tag handle cannot contain such characters"),o=!0,e=t.position+1)),i=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),Mt.test(n)&&Ut(t,"tag suffix cannot contain flow indicator characters")}n&&!Lt.test(n)&&Ut(t,"tag name cannot contain such characters: "+n);try{n=decodeURIComponent(n)}catch(s){Ut(t,"tag name is malformed: "+n)}return a?t.tag=n:St.call(t.tagMap,r)?t.tag=t.tagMap[r]+n:"!"===r?t.tag="!"+n:"!!"===r?t.tag="tag:yaml.org,2002:"+n:Ut(t,'undeclared tag handle "'+r+'"'),!0}function he(t){var e,r;if(38!==(r=t.input.charCodeAt(t.position)))return!1;for(null!==t.anchor&&Ut(t,"duplication of an anchor property"),r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!Dt(r)&&!Nt(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Ut(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(e,t.position),!0}function ue(t){var e,r,n;if(42!==(n=t.input.charCodeAt(t.position)))return!1;for(n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!Dt(n)&&!Nt(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&Ut(t,"name of an alias node must contain at least one character"),r=t.input.slice(e,t.position),St.call(t.anchorMap,r)||Ut(t,'unidentified alias "'+r+'"'),t.result=t.anchorMap[r],Jt(t,!0,-1),!0}function de(t,e,r,n,i){var a,o,s,l,c,h,u,d,p,f=1,g=!1,m=!1;if(null!==t.listener&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,a=o=s=4===r||3===r,n&&Jt(t,!0,-1)&&(g=!0,t.lineIndent>e?f=1:t.lineIndent===e?f=0:t.lineIndent<e&&(f=-1)),1===f)for(;ce(t)||he(t);)Jt(t,!0,-1)?(g=!0,s=a,t.lineIndent>e?f=1:t.lineIndent===e?f=0:t.lineIndent<e&&(f=-1)):s=!1;if(s&&(s=g||i),1!==f&&4!==r||(d=1===r||2===r?e:e+1,p=t.position-t.lineStart,1===f?s&&(se(t,p)||le(t,p,d))||ae(t,d)?m=!0:(o&&oe(t,d)||ne(t,d)||ie(t,d)?m=!0:ue(t)?(m=!0,null===t.tag&&null===t.anchor||Ut(t,"alias node should not have any properties")):re(t,d,1===r)&&(m=!0,null===t.tag&&(t.tag="?")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===f&&(m=s&&se(t,p))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&Ut(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),l=0,c=t.implicitTypes.length;l<c;l+=1)if((u=t.implicitTypes[l]).resolve(t.result)){t.result=u.construct(t.result),t.tag=u.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else if("!"!==t.tag){if(St.call(t.typeMap[t.kind||"fallback"],t.tag))u=t.typeMap[t.kind||"fallback"][t.tag];else for(u=null,l=0,c=(h=t.typeMap.multi[t.kind||"fallback"]).length;l<c;l+=1)if(t.tag.slice(0,h[l].tag.length)===h[l].tag){u=h[l];break}u||Ut(t,"unknown tag !<"+t.tag+">"),null!==t.result&&u.kind!==t.kind&&Ut(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result,t.tag)?(t.result=u.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):Ut(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||m}function pe(t){var e,r,n,i,a=t.position,o=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(i=t.input.charCodeAt(t.position))&&(Jt(t,!0,-1),i=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==i));){for(o=!0,i=t.input.charCodeAt(++t.position),e=t.position;0!==i&&!Dt(i);)i=t.input.charCodeAt(++t.position);for(n=[],(r=t.input.slice(e,t.position)).length<1&&Ut(t,"directive name must not be less than one character in length");0!==i;){for(;Et(i);)i=t.input.charCodeAt(++t.position);if(35===i){do{i=t.input.charCodeAt(++t.position)}while(0!==i&&!$t(i));break}if($t(i))break;for(e=t.position;0!==i&&!Dt(i);)i=t.input.charCodeAt(++t.position);n.push(t.input.slice(e,t.position))}0!==i&&Qt(t),St.call(Gt,r)?Gt[r](t,r,n):Yt(t,'unknown document directive "'+r+'"')}Jt(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,Jt(t,!0,-1)):o&&Ut(t,"directives end mark is expected"),de(t,t.lineIndent-1,4,!1,!0),Jt(t,!0,-1),t.checkLineBreaks&&Tt.test(t.input.slice(a,t.position))&&Yt(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&te(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,Jt(t,!0,-1)):t.position<t.length-1&&Ut(t,"end of the stream or a document separator is expected")}function fe(t,e){e=e||{},0!==(t=String(t)).length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+="\n"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var r=new Wt(t,e),n=t.indexOf("\0");for(-1!==n&&(r.position=n,Ut(r,"null byte is not allowed in input")),r.input+="\0";32===r.input.charCodeAt(r.position);)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)pe(r);return r.documents}function ge(t,e,r){null!==e&&"object"==typeof e&&void 0===r&&(r=e,e=null);var n=fe(t,r);if("function"!=typeof e)return n;for(var i=0,a=n.length;i<a;i+=1)e(n[i])}function me(t,e){var r=fe(t,e);if(0!==r.length){if(1===r.length)return r[0];throw new p("expected a single document in the stream, but found more")}}(0,n.K2)(Vt,"captureSegment"),(0,n.K2)(Zt,"mergeMappings"),(0,n.K2)(Xt,"storeMappingPair"),(0,n.K2)(Qt,"readLineBreak"),(0,n.K2)(Jt,"skipSeparationSpace"),(0,n.K2)(te,"testDocumentSeparator"),(0,n.K2)(ee,"writeFoldedLines"),(0,n.K2)(re,"readPlainScalar"),(0,n.K2)(ne,"readSingleQuotedScalar"),(0,n.K2)(ie,"readDoubleQuotedScalar"),(0,n.K2)(ae,"readFlowCollection"),(0,n.K2)(oe,"readBlockScalar"),(0,n.K2)(se,"readBlockSequence"),(0,n.K2)(le,"readBlockMapping"),(0,n.K2)(ce,"readTagProperty"),(0,n.K2)(he,"readAnchorProperty"),(0,n.K2)(ue,"readAlias"),(0,n.K2)(de,"composeNode"),(0,n.K2)(pe,"readDocument"),(0,n.K2)(fe,"loadDocuments"),(0,n.K2)(ge,"loadAll$1"),(0,n.K2)(me,"load$1");var ye={loadAll:ge,load:me},xe=Object.prototype.toString,be=Object.prototype.hasOwnProperty,ke=65279,Ce={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},we=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],_e=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function ve(t,e){var r,n,i,a,o,s,l;if(null===e)return{};for(r={},i=0,a=(n=Object.keys(e)).length;i<a;i+=1)o=n[i],s=String(e[o]),"!!"===o.slice(0,2)&&(o="tag:yaml.org,2002:"+o.slice(2)),(l=t.compiledTypeMap.fallback[o])&&be.call(l.styleAliases,s)&&(s=l.styleAliases[s]),r[o]=s;return r}function Se(t){var e,r,n;if(e=t.toString(16).toUpperCase(),t<=255)r="x",n=2;else if(t<=65535)r="u",n=4;else{if(!(t<=4294967295))throw new p("code point within a string may not be greater than 0xFFFFFFFF");r="U",n=8}return"\\"+r+h.repeat("0",n-e.length)+e}(0,n.K2)(ve,"compileStyleMap"),(0,n.K2)(Se,"encodeHex");function Ae(t){this.schema=t.schema||vt,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=h.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=ve(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType='"'===t.quotingType?2:1,this.forceQuotes=t.forceQuotes||!1,this.replacer="function"==typeof t.replacer?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function Te(t,e){for(var r,n=h.repeat(" ",e),i=0,a=-1,o="",s=t.length;i<s;)-1===(a=t.indexOf("\n",i))?(r=t.slice(i),i=s):(r=t.slice(i,a+1),i=a+1),r.length&&"\n"!==r&&(o+=n),o+=r;return o}function Me(t,e){return"\n"+h.repeat(" ",t.indent*e)}function Be(t,e){var r,n;for(r=0,n=t.implicitTypes.length;r<n;r+=1)if(t.implicitTypes[r].resolve(e))return!0;return!1}function Le(t){return 32===t||9===t}function Fe(t){return 32<=t&&t<=126||161<=t&&t<=55295&&8232!==t&&8233!==t||57344<=t&&t<=65533&&t!==ke||65536<=t&&t<=1114111}function $e(t){return Fe(t)&&t!==ke&&13!==t&&10!==t}function Ee(t,e,r){var n=$e(t),i=n&&!Le(t);return(r?n:n&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t)&&35!==t&&!(58===e&&!i)||$e(e)&&!Le(e)&&35===t||58===e&&i}function De(t){return Fe(t)&&t!==ke&&!Le(t)&&45!==t&&63!==t&&58!==t&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t&&35!==t&&38!==t&&42!==t&&33!==t&&124!==t&&61!==t&&62!==t&&39!==t&&34!==t&&37!==t&&64!==t&&96!==t}function Ne(t){return!Le(t)&&58!==t}function Oe(t,e){var r,n=t.charCodeAt(e);return n>=55296&&n<=56319&&e+1<t.length&&(r=t.charCodeAt(e+1))>=56320&&r<=57343?1024*(n-55296)+r-56320+65536:n}function Re(t){return/^\n* /.test(t)}(0,n.K2)(Ae,"State"),(0,n.K2)(Te,"indentString"),(0,n.K2)(Me,"generateNextLine"),(0,n.K2)(Be,"testImplicitResolving"),(0,n.K2)(Le,"isWhitespace"),(0,n.K2)(Fe,"isPrintable"),(0,n.K2)($e,"isNsCharOrWhitespace"),(0,n.K2)(Ee,"isPlainSafe"),(0,n.K2)(De,"isPlainSafeFirst"),(0,n.K2)(Ne,"isPlainSafeLast"),(0,n.K2)(Oe,"codePointAt"),(0,n.K2)(Re,"needIndentIndicator");function Ie(t,e,r,n,i,a,o,s){var l,c=0,h=null,u=!1,d=!1,p=-1!==n,f=-1,g=De(Oe(t,0))&&Ne(Oe(t,t.length-1));if(e||o)for(l=0;l<t.length;c>=65536?l+=2:l++){if(!Fe(c=Oe(t,l)))return 5;g=g&&Ee(c,h,s),h=c}else{for(l=0;l<t.length;c>=65536?l+=2:l++){if(10===(c=Oe(t,l)))u=!0,p&&(d=d||l-f-1>n&&" "!==t[f+1],f=l);else if(!Fe(c))return 5;g=g&&Ee(c,h,s),h=c}d=d||p&&l-f-1>n&&" "!==t[f+1]}return u||d?r>9&&Re(t)?5:o?2===a?5:2:d?4:3:!g||o||i(t)?2===a?5:2:1}function je(t,e,r,i,a){t.dump=function(){if(0===e.length)return 2===t.quotingType?'""':"''";if(!t.noCompatMode&&(-1!==we.indexOf(e)||_e.test(e)))return 2===t.quotingType?'"'+e+'"':"'"+e+"'";var o=t.indent*Math.max(1,r),s=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),l=i||t.flowLevel>-1&&r>=t.flowLevel;function c(e){return Be(t,e)}switch((0,n.K2)(c,"testAmbiguity"),Ie(e,l,t.indent,s,c,t.quotingType,t.forceQuotes&&!i,a)){case 1:return e;case 2:return"'"+e.replace(/'/g,"''")+"'";case 3:return"|"+ze(e,t.indent)+Pe(Te(e,o));case 4:return">"+ze(e,t.indent)+Pe(Te(Ke(e,s),o));case 5:return'"'+We(e)+'"';default:throw new p("impossible error: invalid scalar style")}}()}function ze(t,e){var r=Re(t)?String(e):"",n="\n"===t[t.length-1];return r+(n&&("\n"===t[t.length-2]||"\n"===t)?"+":n?"":"-")+"\n"}function Pe(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function Ke(t,e){for(var r,n,i,a=/(\n+)([^\n]*)/g,o=(r=-1!==(r=t.indexOf("\n"))?r:t.length,a.lastIndex=r,qe(t.slice(0,r),e)),s="\n"===t[0]||" "===t[0];i=a.exec(t);){var l=i[1],c=i[2];n=" "===c[0],o+=l+(s||n||""===c?"":"\n")+qe(c,e),s=n}return o}function qe(t,e){if(""===t||" "===t[0])return t;for(var r,n,i=/ [^ ]/g,a=0,o=0,s=0,l="";r=i.exec(t);)(s=r.index)-a>e&&(n=o>a?o:s,l+="\n"+t.slice(a,n),a=n+1),o=s;return l+="\n",t.length-a>e&&o>a?l+=t.slice(a,o)+"\n"+t.slice(o+1):l+=t.slice(a),l.slice(1)}function We(t){for(var e,r="",n=0,i=0;i<t.length;n>=65536?i+=2:i++)n=Oe(t,i),!(e=Ce[n])&&Fe(n)?(r+=t[i],n>=65536&&(r+=t[i+1])):r+=e||Se(n);return r}function He(t,e,r){var n,i,a,o="",s=t.tag;for(n=0,i=r.length;n<i;n+=1)a=r[n],t.replacer&&(a=t.replacer.call(r,String(n),a)),(Ze(t,e,a,!1,!1)||void 0===a&&Ze(t,e,null,!1,!1))&&(""!==o&&(o+=","+(t.condenseFlow?"":" ")),o+=t.dump);t.tag=s,t.dump="["+o+"]"}function Ue(t,e,r,n){var i,a,o,s="",l=t.tag;for(i=0,a=r.length;i<a;i+=1)o=r[i],t.replacer&&(o=t.replacer.call(r,String(i),o)),(Ze(t,e+1,o,!0,!0,!1,!0)||void 0===o&&Ze(t,e+1,null,!0,!0,!1,!0))&&(n&&""===s||(s+=Me(t,e)),t.dump&&10===t.dump.charCodeAt(0)?s+="-":s+="- ",s+=t.dump);t.tag=l,t.dump=s||"[]"}function Ye(t,e,r){var n,i,a,o,s,l="",c=t.tag,h=Object.keys(r);for(n=0,i=h.length;n<i;n+=1)s="",""!==l&&(s+=", "),t.condenseFlow&&(s+='"'),o=r[a=h[n]],t.replacer&&(o=t.replacer.call(r,a,o)),Ze(t,e,a,!1,!1)&&(t.dump.length>1024&&(s+="? "),s+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Ze(t,e,o,!1,!1)&&(l+=s+=t.dump));t.tag=c,t.dump="{"+l+"}"}function Ge(t,e,r,n){var i,a,o,s,l,c,h="",u=t.tag,d=Object.keys(r);if(!0===t.sortKeys)d.sort();else if("function"==typeof t.sortKeys)d.sort(t.sortKeys);else if(t.sortKeys)throw new p("sortKeys must be a boolean or a function");for(i=0,a=d.length;i<a;i+=1)c="",n&&""===h||(c+=Me(t,e)),s=r[o=d[i]],t.replacer&&(s=t.replacer.call(r,o,s)),Ze(t,e+1,o,!0,!0,!0)&&((l=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024)&&(t.dump&&10===t.dump.charCodeAt(0)?c+="?":c+="? "),c+=t.dump,l&&(c+=Me(t,e)),Ze(t,e+1,s,!0,l)&&(t.dump&&10===t.dump.charCodeAt(0)?c+=":":c+=": ",h+=c+=t.dump));t.tag=u,t.dump=h||"{}"}function Ve(t,e,r){var n,i,a,o,s,l;for(a=0,o=(i=r?t.explicitTypes:t.implicitTypes).length;a<o;a+=1)if(((s=i[a]).instanceOf||s.predicate)&&(!s.instanceOf||"object"==typeof e&&e instanceof s.instanceOf)&&(!s.predicate||s.predicate(e))){if(r?s.multi&&s.representName?t.tag=s.representName(e):t.tag=s.tag:t.tag="?",s.represent){if(l=t.styleMap[s.tag]||s.defaultStyle,"[object Function]"===xe.call(s.represent))n=s.represent(e,l);else{if(!be.call(s.represent,l))throw new p("!<"+s.tag+'> tag resolver accepts not "'+l+'" style');n=s.represent[l](e,l)}t.dump=n}return!0}return!1}function Ze(t,e,r,n,i,a,o){t.tag=null,t.dump=r,Ve(t,r,!1)||Ve(t,r,!0);var s,l=xe.call(t.dump),c=n;n&&(n=t.flowLevel<0||t.flowLevel>e);var h,u,d="[object Object]"===l||"[object Array]"===l;if(d&&(u=-1!==(h=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||u||2!==t.indent&&e>0)&&(i=!1),u&&t.usedDuplicates[h])t.dump="*ref_"+h;else{if(d&&u&&!t.usedDuplicates[h]&&(t.usedDuplicates[h]=!0),"[object Object]"===l)n&&0!==Object.keys(t.dump).length?(Ge(t,e,t.dump,i),u&&(t.dump="&ref_"+h+t.dump)):(Ye(t,e,t.dump),u&&(t.dump="&ref_"+h+" "+t.dump));else if("[object Array]"===l)n&&0!==t.dump.length?(t.noArrayIndent&&!o&&e>0?Ue(t,e-1,t.dump,i):Ue(t,e,t.dump,i),u&&(t.dump="&ref_"+h+t.dump)):(He(t,e,t.dump),u&&(t.dump="&ref_"+h+" "+t.dump));else{if("[object String]"!==l){if("[object Undefined]"===l)return!1;if(t.skipInvalid)return!1;throw new p("unacceptable kind of an object to dump "+l)}"?"!==t.tag&&je(t,t.dump,e,a,c)}null!==t.tag&&"?"!==t.tag&&(s=encodeURI("!"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,"%21"),s="!"===t.tag[0]?"!"+s:"tag:yaml.org,2002:"===s.slice(0,18)?"!!"+s.slice(18):"!<"+s+">",t.dump=s+" "+t.dump)}return!0}function Xe(t,e){var r,n,i=[],a=[];for(Qe(t,i,a),r=0,n=a.length;r<n;r+=1)e.duplicates.push(i[a[r]]);e.usedDuplicates=new Array(n)}function Qe(t,e,r){var n,i,a;if(null!==t&&"object"==typeof t)if(-1!==(i=e.indexOf(t)))-1===r.indexOf(i)&&r.push(i);else if(e.push(t),Array.isArray(t))for(i=0,a=t.length;i<a;i+=1)Qe(t[i],e,r);else for(i=0,a=(n=Object.keys(t)).length;i<a;i+=1)Qe(t[n[i]],e,r)}function Je(t,e){var r=new Ae(e=e||{});r.noRefs||Xe(t,r);var n=t;return r.replacer&&(n=r.replacer.call({"":n},"",n)),Ze(r,0,n,!0,!0)?r.dump+"\n":""}(0,n.K2)(Ie,"chooseScalarStyle"),(0,n.K2)(je,"writeScalar"),(0,n.K2)(ze,"blockHeader"),(0,n.K2)(Pe,"dropEndingNewline"),(0,n.K2)(Ke,"foldString"),(0,n.K2)(qe,"foldLine"),(0,n.K2)(We,"escapeString"),(0,n.K2)(He,"writeFlowSequence"),(0,n.K2)(Ue,"writeBlockSequence"),(0,n.K2)(Ye,"writeFlowMapping"),(0,n.K2)(Ge,"writeBlockMapping"),(0,n.K2)(Ve,"detectType"),(0,n.K2)(Ze,"writeNode"),(0,n.K2)(Xe,"getDuplicateReferences"),(0,n.K2)(Qe,"inspectNode"),(0,n.K2)(Je,"dump$1");function tr(t,e){return function(){throw new Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+e+" instead, which is now safe by default.")}}(0,n.K2)(tr,"renamed");var er=V,rr=ye.load;tr("safeLoad","load"),tr("safeLoadAll","loadAll"),tr("safeDump","dump")},13212:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var n=r(46554),i=r(55385);const a=t=>{const{r:e,g:r,b:a}=i.A.parse(t),o=.2126*n.A.channel.toLinear(e)+.7152*n.A.channel.toLinear(r)+.0722*n.A.channel.toLinear(a);return n.A.lang.round(o)},o=t=>a(t)>=.5,s=t=>!o(t)},14779:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var n=r(57454),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=i&&"object"==typeof module&&module&&!module.nodeType&&module,o=a&&a.exports===i?n.A.Buffer:void 0,s=o?o.allocUnsafe:void 0;const l=function(t,e){if(e)return t.slice();var r=t.length,n=s?s(r):new t.constructor(r);return t.copy(n),n}},16599:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var n=r(16957),i=r(42849),a=r(31408),o=r(49084);const s=function(t,e,r){if(!(0,o.A)(r))return!1;var s=typeof e;return!!("number"==s?(0,i.A)(r)&&(0,a.A)(e,r.length):"string"==s&&e in r)&&(0,n.A)(r[e],t)}},16957:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t,e){return t===e||t!=t&&e!=e}},21763:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(46554),i=r(55385);const a=(t,e)=>{const r=i.A.parse(t);for(const i in e)r[i]=n.A.channel.clamp[i](e[i]);return i.A.stringify(r)}},22470:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var n=r(48203),i=r(90372),a=r(56117);const o=i.A?function(t,e){return(0,i.A)(t,"toString",{configurable:!0,enumerable:!1,value:(0,n.A)(e),writable:!0})}:a.A;var s=Date.now;const l=function(t){var e=0,r=0;return function(){var n=s(),i=16-(n-r);if(r=n,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(o)},24199:(t,e,r)=>{"use strict";r.d(e,{W6:()=>Jt,GZ:()=>ne,WY:()=>zt,pC:()=>Rt,hE:()=>re,Gc:()=>Dt});var n=r(47794),i=r(27293);const a=(t,e)=>!!t&&!(!(e&&""===t.prefix||t.prefix)||!t.name),o=Object.freeze({left:0,top:0,width:16,height:16}),s=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),l=Object.freeze({...o,...s}),c=Object.freeze({...l,body:"",hidden:!1});function h(t,e){const r=function(t,e){const r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);const n=((t.rotate||0)+(e.rotate||0))%4;return n&&(r.rotate=n),r}(t,e);for(const n in c)n in s?n in t&&!(n in r)&&(r[n]=s[n]):n in e?r[n]=e[n]:n in t&&(r[n]=t[n]);return r}function u(t,e,r){const n=t.icons,i=t.aliases||Object.create(null);let a={};function o(t){a=h(n[t]||i[t],a)}return o(e),r.forEach(o),h(t,a)}function d(t,e){if(t.icons[e])return u(t,e,[]);const r=function(t,e){const r=t.icons,n=t.aliases||Object.create(null),i=Object.create(null);return(e||Object.keys(r).concat(Object.keys(n))).forEach(function t(e){if(r[e])return i[e]=[];if(!(e in i)){i[e]=null;const r=n[e]&&n[e].parent,a=r&&t(r);a&&(i[e]=[r].concat(a))}return i[e]}),i}(t,[e])[e];return r?u(t,e,r):null}const p=Object.freeze({width:null,height:null}),f=Object.freeze({...p,...s}),g=/(-?[0-9.]*[0-9]+[0-9.]*)/g,m=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function y(t,e,r){if(1===e)return t;if(r=r||100,"number"==typeof t)return Math.ceil(t*e*r)/r;if("string"!=typeof t)return t;const n=t.split(g);if(null===n||!n.length)return t;const i=[];let a=n.shift(),o=m.test(a);for(;;){if(o){const t=parseFloat(a);isNaN(t)?i.push(a):i.push(Math.ceil(t*e*r)/r)}else i.push(a);if(a=n.shift(),void 0===a)return i.join("");o=!o}}const x=/\sid="(\S+)"/g,b="IconifyId"+Date.now().toString(16)+(16777216*Math.random()|0).toString(16);let k=0;var C=r(61274);function w(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var _={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function v(t){_=t}var S={exec:()=>null};function A(t,e=""){let r="string"==typeof t?t:t.source;const n={replace:(t,e)=>{let i="string"==typeof e?e:e.source;return i=i.replace(T.caret,"$1"),r=r.replace(t,i),n},getRegex:()=>new RegExp(r,e)};return n}var T={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},M=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,B=/(?:[*+-]|\d{1,9}[.)])/,L=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,F=A(L).replace(/bull/g,B).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),$=A(L).replace(/bull/g,B).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),E=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,D=/(?!\s*\])(?:\\.|[^\[\]\\])+/,N=A(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",D).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),O=A(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,B).getRegex(),R="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",I=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,j=A("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",I).replace("tag",R).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),z=A(E).replace("hr",M).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex(),P={blockquote:A(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",z).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:N,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:M,html:j,lheading:F,list:O,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:z,table:S,text:/^[^\n]+/},K=A("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",M).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex(),q={...P,lheading:$,table:K,paragraph:A(E).replace("hr",M).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",K).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex()},W={...P,html:A("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",I).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:S,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:A(E).replace("hr",M).replace("heading"," *#{1,6} *[^\n]").replace("lheading",F).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},H=/^( {2,}|\\)\n(?!\s*$)/,U=/[\p{P}\p{S}]/u,Y=/[\s\p{P}\p{S}]/u,G=/[^\s\p{P}\p{S}]/u,V=A(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Y).getRegex(),Z=/(?!~)[\p{P}\p{S}]/u,X=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Q=A(X,"u").replace(/punct/g,U).getRegex(),J=A(X,"u").replace(/punct/g,Z).getRegex(),tt="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",et=A(tt,"gu").replace(/notPunctSpace/g,G).replace(/punctSpace/g,Y).replace(/punct/g,U).getRegex(),rt=A(tt,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,Z).getRegex(),nt=A("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,G).replace(/punctSpace/g,Y).replace(/punct/g,U).getRegex(),it=A(/\\(punct)/,"gu").replace(/punct/g,U).getRegex(),at=A(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),ot=A(I).replace("(?:--\x3e|$)","--\x3e").getRegex(),st=A("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",ot).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),lt=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,ct=A(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",lt).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ht=A(/^!?\[(label)\]\[(ref)\]/).replace("label",lt).replace("ref",D).getRegex(),ut=A(/^!?\[(ref)\](?:\[\])?/).replace("ref",D).getRegex(),dt={_backpedal:S,anyPunctuation:it,autolink:at,blockSkip:/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,br:H,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:S,emStrongLDelim:Q,emStrongRDelimAst:et,emStrongRDelimUnd:nt,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:ct,nolink:ut,punctuation:V,reflink:ht,reflinkSearch:A("reflink|nolink(?!\\()","g").replace("reflink",ht).replace("nolink",ut).getRegex(),tag:st,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,url:S},pt={...dt,link:A(/^!?\[(label)\]\((.*?)\)/).replace("label",lt).getRegex(),reflink:A(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",lt).getRegex()},ft={...dt,emStrongRDelimAst:rt,emStrongLDelim:J,url:A(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},gt={...ft,br:A(H).replace("{2,}","*").getRegex(),text:A(ft.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},mt={normal:P,gfm:q,pedantic:W},yt={normal:dt,gfm:ft,breaks:gt,pedantic:pt},xt={"&":"&","<":"<",">":">",'"':""","'":"'"},bt=t=>xt[t];function kt(t,e){if(e){if(T.escapeTest.test(t))return t.replace(T.escapeReplace,bt)}else if(T.escapeTestNoEncode.test(t))return t.replace(T.escapeReplaceNoEncode,bt);return t}function Ct(t){try{t=encodeURI(t).replace(T.percentDecode,"%")}catch{return null}return t}function wt(t,e){const r=t.replace(T.findPipe,(t,e,r)=>{let n=!1,i=e;for(;--i>=0&&"\\"===r[i];)n=!n;return n?"|":" |"}).split(T.splitPipe);let n=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length<e;)r.push("");for(;n<r.length;n++)r[n]=r[n].trim().replace(T.slashPipe,"|");return r}function _t(t,e,r){const n=t.length;if(0===n)return"";let i=0;for(;i<n;){const a=t.charAt(n-i-1);if(a!==e||r){if(a===e||!r)break;i++}else i++}return t.slice(0,n-i)}function vt(t,e,r,n,i){const a=e.href,o=e.title||null,s=t[1].replace(i.other.outputLinkReplace,"$1");n.state.inLink=!0;const l={type:"!"===t[0].charAt(0)?"image":"link",raw:r,href:a,title:o,text:s,tokens:n.inlineTokens(s)};return n.state.inLink=!1,l}var St=class{options;rules;lexer;constructor(t){this.options=t||_}space(t){const e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){const e=this.rules.block.code.exec(t);if(e){const t=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:_t(t,"\n")}}}fences(t){const e=this.rules.block.fences.exec(t);if(e){const t=e[0],r=function(t,e,r){const n=t.match(r.other.indentCodeCompensation);if(null===n)return e;const i=n[1];return e.split("\n").map(t=>{const e=t.match(r.other.beginningSpace);if(null===e)return t;const[n]=e;return n.length>=i.length?t.slice(i.length):t}).join("\n")}(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:r}}}heading(t){const e=this.rules.block.heading.exec(t);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){const e=_t(t,"#");this.options.pedantic?t=e.trim():e&&!this.rules.other.endingSpaceChar.test(e)||(t=e.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(t){const e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:_t(e[0],"\n")}}blockquote(t){const e=this.rules.block.blockquote.exec(t);if(e){let t=_t(e[0],"\n").split("\n"),r="",n="";const i=[];for(;t.length>0;){let e=!1;const a=[];let o;for(o=0;o<t.length;o++)if(this.rules.other.blockquoteStart.test(t[o]))a.push(t[o]),e=!0;else{if(e)break;a.push(t[o])}t=t.slice(o);const s=a.join("\n"),l=s.replace(this.rules.other.blockquoteSetextReplace,"\n $1").replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}\n${s}`:s,n=n?`${n}\n${l}`:l;const c=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(l,i,!0),this.lexer.state.top=c,0===t.length)break;const h=i.at(-1);if("code"===h?.type)break;if("blockquote"===h?.type){const e=h,a=e.raw+"\n"+t.join("\n"),o=this.blockquote(a);i[i.length-1]=o,r=r.substring(0,r.length-e.raw.length)+o.raw,n=n.substring(0,n.length-e.text.length)+o.text;break}if("list"===h?.type){const e=h,a=e.raw+"\n"+t.join("\n"),o=this.list(a);i[i.length-1]=o,r=r.substring(0,r.length-h.raw.length)+o.raw,n=n.substring(0,n.length-e.raw.length)+o.raw,t=a.substring(i.at(-1).raw.length).split("\n");continue}}return{type:"blockquote",raw:r,tokens:i,text:n}}}list(t){let e=this.rules.block.list.exec(t);if(e){let r=e[1].trim();const n=r.length>1,i={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");const a=this.rules.other.listItemRegex(r);let o=!1;for(;t;){let r=!1,n="",s="";if(!(e=a.exec(t)))break;if(this.rules.block.hr.test(t))break;n=e[0],t=t.substring(n.length);let l=e[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,t=>" ".repeat(3*t.length)),c=t.split("\n",1)[0],h=!l.trim(),u=0;if(this.options.pedantic?(u=2,s=l.trimStart()):h?u=e[1].length+1:(u=e[2].search(this.rules.other.nonSpaceChar),u=u>4?1:u,s=l.slice(u),u+=e[1].length),h&&this.rules.other.blankLine.test(c)&&(n+=c+"\n",t=t.substring(c.length+1),r=!0),!r){const e=this.rules.other.nextBulletRegex(u),r=this.rules.other.hrRegex(u),i=this.rules.other.fencesBeginRegex(u),a=this.rules.other.headingBeginRegex(u),o=this.rules.other.htmlBeginRegex(u);for(;t;){const d=t.split("\n",1)[0];let p;if(c=d,this.options.pedantic?(c=c.replace(this.rules.other.listReplaceNesting," "),p=c):p=c.replace(this.rules.other.tabCharGlobal," "),i.test(c))break;if(a.test(c))break;if(o.test(c))break;if(e.test(c))break;if(r.test(c))break;if(p.search(this.rules.other.nonSpaceChar)>=u||!c.trim())s+="\n"+p.slice(u);else{if(h)break;if(l.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4)break;if(i.test(l))break;if(a.test(l))break;if(r.test(l))break;s+="\n"+c}h||c.trim()||(h=!0),n+=d+"\n",t=t.substring(d.length+1),l=p.slice(u)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(n)&&(o=!0));let d,p=null;this.options.gfm&&(p=this.rules.other.listIsTask.exec(s),p&&(d="[ ] "!==p[0],s=s.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:n,task:!!p,checked:d,loose:!1,text:s,tokens:[]}),i.raw+=n}const s=i.items.at(-1);if(!s)return;s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd(),i.raw=i.raw.trimEnd();for(let t=0;t<i.items.length;t++)if(this.lexer.state.top=!1,i.items[t].tokens=this.lexer.blockTokens(i.items[t].text,[]),!i.loose){const e=i.items[t].tokens.filter(t=>"space"===t.type),r=e.length>0&&e.some(t=>this.rules.other.anyLine.test(t.raw));i.loose=r}if(i.loose)for(let t=0;t<i.items.length;t++)i.items[t].loose=!0;return i}}html(t){const e=this.rules.block.html.exec(t);if(e){return{type:"html",block:!0,raw:e[0],pre:"pre"===e[1]||"script"===e[1]||"style"===e[1],text:e[0]}}}def(t){const e=this.rules.block.def.exec(t);if(e){const t=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),r=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",n=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:e[0],href:r,title:n}}}table(t){const e=this.rules.block.table.exec(t);if(!e)return;if(!this.rules.other.tableDelimiter.test(e[2]))return;const r=wt(e[1]),n=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split("\n"):[],a={type:"table",raw:e[0],header:[],align:[],rows:[]};if(r.length===n.length){for(const t of n)this.rules.other.tableAlignRight.test(t)?a.align.push("right"):this.rules.other.tableAlignCenter.test(t)?a.align.push("center"):this.rules.other.tableAlignLeft.test(t)?a.align.push("left"):a.align.push(null);for(let t=0;t<r.length;t++)a.header.push({text:r[t],tokens:this.lexer.inline(r[t]),header:!0,align:a.align[t]});for(const t of i)a.rows.push(wt(t,a.header.length).map((t,e)=>({text:t,tokens:this.lexer.inline(t),header:!1,align:a.align[e]})));return a}}lheading(t){const e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:"="===e[2].charAt(0)?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){const e=this.rules.block.paragraph.exec(t);if(e){const t="\n"===e[1].charAt(e[1].length-1)?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(t){const e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){const e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){const e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){const e=this.rules.inline.link.exec(t);if(e){const t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;const e=_t(t.slice(0,-1),"\\");if((t.length-e.length)%2==0)return}else{const t=function(t,e){if(-1===t.indexOf(e[1]))return-1;let r=0;for(let n=0;n<t.length;n++)if("\\"===t[n])n++;else if(t[n]===e[0])r++;else if(t[n]===e[1]&&(r--,r<0))return n;return r>0?-2:-1}(e[2],"()");if(-2===t)return;if(t>-1){const r=(0===e[0].indexOf("!")?5:4)+e[1].length+t;e[2]=e[2].substring(0,t),e[0]=e[0].substring(0,r).trim(),e[3]=""}}let r=e[2],n="";if(this.options.pedantic){const t=this.rules.other.pedanticHrefTitle.exec(r);t&&(r=t[1],n=t[3])}else n=e[3]?e[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(r=this.options.pedantic&&!this.rules.other.endAngleBracket.test(t)?r.slice(1):r.slice(1,-1)),vt(e,{href:r?r.replace(this.rules.inline.anyPunctuation,"$1"):r,title:n?n.replace(this.rules.inline.anyPunctuation,"$1"):n},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){const t=e[(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!t){const t=r[0].charAt(0);return{type:"text",raw:t,text:t}}return vt(r,t,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let n=this.rules.inline.emStrongLDelim.exec(t);if(!n)return;if(n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))return;if(!(n[1]||n[2]||"")||!r||this.rules.inline.punctuation.exec(r)){const r=[...n[0]].length-1;let i,a,o=r,s=0;const l="*"===n[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(l.lastIndex=0,e=e.slice(-1*t.length+r);null!=(n=l.exec(e));){if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!i)continue;if(a=[...i].length,n[3]||n[4]){o+=a;continue}if((n[5]||n[6])&&r%3&&!((r+a)%3)){s+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+s);const e=[...n[0]][0].length,l=t.slice(0,r+n.index+e+a);if(Math.min(r,a)%2){const t=l.slice(1,-1);return{type:"em",raw:l,text:t,tokens:this.lexer.inlineTokens(t)}}const c=l.slice(2,-2);return{type:"strong",raw:l,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(t){const e=this.rules.inline.code.exec(t);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," ");const r=this.rules.other.nonSpaceChar.test(t),n=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return r&&n&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(t){const e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){const e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){const e=this.rules.inline.autolink.exec(t);if(e){let t,r;return"@"===e[2]?(t=e[1],r="mailto:"+t):(t=e[1],r=t),{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let t,r;if("@"===e[2])t=e[0],r="mailto:"+t;else{let n;do{n=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??""}while(n!==e[0]);t=e[0],r="www."===e[1]?"http://"+e[0]:e[0]}return{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(t){const e=this.rules.inline.text.exec(t);if(e){const t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},At=class t{tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||_,this.options.tokenizer=this.options.tokenizer||new St,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const e={other:T,block:mt.normal,inline:yt.normal};this.options.pedantic?(e.block=mt.pedantic,e.inline=yt.pedantic):this.options.gfm&&(e.block=mt.gfm,this.options.breaks?e.inline=yt.breaks:e.inline=yt.gfm),this.tokenizer.rules=e}static get rules(){return{block:mt,inline:yt}}static lex(e,r){return new t(r).lex(e)}static lexInline(e,r){return new t(r).inlineTokens(e)}lex(t){t=t.replace(T.carriageReturn,"\n"),this.blockTokens(t,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){const t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,e=[],r=!1){for(this.options.pedantic&&(t=t.replace(T.tabCharGlobal," ").replace(T.spaceLine,""));t;){let n;if(this.options.extensions?.block?.some(r=>!!(n=r.call({lexer:this},t,e))&&(t=t.substring(n.raw.length),e.push(n),!0)))continue;if(n=this.tokenizer.space(t)){t=t.substring(n.raw.length);const r=e.at(-1);1===n.raw.length&&void 0!==r?r.raw+="\n":e.push(n);continue}if(n=this.tokenizer.code(t)){t=t.substring(n.raw.length);const r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+="\n"+n.raw,r.text+="\n"+n.text,this.inlineQueue.at(-1).src=r.text):e.push(n);continue}if(n=this.tokenizer.fences(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.heading(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.hr(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.blockquote(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.list(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.html(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.def(t)){t=t.substring(n.raw.length);const r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+="\n"+n.raw,r.text+="\n"+n.raw,this.inlineQueue.at(-1).src=r.text):this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title});continue}if(n=this.tokenizer.table(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.lheading(t)){t=t.substring(n.raw.length),e.push(n);continue}let i=t;if(this.options.extensions?.startBlock){let e=1/0;const r=t.slice(1);let n;this.options.extensions.startBlock.forEach(t=>{n=t.call({lexer:this},r),"number"==typeof n&&n>=0&&(e=Math.min(e,n))}),e<1/0&&e>=0&&(i=t.substring(0,e+1))}if(this.state.top&&(n=this.tokenizer.paragraph(i))){const a=e.at(-1);r&&"paragraph"===a?.type?(a.raw+="\n"+n.raw,a.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):e.push(n),r=i.length!==t.length,t=t.substring(n.raw.length);continue}if(n=this.tokenizer.text(t)){t=t.substring(n.raw.length);const r=e.at(-1);"text"===r?.type?(r.raw+="\n"+n.raw,r.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):e.push(n);continue}if(t){const e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return this.state.top=!0,e}inline(t,e=[]){return this.inlineQueue.push({src:t,tokens:e}),e}inlineTokens(t,e=[]){let r=t,n=null;if(this.tokens.links){const t=Object.keys(this.tokens.links);if(t.length>0)for(;null!=(n=this.tokenizer.rules.inline.reflinkSearch.exec(r));)t.includes(n[0].slice(n[0].lastIndexOf("[")+1,-1))&&(r=r.slice(0,n.index)+"["+"a".repeat(n[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(n=this.tokenizer.rules.inline.anyPunctuation.exec(r));)r=r.slice(0,n.index)+"++"+r.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(n=this.tokenizer.rules.inline.blockSkip.exec(r));)r=r.slice(0,n.index)+"["+"a".repeat(n[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let i=!1,a="";for(;t;){let n;if(i||(a=""),i=!1,this.options.extensions?.inline?.some(r=>!!(n=r.call({lexer:this},t,e))&&(t=t.substring(n.raw.length),e.push(n),!0)))continue;if(n=this.tokenizer.escape(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.tag(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.link(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(n.raw.length);const r=e.at(-1);"text"===n.type&&"text"===r?.type?(r.raw+=n.raw,r.text+=n.text):e.push(n);continue}if(n=this.tokenizer.emStrong(t,r,a)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.codespan(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.br(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.del(t)){t=t.substring(n.raw.length),e.push(n);continue}if(n=this.tokenizer.autolink(t)){t=t.substring(n.raw.length),e.push(n);continue}if(!this.state.inLink&&(n=this.tokenizer.url(t))){t=t.substring(n.raw.length),e.push(n);continue}let o=t;if(this.options.extensions?.startInline){let e=1/0;const r=t.slice(1);let n;this.options.extensions.startInline.forEach(t=>{n=t.call({lexer:this},r),"number"==typeof n&&n>=0&&(e=Math.min(e,n))}),e<1/0&&e>=0&&(o=t.substring(0,e+1))}if(n=this.tokenizer.inlineText(o)){t=t.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(a=n.raw.slice(-1)),i=!0;const r=e.at(-1);"text"===r?.type?(r.raw+=n.raw,r.text+=n.text):e.push(n);continue}if(t){const e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return e}},Tt=class{options;parser;constructor(t){this.options=t||_}space(t){return""}code({text:t,lang:e,escaped:r}){const n=(e||"").match(T.notSpaceStart)?.[0],i=t.replace(T.endingNewline,"")+"\n";return n?'<pre><code class="language-'+kt(n)+'">'+(r?i:kt(i,!0))+"</code></pre>\n":"<pre><code>"+(r?i:kt(i,!0))+"</code></pre>\n"}blockquote({tokens:t}){return`<blockquote>\n${this.parser.parse(t)}</blockquote>\n`}html({text:t}){return t}heading({tokens:t,depth:e}){return`<h${e}>${this.parser.parseInline(t)}</h${e}>\n`}hr(t){return"<hr>\n"}list(t){const e=t.ordered,r=t.start;let n="";for(let a=0;a<t.items.length;a++){const e=t.items[a];n+=this.listitem(e)}const i=e?"ol":"ul";return"<"+i+(e&&1!==r?' start="'+r+'"':"")+">\n"+n+"</"+i+">\n"}listitem(t){let e="";if(t.task){const r=this.checkbox({checked:!!t.checked});t.loose?"paragraph"===t.tokens[0]?.type?(t.tokens[0].text=r+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&"text"===t.tokens[0].tokens[0].type&&(t.tokens[0].tokens[0].text=r+" "+kt(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):e+=r+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`<li>${e}</li>\n`}checkbox({checked:t}){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:t}){return`<p>${this.parser.parseInline(t)}</p>\n`}table(t){let e="",r="";for(let i=0;i<t.header.length;i++)r+=this.tablecell(t.header[i]);e+=this.tablerow({text:r});let n="";for(let i=0;i<t.rows.length;i++){const e=t.rows[i];r="";for(let t=0;t<e.length;t++)r+=this.tablecell(e[t]);n+=this.tablerow({text:r})}return n&&(n=`<tbody>${n}</tbody>`),"<table>\n<thead>\n"+e+"</thead>\n"+n+"</table>\n"}tablerow({text:t}){return`<tr>\n${t}</tr>\n`}tablecell(t){const e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+`</${r}>\n`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${kt(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:r}){const n=this.parser.parseInline(r),i=Ct(t);if(null===i)return n;let a='<a href="'+(t=i)+'"';return e&&(a+=' title="'+kt(e)+'"'),a+=">"+n+"</a>",a}image({href:t,title:e,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));const i=Ct(t);if(null===i)return kt(r);let a=`<img src="${t=i}" alt="${r}"`;return e&&(a+=` title="${kt(e)}"`),a+=">",a}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:kt(t.text)}},Mt=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}},Bt=class t{options;renderer;textRenderer;constructor(t){this.options=t||_,this.options.renderer=this.options.renderer||new Tt,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Mt}static parse(e,r){return new t(r).parse(e)}static parseInline(e,r){return new t(r).parseInline(e)}parse(t,e=!0){let r="";for(let n=0;n<t.length;n++){const i=t[n];if(this.options.extensions?.renderers?.[i.type]){const t=i,e=this.options.extensions.renderers[t.type].call({parser:this},t);if(!1!==e||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(t.type)){r+=e||"";continue}}const a=i;switch(a.type){case"space":r+=this.renderer.space(a);continue;case"hr":r+=this.renderer.hr(a);continue;case"heading":r+=this.renderer.heading(a);continue;case"code":r+=this.renderer.code(a);continue;case"table":r+=this.renderer.table(a);continue;case"blockquote":r+=this.renderer.blockquote(a);continue;case"list":r+=this.renderer.list(a);continue;case"html":r+=this.renderer.html(a);continue;case"paragraph":r+=this.renderer.paragraph(a);continue;case"text":{let i=a,o=this.renderer.text(i);for(;n+1<t.length&&"text"===t[n+1].type;)i=t[++n],o+="\n"+this.renderer.text(i);r+=e?this.renderer.paragraph({type:"paragraph",raw:o,text:o,tokens:[{type:"text",raw:o,text:o,escaped:!0}]}):o;continue}default:{const t='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(t),"";throw new Error(t)}}}return r}parseInline(t,e=this.renderer){let r="";for(let n=0;n<t.length;n++){const i=t[n];if(this.options.extensions?.renderers?.[i.type]){const t=this.options.extensions.renderers[i.type].call({parser:this},i);if(!1!==t||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){r+=t||"";continue}}const a=i;switch(a.type){case"escape":case"text":r+=e.text(a);break;case"html":r+=e.html(a);break;case"link":r+=e.link(a);break;case"image":r+=e.image(a);break;case"strong":r+=e.strong(a);break;case"em":r+=e.em(a);break;case"codespan":r+=e.codespan(a);break;case"br":r+=e.br(a);break;case"del":r+=e.del(a);break;default:{const t='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(t),"";throw new Error(t)}}}return r}},Lt=class{options;block;constructor(t){this.options=t||_}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}provideLexer(){return this.block?At.lex:At.lexInline}provideParser(){return this.block?Bt.parse:Bt.parseInline}},Ft=new class{defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Bt;Renderer=Tt;TextRenderer=Mt;Lexer=At;Tokenizer=St;Hooks=Lt;constructor(...t){this.use(...t)}walkTokens(t,e){let r=[];for(const n of t)switch(r=r.concat(e.call(this,n)),n.type){case"table":{const t=n;for(const n of t.header)r=r.concat(this.walkTokens(n.tokens,e));for(const n of t.rows)for(const t of n)r=r.concat(this.walkTokens(t.tokens,e));break}case"list":{const t=n;r=r.concat(this.walkTokens(t.items,e));break}default:{const t=n;this.defaults.extensions?.childTokens?.[t.type]?this.defaults.extensions.childTokens[t.type].forEach(n=>{const i=t[n].flat(1/0);r=r.concat(this.walkTokens(i,e))}):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...t){const e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(t=>{const r={...t};if(r.async=this.defaults.async||r.async||!1,t.extensions&&(t.extensions.forEach(t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){const r=e.renderers[t.name];e.renderers[t.name]=r?function(...e){let n=t.renderer.apply(this,e);return!1===n&&(n=r.apply(this,e)),n}:t.renderer}if("tokenizer"in t){if(!t.level||"block"!==t.level&&"inline"!==t.level)throw new Error("extension level must be 'block' or 'inline'");const r=e[t.level];r?r.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&("block"===t.level?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:"inline"===t.level&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)}),r.extensions=e),t.renderer){const e=this.defaults.renderer||new Tt(this.defaults);for(const r in t.renderer){if(!(r in e))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;const n=r,i=t.renderer[n],a=e[n];e[n]=(...t)=>{let r=i.apply(e,t);return!1===r&&(r=a.apply(e,t)),r||""}}r.renderer=e}if(t.tokenizer){const e=this.defaults.tokenizer||new St(this.defaults);for(const r in t.tokenizer){if(!(r in e))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;const n=r,i=t.tokenizer[n],a=e[n];e[n]=(...t)=>{let r=i.apply(e,t);return!1===r&&(r=a.apply(e,t)),r}}r.tokenizer=e}if(t.hooks){const e=this.defaults.hooks||new Lt;for(const r in t.hooks){if(!(r in e))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;const n=r,i=t.hooks[n],a=e[n];Lt.passThroughHooks.has(r)?e[n]=t=>{if(this.defaults.async)return Promise.resolve(i.call(e,t)).then(t=>a.call(e,t));const r=i.call(e,t);return a.call(e,r)}:e[n]=(...t)=>{let r=i.apply(e,t);return!1===r&&(r=a.apply(e,t)),r}}r.hooks=e}if(t.walkTokens){const e=this.defaults.walkTokens,n=t.walkTokens;r.walkTokens=function(t){let r=[];return r.push(n.call(this,t)),e&&(r=r.concat(e.call(this,t))),r}}this.defaults={...this.defaults,...r}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return At.lex(t,e??this.defaults)}parser(t,e){return Bt.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{const n={...r},i={...this.defaults,...n},a=this.onError(!!i.silent,!!i.async);if(!0===this.defaults.async&&!1===n.async)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(null==e)return a(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof e)return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=t);const o=i.hooks?i.hooks.provideLexer():t?At.lex:At.lexInline,s=i.hooks?i.hooks.provideParser():t?Bt.parse:Bt.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(e):e).then(t=>o(t,i)).then(t=>i.hooks?i.hooks.processAllTokens(t):t).then(t=>i.walkTokens?Promise.all(this.walkTokens(t,i.walkTokens)).then(()=>t):t).then(t=>s(t,i)).then(t=>i.hooks?i.hooks.postprocess(t):t).catch(a);try{i.hooks&&(e=i.hooks.preprocess(e));let t=o(e,i);i.hooks&&(t=i.hooks.processAllTokens(t)),i.walkTokens&&this.walkTokens(t,i.walkTokens);let r=s(t,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(l){return a(l)}}}onError(t,e){return r=>{if(r.message+="\nPlease report this to https://github.com/markedjs/marked.",t){const t="<p>An error occurred:</p><pre>"+kt(r.message+"",!0)+"</pre>";return e?Promise.resolve(t):t}if(e)return Promise.reject(r);throw r}}};function $t(t,e){return Ft.parse(t,e)}$t.options=$t.setOptions=function(t){return Ft.setOptions(t),$t.defaults=Ft.defaults,v($t.defaults),$t},$t.getDefaults=w,$t.defaults=_,$t.use=function(...t){return Ft.use(...t),$t.defaults=Ft.defaults,v($t.defaults),$t},$t.walkTokens=function(t,e){return Ft.walkTokens(t,e)},$t.parseInline=Ft.parseInline,$t.Parser=Bt,$t.parser=Bt.parse,$t.Renderer=Tt,$t.TextRenderer=Mt,$t.Lexer=At,$t.lexer=At.lex,$t.Tokenizer=St,$t.Hooks=Lt,$t.parse=$t;$t.options,$t.setOptions,$t.use,$t.walkTokens,$t.parseInline,Bt.parse,At.lex;var Et=r(86793),Dt={body:'<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/><text transform="translate(21.16 64.67)" style="fill: #fff; font-family: ArialMT, Arial; font-size: 67.75px;"><tspan x="0" y="0">?</tspan></text></g>',height:80,width:80},Nt=new Map,Ot=new Map,Rt=(0,i.K2)(t=>{for(const e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(i.Rm.debug("Registering icon pack:",e.name),"loader"in e)Ot.set(e.name,e.loader);else{if(!("icons"in e))throw i.Rm.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.');Nt.set(e.name,e.icons)}}},"registerIconPacks"),It=(0,i.K2)(async(t,e)=>{const r=((t,e,r,n="")=>{const i=t.split(":");if("@"===t.slice(0,1)){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){const t=i.pop(),r=i.pop(),o={provider:i.length>0?i[0]:n,prefix:r,name:t};return e&&!a(o)?null:o}const o=i[0],s=o.split("-");if(s.length>1){const t={provider:n,prefix:s.shift(),name:s.join("-")};return e&&!a(t)?null:t}if(r&&""===n){const t={provider:n,prefix:"",name:o};return e&&!a(t,r)?null:t}return null})(t,!0,void 0!==e);if(!r)throw new Error(`Invalid icon name: ${t}`);const n=r.prefix||e;if(!n)throw new Error(`Icon name must contain a prefix: ${t}`);let o=Nt.get(n);if(!o){const t=Ot.get(n);if(!t)throw new Error(`Icon set not found: ${r.prefix}`);try{o={...await t(),prefix:n},Nt.set(n,o)}catch(l){throw i.Rm.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}const s=d(o,r.name);if(!s)throw new Error(`Icon not found: ${t}`);return s},"getRegisteredIconData"),jt=(0,i.K2)(async t=>{try{return await It(t),!0}catch{return!1}},"isIconAvailable"),zt=(0,i.K2)(async(t,e,r)=>{let n;try{n=await It(t,e?.fallbackPrefix)}catch(o){i.Rm.error(o),n=Dt}const a=function(t,e){const r={...l,...t},n={...f,...e},i={left:r.left,top:r.top,width:r.width,height:r.height};let a=r.body;[r,n].forEach(t=>{const e=[],r=t.hFlip,n=t.vFlip;let o,s=t.rotate;switch(r?n?s+=2:(e.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),e.push("scale(-1 1)"),i.top=i.left=0):n&&(e.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),e.push("scale(1 -1)"),i.top=i.left=0),s<0&&(s-=4*Math.floor(s/4)),s%=4,s){case 1:o=i.height/2+i.top,e.unshift("rotate(90 "+o.toString()+" "+o.toString()+")");break;case 2:e.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:o=i.width/2+i.left,e.unshift("rotate(-90 "+o.toString()+" "+o.toString()+")")}s%2==1&&(i.left!==i.top&&(o=i.left,i.left=i.top,i.top=o),i.width!==i.height&&(o=i.width,i.width=i.height,i.height=o)),e.length&&(a=function(t,e,r){const n=function(t,e="defs"){let r="";const n=t.indexOf("<"+e);for(;n>=0;){const i=t.indexOf(">",n),a=t.indexOf("</"+e);if(-1===i||-1===a)break;const o=t.indexOf(">",a);if(-1===o)break;r+=t.slice(i+1,a).trim(),t=t.slice(0,n).trim()+t.slice(o+1)}return{defs:r,content:t}}(t);return i=n.defs,a=e+n.content+r,i?"<defs>"+i+"</defs>"+a:a;var i,a}(a,'<g transform="'+e.join(" ")+'">',"</g>"))});const o=n.width,s=n.height,c=i.width,h=i.height;let u,d;null===o?(d=null===s?"1em":"auto"===s?h:s,u=y(d,c/h)):(u="auto"===o?c:o,d=null===s?y(u,h/c):"auto"===s?h:s);const p={},g=(t,e)=>{(t=>"unset"===t||"undefined"===t||"none"===t)(e)||(p[t]=e.toString())};g("width",u),g("height",d);const m=[i.left,i.top,c,h];return p.viewBox=m.join(" "),{attributes:p,viewBox:m,body:a}}(n,e);return function(t,e){let r=-1===t.indexOf("xlink:")?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const n in e)r+=" "+n+'="'+e[n]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+r+">"+t+"</svg>"}(function(t,e=b){const r=[];let n;for(;n=x.exec(t);)r.push(n[1]);if(!r.length)return t;const i="suffix"+(16777216*Math.random()|Date.now()).toString(16);return r.forEach(r=>{const n="function"==typeof e?e(r):e+(k++).toString(),a=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+a+')([")]|\\.[a-z])',"g"),"$1"+n+i+"$3")}),t=t.replace(new RegExp(i,"g"),"")}(a.body),{...a.attributes,...r})},"getIconSVG");function Pt(t,{markdownAutoWrap:e}){const r=t.replace(/<br\/>/g,"\n").replace(/\n{2,}/g,"\n"),n=(0,Et.T)(r);return!1===e?n.replace(/ /g," "):n}function Kt(t,e={}){const r=Pt(t,e),n=$t.lexer(r),a=[[]];let o=0;function s(t,e="normal"){if("text"===t.type){t.text.split("\n").forEach((t,r)=>{0!==r&&(o++,a.push([])),t.split(" ").forEach(t=>{(t=t.replace(/'/g,"'"))&&a[o].push({content:t,type:e})})})}else"strong"===t.type||"em"===t.type?t.tokens.forEach(e=>{s(e,t.type)}):"html"===t.type&&a[o].push({content:t.text,type:"normal"})}return(0,i.K2)(s,"processNode"),n.forEach(t=>{"paragraph"===t.type?t.tokens?.forEach(t=>{s(t)}):"html"===t.type&&a[o].push({content:t.text,type:"normal"})}),a}function qt(t,{markdownAutoWrap:e}={}){const r=$t.lexer(t);function n(t){return"text"===t.type?!1===e?t.text.replace(/\n */g,"<br/>").replace(/ /g," "):t.text.replace(/\n */g,"<br/>"):"strong"===t.type?`<strong>${t.tokens?.map(n).join("")}</strong>`:"em"===t.type?`<em>${t.tokens?.map(n).join("")}</em>`:"paragraph"===t.type?`<p>${t.tokens?.map(n).join("")}</p>`:"space"===t.type?"":"html"===t.type?`${t.text}`:"escape"===t.type?t.text:`Unsupported markdown: ${t.type}`}return(0,i.K2)(n,"output"),r.map(n).join("")}function Wt(t){return Intl.Segmenter?[...(new Intl.Segmenter).segment(t)].map(t=>t.segment):[...t]}function Ht(t,e){return Ut(t,[],Wt(e.content),e.type)}function Ut(t,e,r,n){if(0===r.length)return[{content:e.join(""),type:n},{content:"",type:n}];const[i,...a]=r,o=[...e,i];return t([{content:o.join(""),type:n}])?Ut(t,o,a,n):(0===e.length&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}])}function Yt(t,e){if(t.some(({content:t})=>t.includes("\n")))throw new Error("splitLineToFitWidth does not support newlines in the line");return Gt(t,e)}function Gt(t,e,r=[],n=[]){if(0===t.length)return n.length>0&&r.push(n),r.length>0?r:[];let i="";" "===t[0].content&&(i=" ",t.shift());const a=t.shift()??{content:" ",type:"normal"},o=[...n];if(""!==i&&o.push({content:i,type:"normal"}),o.push(a),e(o))return Gt(t,e,r,o);if(n.length>0)r.push(n),t.unshift(a);else if(a.content){const[n,i]=Ht(e,a);r.push([n]),i.content&&t.unshift(i)}return Gt(t,e,r)}function Vt(t,e){e&&t.attr("style",e)}async function Zt(t,e,r,n,a=!1){const o=t.append("foreignObject");o.attr("width",10*r+"px"),o.attr("height",10*r+"px");const s=o.append("xhtml:div");let l=e.label;e.label&&(0,i.Wi)(e.label)&&(l=await(0,i.VJ)(e.label.replace(i.Y2.lineBreakRegex,"\n"),(0,i.D7)()));const c=e.isNode?"nodeLabel":"edgeLabel",h=s.append("span");h.html(l),Vt(h,e.labelStyle),h.attr("class",`${c} ${n}`),Vt(s,e.labelStyle),s.style("display","table-cell"),s.style("white-space","nowrap"),s.style("line-height","1.5"),s.style("max-width",r+"px"),s.style("text-align","center"),s.attr("xmlns","http://www.w3.org/1999/xhtml"),a&&s.attr("class","labelBkg");let u=s.node().getBoundingClientRect();return u.width===r&&(s.style("display","table"),s.style("white-space","break-spaces"),s.style("width",r+"px"),u=s.node().getBoundingClientRect()),o.node()}function Xt(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function Qt(t,e,r){const n=t.append("text"),i=Xt(n,1,e);ee(i,r);const a=i.node().getComputedTextLength();return n.remove(),a}function Jt(t,e,r){const n=t.append("text"),i=Xt(n,1,e);ee(i,[{content:r,type:"normal"}]);const a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function te(t,e,r,n=!1){const a=e.append("g"),o=a.insert("rect").attr("class","background").attr("style","stroke: none"),s=a.append("text").attr("y","-10.1");let l=0;for(const c of r){const e=(0,i.K2)(e=>Qt(a,1.1,e)<=t,"checkWidth"),r=e(c)?[c]:Yt(c,e);for(const t of r){ee(Xt(s,l,1.1),t),l++}}if(n){const t=s.node().getBBox(),e=2;return o.attr("x",t.x-e).attr("y",t.y-e).attr("width",t.width+2*e).attr("height",t.height+2*e),a.node()}return s.node()}function ee(t,e){t.text(""),e.forEach((e,r)=>{const n=t.append("tspan").attr("font-style","em"===e.type?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight","strong"===e.type?"bold":"normal");0===r?n.text(e.content):n.text(" "+e.content)})}async function re(t){const e=[];t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(t,r,n)=>(e.push((async()=>{const e=`${r}:${n}`;return await jt(e)?await zt(e,void 0,{class:"label-icon"}):`<i class='${(0,i.oB)(t).replace(":"," ")}'></i>`})()),t));const r=await Promise.all(e);return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>r.shift()??"")}(0,i.K2)(Pt,"preprocessMarkdown"),(0,i.K2)(Kt,"markdownToLines"),(0,i.K2)(qt,"markdownToHTML"),(0,i.K2)(Wt,"splitTextToChars"),(0,i.K2)(Ht,"splitWordToFitWidth"),(0,i.K2)(Ut,"splitWordToFitWidthRecursion"),(0,i.K2)(Yt,"splitLineToFitWidth"),(0,i.K2)(Gt,"splitLineToFitWidthRecursion"),(0,i.K2)(Vt,"applyStyle"),(0,i.K2)(Zt,"addHtmlSpan"),(0,i.K2)(Xt,"createTspan"),(0,i.K2)(Qt,"computeWidthOfText"),(0,i.K2)(Jt,"computeDimensionOfText"),(0,i.K2)(te,"createFormattedText"),(0,i.K2)(ee,"updateTextContentAndStyles"),(0,i.K2)(re,"replaceIconSubstring");var ne=(0,i.K2)(async(t,e="",{style:r="",isTitle:a=!1,classes:o="",useHtmlLabels:s=!0,isNode:l=!0,width:c=200,addSvgBackground:h=!1}={},u)=>{if(i.Rm.debug("XYZ createText",e,r,a,o,s,l,"addSvgBackground: ",h),s){const a=qt(e,u),s=await re((0,n.Sm)(a)),d=e.replace(/\\\\/g,"\\"),p={isNode:l,label:(0,i.Wi)(e)?d:s,labelStyle:r.replace("fill:","color:")};return await Zt(t,p,c,o,h)}{const n=te(c,t,Kt(e.replace(/<br\s*\/?>/g,"<br/>").replace("<br>","<br/>"),u),!!e&&h);if(l){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,C.Ltv)(n).attr("style",t)}else{const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");(0,C.Ltv)(n).select("rect").attr("style",t.replace(/background:/g,"fill:"));const e=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,C.Ltv)(n).select("text").attr("style",e)}return n}},"createText")},27163:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var n=r(57454);const i=function(){return!1};var a="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=a&&"object"==typeof module&&module&&!module.nodeType&&module,s=o&&o.exports===a?n.A.Buffer:void 0;const l=(s?s.isBuffer:void 0)||i},27293:(t,e,r)=>{"use strict";r.d(e,{C0:()=>S,VA:()=>y,K2:()=>m,xA:()=>ut,hH:()=>$,Dl:()=>zt,IU:()=>re,Wt:()=>Xt,Y2:()=>Kt,a$:()=>Ht,sb:()=>J,ME:()=>pe,UI:()=>Z,Ch:()=>T,mW:()=>A,DB:()=>_,_3:()=>Lt,EJ:()=>w,m7:()=>oe,iN:()=>ie,zj:()=>ct,D7:()=>ue,Gs:()=>be,J$:()=>L,ab:()=>le,Q2:()=>st,P$:()=>P,ID:()=>Bt,Wi:()=>jt,H1:()=>yt,Rm:()=>b,QO:()=>Et,Js:()=>xe,Xd:()=>M,VJ:()=>Pt,cL:()=>dt,$i:()=>X,jZ:()=>_t,oB:()=>fe,wZ:()=>at,EI:()=>ae,SV:()=>ne,Nk:()=>lt,XV:()=>de,ke:()=>se,He:()=>k,UU:()=>it,ot:()=>Ut,mj:()=>ge,tM:()=>Zt,H$:()=>H,B6:()=>ot});var n=r(56287),i=r(55385),a=r(21763);const o=(t,e)=>{const r=i.A.parse(t),n={};for(const i in e)e[i]&&(n[i]=r[i]+e[i]);return(0,a.A)(t,n)};var s=r(30941);const l=(t,e,r=50)=>{const{r:n,g:a,b:o,a:l}=i.A.parse(t),{r:c,g:h,b:u,a:d}=i.A.parse(e),p=r/100,f=2*p-1,g=l-d,m=((f*g===-1?f:(f+g)/(1+f*g))+1)/2,y=1-m,x=n*m+c*y,b=a*m+h*y,k=o*m+u*y,C=l*p+d*(1-p);return(0,s.A)(x,b,k,C)},c=(t,e=100)=>{const r=i.A.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,l(r,t,e)};var h,u=r(81896),d=r(58480),p=r(13212),f=r(28404),g=Object.defineProperty,m=(t,e)=>g(t,"name",{value:e,configurable:!0}),y=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})},x={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},b={trace:m((...t)=>{},"trace"),debug:m((...t)=>{},"debug"),info:m((...t)=>{},"info"),warn:m((...t)=>{},"warn"),error:m((...t)=>{},"error"),fatal:m((...t)=>{},"fatal")},k=m(function(t="fatal"){let e=x.fatal;"string"==typeof t?t.toLowerCase()in x&&(e=x[t]):"number"==typeof t&&(e=t),b.trace=()=>{},b.debug=()=>{},b.info=()=>{},b.warn=()=>{},b.error=()=>{},b.fatal=()=>{},e<=x.fatal&&(b.fatal=console.error?console.error.bind(console,C("FATAL"),"color: orange"):console.log.bind(console,"\x1b[35m",C("FATAL"))),e<=x.error&&(b.error=console.error?console.error.bind(console,C("ERROR"),"color: orange"):console.log.bind(console,"\x1b[31m",C("ERROR"))),e<=x.warn&&(b.warn=console.warn?console.warn.bind(console,C("WARN"),"color: orange"):console.log.bind(console,"\x1b[33m",C("WARN"))),e<=x.info&&(b.info=console.info?console.info.bind(console,C("INFO"),"color: lightblue"):console.log.bind(console,"\x1b[34m",C("INFO"))),e<=x.debug&&(b.debug=console.debug?console.debug.bind(console,C("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",C("DEBUG"))),e<=x.trace&&(b.trace=console.debug?console.debug.bind(console,C("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",C("TRACE")))},"setLogLevel"),C=m(t=>`%c${n().format("ss.SSS")} : ${t} : `,"format"),w=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,_=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,v=/\s*%%.*\n/gm,S=class extends Error{static{m(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}},A={},T=m(function(t,e){t=t.replace(w,"").replace(_,"").replace(v,"\n");for(const[r,{detector:n}]of Object.entries(A)){if(n(t,e))return r}throw new S(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),M=m((...t)=>{for(const{id:e,detector:r,loader:n}of t)B(e,r,n)},"registerLazyLoadedDiagrams"),B=m((t,e,r)=>{A[t]&&b.warn(`Detector with key ${t} already exists. Overwriting.`),A[t]={detector:e,loader:r},b.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),L=m(t=>A[t].loader,"getDiagramLoader"),F=m((t,e,{depth:r=2,clobber:n=!1}={})=>{const i={depth:r,clobber:n};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(e=>F(t,e,i)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(e=>{t.includes(e)||t.push(e)}),t):void 0===t||r<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach(i=>{"object"!=typeof e[i]||void 0!==t[i]&&"object"!=typeof t[i]?(n||"object"!=typeof t[i]&&"object"!=typeof e[i])&&(t[i]=e[i]):(void 0===t[i]&&(t[i]=Array.isArray(e[i])?[]:{}),t[i]=F(t[i],e[i],{depth:r-1,clobber:n}))}),t)},"assignWithDepth"),$=F,E="#ffffff",D="#f2f2f2",N=m((t,e)=>o(t,e?{s:-40,l:10}:{s:-40,l:-10}),"mkBorder"),O=class{static{m(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||N(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||N(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||N(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||N(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||c(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||c(this.tertiaryColor),this.lineColor=this.lineColor||c(this.background),this.arrowheadColor=this.arrowheadColor||c(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,u.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,u.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||c(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,d.A)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||(0,u.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,10)):(this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||(0,d.A)(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,u.A)(this["cScale"+e],75);else for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,u.A)(this["cScale"+e],25);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleInv"+e]=this["cScaleInv"+e]||c(this["cScale"+e]);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this.darkMode?this["cScalePeer"+e]=this["cScalePeer"+e]||(0,d.A)(this["cScale"+e],10):this["cScalePeer"+e]=this["cScalePeer"+e]||(0,u.A)(this["cScale"+e],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleLabel"+e]=this["cScaleLabel"+e]||this.scaleLabelColor;const t=this.darkMode?-4:-1;for(let e=0;e<5;e++)this["surface"+e]=this["surface"+e]||o(this.mainBkg,{h:180,s:-15,l:t*(5+3*e)}),this["surfacePeer"+e]=this["surfacePeer"+e]||o(this.mainBkg,{h:180,s:-15,l:t*(8+3*e)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||o(this.primaryColor,{h:64}),this.fillType3=this.fillType3||o(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||o(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||o(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||o(this.primaryColor,{h:128}),this.fillType7=this.fillType7||o(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||o(this.primaryColor,{l:-10}),this.pie5=this.pie5||o(this.secondaryColor,{l:-10}),this.pie6=this.pie6||o(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||o(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||o(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||o(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||o(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||o(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||o(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.archEdgeColor=this.archEdgeColor||"#777",this.archEdgeArrowColor=this.archEdgeArrowColor||"#777",this.archEdgeWidth=this.archEdgeWidth||"3",this.archGroupBorderColor=this.archGroupBorderColor||"#000",this.archGroupBorderWidth=this.archGroupBorderWidth||"2px",this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||o(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||o(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||o(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||o(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||o(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||o(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,d.A)(this.quadrant1Fill):(0,u.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,u.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||o(this.primaryColor,{h:-30}),this.git4=this.git4||o(this.primaryColor,{h:-60}),this.git5=this.git5||o(this.primaryColor,{h:-90}),this.git6=this.git6||o(this.primaryColor,{h:60}),this.git7=this.git7||o(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)):(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)),this.gitInv0=this.gitInv0||c(this.git0),this.gitInv1=this.gitInv1||c(this.git1),this.gitInv2=this.gitInv2||c(this.git2),this.gitInv3=this.gitInv3||c(this.git3),this.gitInv4=this.gitInv4||c(this.git4),this.gitInv5=this.gitInv5||c(this.git5),this.gitInv6=this.gitInv6||c(this.git6),this.gitInv7=this.gitInv7||c(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||E,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||D}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},R=m(t=>{const e=new O;return e.calculate(t),e},"getThemeVariables"),I=class{static{m(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,d.A)(this.primaryColor,16),this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=c(this.background),this.secondaryBorderColor=N(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=N(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,d.A)(c("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=(0,s.A)(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=(0,u.A)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=(0,u.A)(this.sectionBkgColor,10),this.taskBorderColor=(0,s.A)(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=(0,s.A)(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=(0,d.A)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,d.A)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,d.A)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=o(this.primaryColor,{h:64}),this.fillType3=o(this.secondaryColor,{h:64}),this.fillType4=o(this.primaryColor,{h:-64}),this.fillType5=o(this.secondaryColor,{h:-64}),this.fillType6=o(this.primaryColor,{h:128}),this.fillType7=o(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||c(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScalePeer"+t]=this["cScalePeer"+t]||(0,d.A)(this["cScale"+t],10);for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||o(this.mainBkg,{h:30,s:-30,l:-(4*t-10)}),this["surfacePeer"+t]=this["surfacePeer"+t]||o(this.mainBkg,{h:30,s:-30,l:-(4*t-7)});this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||o(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||o(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||o(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||o(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||o(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||o(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,d.A)(this.quadrant1Fill):(0,u.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22"},this.packet={startByteColor:this.primaryTextColor,endByteColor:this.primaryTextColor,labelColor:this.primaryTextColor,titleColor:this.primaryTextColor,blockStrokeColor:this.primaryTextColor,blockFillColor:this.background},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.classText=this.primaryTextColor,this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,u.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=(0,d.A)(this.secondaryColor,20),this.git1=(0,d.A)(this.pie2||this.secondaryColor,20),this.git2=(0,d.A)(this.pie3||this.tertiaryColor,20),this.git3=(0,d.A)(this.pie4||o(this.primaryColor,{h:-30}),20),this.git4=(0,d.A)(this.pie5||o(this.primaryColor,{h:-60}),20),this.git5=(0,d.A)(this.pie6||o(this.primaryColor,{h:-90}),10),this.git6=(0,d.A)(this.pie7||o(this.primaryColor,{h:60}),10),this.git7=(0,d.A)(this.pie8||o(this.primaryColor,{h:120}),20),this.gitInv0=this.gitInv0||c(this.git0),this.gitInv1=this.gitInv1||c(this.git1),this.gitInv2=this.gitInv2||c(this.git2),this.gitInv3=this.gitInv3||c(this.git3),this.gitInv4=this.gitInv4||c(this.git4),this.gitInv5=this.gitInv5||c(this.git5),this.gitInv6=this.gitInv6||c(this.git6),this.gitInv7=this.gitInv7||c(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||c(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||c(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||(0,d.A)(this.background,12),this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||(0,d.A)(this.background,2),this.nodeBorder=this.nodeBorder||"#999"}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},j=m(t=>{const e=new I;return e.calculate(t),e},"getThemeVariables"),z=class{static{m(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=o(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=N(this.primaryColor,this.darkMode),this.secondaryBorderColor=N(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=N(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=(0,s.A)(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,u.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,u.A)(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=(0,u.A)(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||(0,u.A)(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||o(this["cScale"+t],{h:180});for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||o(this.mainBkg,{h:30,l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||o(this.mainBkg,{h:30,l:-(7+5*t)});if(this.scaleLabelColor="calculated"!==this.scaleLabelColor&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor,"calculated"!==this.labelTextColor){this.cScaleLabel0=this.cScaleLabel0||c(this.labelTextColor),this.cScaleLabel3=this.cScaleLabel3||c(this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.labelTextColor}this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.textColor,this.edgeLabelBackground=this.labelBackground,this.actorBorder=(0,d.A)(this.border1,23),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.signalColor=this.textColor,this.signalTextColor=this.textColor,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.rowOdd=this.rowOdd||(0,d.A)(this.primaryColor,75)||"#ffffff",this.rowEven=this.rowEven||(0,d.A)(this.primaryColor,1),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=o(this.primaryColor,{h:64}),this.fillType3=o(this.secondaryColor,{h:64}),this.fillType4=o(this.primaryColor,{h:-64}),this.fillType5=o(this.secondaryColor,{h:-64}),this.fillType6=o(this.primaryColor,{h:128}),this.fillType7=o(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||o(this.tertiaryColor,{l:-40}),this.pie4=this.pie4||o(this.primaryColor,{l:-10}),this.pie5=this.pie5||o(this.secondaryColor,{l:-30}),this.pie6=this.pie6||o(this.tertiaryColor,{l:-20}),this.pie7=this.pie7||o(this.primaryColor,{h:60,l:-20}),this.pie8=this.pie8||o(this.primaryColor,{h:-60,l:-40}),this.pie9=this.pie9||o(this.primaryColor,{h:120,l:-40}),this.pie10=this.pie10||o(this.primaryColor,{h:60,l:-40}),this.pie11=this.pie11||o(this.primaryColor,{h:-90,l:-40}),this.pie12=this.pie12||o(this.primaryColor,{h:120,l:-30}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||o(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||o(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||o(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||o(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||o(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||o(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,d.A)(this.quadrant1Fill):(0,u.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.labelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||o(this.primaryColor,{h:-30}),this.git4=this.git4||o(this.primaryColor,{h:-60}),this.git5=this.git5||o(this.primaryColor,{h:-90}),this.git6=this.git6||o(this.primaryColor,{h:60}),this.git7=this.git7||o(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)):(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)),this.gitInv0=this.gitInv0||(0,u.A)(c(this.git0),25),this.gitInv1=this.gitInv1||c(this.git1),this.gitInv2=this.gitInv2||c(this.git2),this.gitInv3=this.gitInv3||c(this.git3),this.gitInv4=this.gitInv4||c(this.git4),this.gitInv5=this.gitInv5||c(this.git5),this.gitInv6=this.gitInv6||c(this.git6),this.gitInv7=this.gitInv7||c(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||c(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||c(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||E,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||D}calculate(t){if(Object.keys(this).forEach(t=>{"calculated"===this[t]&&(this[t]=void 0)}),"object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},P=m(t=>{const e=new z;return e.calculate(t),e},"getThemeVariables"),K=class{static{m(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,d.A)("#cde498",10),this.primaryBorderColor=N(this.primaryColor,this.darkMode),this.secondaryBorderColor=N(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=N(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.primaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=(0,u.A)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,u.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,u.A)(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=(0,u.A)(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||(0,u.A)(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||o(this["cScale"+t],{h:180});this.scaleLabelColor="calculated"!==this.scaleLabelColor&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||o(this.mainBkg,{h:30,s:-30,l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||o(this.mainBkg,{h:30,s:-30,l:-(8+5*t)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.taskBorderColor=this.border1,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||(0,d.A)(this.mainBkg,20),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=o(this.primaryColor,{h:64}),this.fillType3=o(this.secondaryColor,{h:64}),this.fillType4=o(this.primaryColor,{h:-64}),this.fillType5=o(this.secondaryColor,{h:-64}),this.fillType6=o(this.primaryColor,{h:128}),this.fillType7=o(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||o(this.primaryColor,{l:-30}),this.pie5=this.pie5||o(this.secondaryColor,{l:-30}),this.pie6=this.pie6||o(this.tertiaryColor,{h:40,l:-40}),this.pie7=this.pie7||o(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||o(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||o(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||o(this.primaryColor,{h:60,l:-50}),this.pie11=this.pie11||o(this.primaryColor,{h:-60,l:-50}),this.pie12=this.pie12||o(this.primaryColor,{h:120,l:-50}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||o(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||o(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||o(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||o(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||o(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||o(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,d.A)(this.quadrant1Fill):(0,u.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.packet={startByteColor:this.primaryTextColor,endByteColor:this.primaryTextColor,labelColor:this.primaryTextColor,titleColor:this.primaryTextColor,blockStrokeColor:this.primaryTextColor,blockFillColor:this.mainBkg},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||o(this.primaryColor,{h:-30}),this.git4=this.git4||o(this.primaryColor,{h:-60}),this.git5=this.git5||o(this.primaryColor,{h:-90}),this.git6=this.git6||o(this.primaryColor,{h:60}),this.git7=this.git7||o(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)):(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)),this.gitInv0=this.gitInv0||c(this.git0),this.gitInv1=this.gitInv1||c(this.git1),this.gitInv2=this.gitInv2||c(this.git2),this.gitInv3=this.gitInv3||c(this.git3),this.gitInv4=this.gitInv4||c(this.git4),this.gitInv5=this.gitInv5||c(this.git5),this.gitInv6=this.gitInv6||c(this.git6),this.gitInv7=this.gitInv7||c(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||c(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||c(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||E,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||D}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},q=m(t=>{const e=new K;return e.calculate(t),e},"getThemeVariables"),W=class{static{m(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,d.A)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=N(this.primaryColor,this.darkMode),this.secondaryBorderColor=N(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=N(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=(0,d.A)(this.contrast,55),this.border2=this.contrast,this.actorBorder=(0,d.A)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||c(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this.darkMode?this["cScalePeer"+t]=this["cScalePeer"+t]||(0,d.A)(this["cScale"+t],10):this["cScalePeer"+t]=this["cScalePeer"+t]||(0,u.A)(this["cScale"+t],10);this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor),this.cScaleLabel0=this.cScaleLabel0||this.cScale1,this.cScaleLabel2=this.cScaleLabel2||this.cScale1;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||o(this.mainBkg,{l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||o(this.mainBkg,{l:-(8+5*t)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.text,this.sectionBkgColor=(0,d.A)(this.contrast,30),this.sectionBkgColor2=(0,d.A)(this.contrast,30),this.taskBorderColor=(0,u.A)(this.contrast,10),this.taskBkgColor=this.contrast,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=this.text,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.gridColor=(0,d.A)(this.border1,30),this.doneTaskBkgColor=this.done,this.doneTaskBorderColor=this.lineColor,this.critBkgColor=this.critical,this.critBorderColor=(0,u.A)(this.critBkgColor,10),this.todayLineColor=this.critBkgColor,this.vertLineColor=this.critBkgColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||"#000",this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f4f4f4",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.stateBorder=this.stateBorder||"#000",this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#222",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=o(this.primaryColor,{h:64}),this.fillType3=o(this.secondaryColor,{h:64}),this.fillType4=o(this.primaryColor,{h:-64}),this.fillType5=o(this.secondaryColor,{h:-64}),this.fillType6=o(this.primaryColor,{h:128}),this.fillType7=o(this.secondaryColor,{h:128});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pie12=this.pie0,this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||o(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||o(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||o(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||o(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||o(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||o(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,d.A)(this.quadrant1Fill):(0,u.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0"},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=(0,u.A)(this.pie1,25)||this.primaryColor,this.git1=this.pie2||this.secondaryColor,this.git2=this.pie3||this.tertiaryColor,this.git3=this.pie4||o(this.primaryColor,{h:-30}),this.git4=this.pie5||o(this.primaryColor,{h:-60}),this.git5=this.pie6||o(this.primaryColor,{h:-90}),this.git6=this.pie7||o(this.primaryColor,{h:60}),this.git7=this.pie8||o(this.primaryColor,{h:120}),this.gitInv0=this.gitInv0||c(this.git0),this.gitInv1=this.gitInv1||c(this.git1),this.gitInv2=this.gitInv2||c(this.git2),this.gitInv3=this.gitInv3||c(this.git3),this.gitInv4=this.gitInv4||c(this.git4),this.gitInv5=this.gitInv5||c(this.git5),this.gitInv6=this.gitInv6||c(this.git6),this.gitInv7=this.gitInv7||c(this.git7),this.branchLabelColor=this.branchLabelColor||this.labelTextColor,this.gitBranchLabel0=this.branchLabelColor,this.gitBranchLabel1="white",this.gitBranchLabel2=this.branchLabelColor,this.gitBranchLabel3="white",this.gitBranchLabel4=this.branchLabelColor,this.gitBranchLabel5=this.branchLabelColor,this.gitBranchLabel6=this.branchLabelColor,this.gitBranchLabel7=this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||E,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||D}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},H={base:{getThemeVariables:R},dark:{getThemeVariables:j},default:{getThemeVariables:P},forest:{getThemeVariables:q},neutral:{getThemeVariables:m(t=>{const e=new W;return e.calculate(t),e},"getThemeVariables")}},U={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1},Y={...U,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF"},themeCSS:void 0,themeVariables:H.default.getThemeVariables(),sequence:{...U.sequence,messageFont:m(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:m(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:m(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...U.gantt,tickInterval:void 0,useWidth:void 0},c4:{...U.c4,useWidth:void 0,personFont:m(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...U.flowchart,inheritDir:!1},external_personFont:m(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:m(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:m(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:m(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:m(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:m(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:m(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:m(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:m(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:m(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:m(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:m(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:m(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:m(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:m(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:m(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:m(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:m(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:m(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:m(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:m(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...U.pie,useWidth:984},xyChart:{...U.xyChart,useWidth:void 0},requirement:{...U.requirement,useWidth:void 0},packet:{...U.packet},radar:{...U.radar}},G=m((t,e="")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:"object"==typeof t[n]&&null!==t[n]?[...r,e+n,...G(t[n],"")]:[...r,e+n],[]),"keyify"),V=new Set(G(Y,"")),Z=Y,X=m(t=>{if(b.debug("sanitizeDirective called with",t),"object"==typeof t&&null!=t)if(Array.isArray(t))t.forEach(t=>X(t));else{for(const e of Object.keys(t)){if(b.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!V.has(e)||null==t[e]){b.debug("sanitize deleting key: ",e),delete t[e];continue}if("object"==typeof t[e]){b.debug("sanitizing object",e),X(t[e]);continue}const r=["themeCSS","fontFamily","altFontFamily"];for(const n of r)e.includes(n)&&(b.debug("sanitizing css option",e),t[e]=Q(t[e]))}if(t.themeVariables)for(const e of Object.keys(t.themeVariables)){const r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}b.debug("After sanitization",t)}},"sanitizeDirective"),Q=m(t=>{let e=0,r=0;for(const n of t){if(e<r)return"{ /* ERROR: Unbalanced CSS */ }";"{"===n?e++:"}"===n&&r++}return e!==r?"{ /* ERROR: Unbalanced CSS */ }":t},"sanitizeCss"),J=Object.freeze(Z),tt=$({},J),et=[],rt=$({},J),nt=m((t,e)=>{let r=$({},t),n={};for(const i of e)ht(i),n=$(n,i);if(r=$(r,n),n.theme&&n.theme in H){const t=$({},h),e=$(t.themeVariables||{},n.themeVariables);r.theme&&r.theme in H&&(r.themeVariables=H[r.theme].getThemeVariables(e))}return mt(rt=r),rt},"updateCurrentConfig"),it=m(t=>(tt=$({},J),tt=$(tt,t),t.theme&&H[t.theme]&&(tt.themeVariables=H[t.theme].getThemeVariables(t.themeVariables)),nt(tt,et),tt),"setSiteConfig"),at=m(t=>{h=$({},t)},"saveConfigFromInitialize"),ot=m(t=>(tt=$(tt,t),nt(tt,et),tt),"updateSiteConfig"),st=m(()=>$({},tt),"getSiteConfig"),lt=m(t=>(mt(t),$(rt,t),ct()),"setConfig"),ct=m(()=>$({},rt),"getConfig"),ht=m(t=>{t&&(["secure",...tt.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(b.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&ht(t[e])}))},"sanitize"),ut=m(t=>{X(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),et.push(t),nt(tt,et)},"addDirective"),dt=m((t=tt)=>{nt(t,et=[])},"reset"),pt={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},ft={},gt=m(t=>{ft[t]||(b.warn(pt[t]),ft[t]=!0)},"issueWarning"),mt=m(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&>("LAZY_LOAD_DEPRECATED")},"checkConfig"),yt=/<br\s*\/?>/gi,xt=m(t=>{if(!t)return[""];return Mt(t).replace(/\\n/g,"#br#").split("#br#")},"getRows"),bt=(()=>{let t=!1;return()=>{t||(kt(),t=!0)}})();function kt(){const t="data-temp-href-target";f.A.addHook("beforeSanitizeAttributes",e=>{e instanceof Element&&"A"===e.tagName&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),f.A.addHook("afterSanitizeAttributes",e=>{e instanceof Element&&"A"===e.tagName&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),"_blank"===e.getAttribute("target")&&e.setAttribute("rel","noopener"))})}m(kt,"setupDompurifyHooks");var Ct=m(t=>{bt();return f.A.sanitize(t)},"removeScript"),wt=m((t,e)=>{if(!1!==e.flowchart?.htmlLabels){const r=e.securityLevel;"antiscript"===r||"strict"===r?t=Ct(t):"loose"!==r&&(t=(t=(t=Mt(t)).replace(/</g,"<").replace(/>/g,">")).replace(/=/g,"="),t=Tt(t))}return t},"sanitizeMore"),_t=m((t,e)=>t?t=e.dompurifyConfig?f.A.sanitize(wt(t,e),e.dompurifyConfig).toString():f.A.sanitize(wt(t,e),{FORBID_TAGS:["style"]}).toString():t,"sanitizeText"),vt=m((t,e)=>"string"==typeof t?_t(t,e):t.flat().map(t=>_t(t,e)),"sanitizeTextOrArray"),St=m(t=>yt.test(t),"hasBreaks"),At=m(t=>t.split(yt),"splitBreaks"),Tt=m(t=>t.replace(/#br#/g,"<br/>"),"placeholderToBreak"),Mt=m(t=>t.replace(yt,"#br#"),"breakToPlaceholder"),Bt=m(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e},"getUrl"),Lt=m(t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase()),"evaluate"),Ft=m(function(...t){const e=t.filter(t=>!isNaN(t));return Math.max(...e)},"getMax"),$t=m(function(...t){const e=t.filter(t=>!isNaN(t));return Math.min(...e)},"getMin"),Et=m(function(t){const e=t.split(/(,)/),r=[];for(let n=0;n<e.length;n++){let t=e[n];if(","===t&&n>0&&n+1<e.length){const i=e[n-1],a=e[n+1];Nt(i,a)&&(t=i+","+a,n++,r.pop())}r.push(Ot(t))}return r.join("")},"parseGenericTypes"),Dt=m((t,e)=>Math.max(0,t.split(e).length-1),"countOccurrence"),Nt=m((t,e)=>{const r=Dt(t,"~"),n=Dt(e,"~");return 1===r&&1===n},"shouldCombineSets"),Ot=m(t=>{const e=Dt(t,"~");let r=!1;if(e<=1)return t;e%2!=0&&t.startsWith("~")&&(t=t.substring(1),r=!0);const n=[...t];let i=n.indexOf("~"),a=n.lastIndexOf("~");for(;-1!==i&&-1!==a&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),Rt=m(()=>void 0!==window.MathMLElement,"isMathMLSupported"),It=/\$\$(.*)\$\$/g,jt=m(t=>(t.match(It)?.length??0)>0,"hasKatex"),zt=m(async(t,e)=>{t=await Pt(t,e);const r=document.createElement("div");r.innerHTML=t,r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0";const n=document.querySelector("body");n?.insertAdjacentElement("beforeend",r);const i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),Pt=m(async(t,e)=>{if(!jt(t))return t;if(!(Rt()||e.legacyMathML||e.forceLegacyMathML))return t.replace(It,"MathML is unsupported in this environment.");{const{default:n}=await r.e(9402).then(r.bind(r,19402)),i=e.forceLegacyMathML||!Rt()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(yt).map(t=>jt(t)?`<div style="display: flex; align-items: center; justify-content: center; white-space: nowrap;">${t}</div>`:`<div>${t}</div>`).join("").replace(It,(t,e)=>n.renderToString(e,{throwOnError:!0,displayMode:!0,output:i}).replace(/\n/g," ").replace(/<annotation.*<\/annotation>/g,""))}},"renderKatex"),Kt={getRows:xt,sanitizeText:_t,sanitizeTextOrArray:vt,hasBreaks:St,splitBreaks:At,lineBreakRegex:yt,removeScript:Ct,getUrl:Bt,evaluate:Lt,getMax:Ft,getMin:$t},qt=m(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),Wt=m(function(t,e,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${e}px;`)):(n.set("height",t),n.set("width",e)),n},"calculateSvgSizeAttrs"),Ht=m(function(t,e,r,n){const i=Wt(e,r,n);qt(t,i)},"configureSvgSize"),Ut=m(function(t,e,r,n){const i=e.node().getBBox(),a=i.width,o=i.height;b.info(`SVG bounds: ${a}x${o}`,i);let s=0,l=0;b.info(`Graph bounds: ${s}x${l}`,t),s=a+2*r,l=o+2*r,b.info(`Calculated bounds: ${s}x${l}`),Ht(e,l,s,n);const c=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr("viewBox",c)},"setupGraphViewbox"),Yt={},Gt=m((t,e,r)=>{let n="";return t in Yt&&Yt[t]?n=Yt[t](r):b.warn(`No theme found for ${t}`),` & {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n fill: ${r.textColor}\n }\n @keyframes edge-animation-frame {\n from {\n stroke-dashoffset: 0;\n }\n }\n @keyframes dash {\n to {\n stroke-dashoffset: 0;\n }\n }\n & .edge-animation-slow {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 50s linear infinite;\n stroke-linecap: round;\n }\n & .edge-animation-fast {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 20s linear infinite;\n stroke-linecap: round;\n }\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${r.errorBkgColor};\n }\n & .error-text {\n fill: ${r.errorTextColor};\n stroke: ${r.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 1px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n & .edge-thickness-invisible {\n stroke-width: 0;\n fill: none;\n }\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${r.lineColor};\n stroke: ${r.lineColor};\n }\n & .marker.cross {\n stroke: ${r.lineColor};\n }\n\n & svg {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n }\n & p {\n margin: 0\n }\n\n ${n}\n\n ${e}\n`},"getStyles"),Vt=m((t,e)=>{void 0!==e&&(Yt[t]=e)},"addStylesForDiagram"),Zt=Gt,Xt={};y(Xt,{clear:()=>re,getAccDescription:()=>oe,getAccTitle:()=>ie,getDiagramTitle:()=>le,setAccDescription:()=>ae,setAccTitle:()=>ne,setDiagramTitle:()=>se});var Qt="",Jt="",te="",ee=m(t=>_t(t,ct()),"sanitizeText"),re=m(()=>{Qt="",te="",Jt=""},"clear"),ne=m(t=>{Qt=ee(t).replace(/^\s+/g,"")},"setAccTitle"),ie=m(()=>Qt,"getAccTitle"),ae=m(t=>{te=ee(t).replace(/\n\s+/g,"\n")},"setAccDescription"),oe=m(()=>te,"getAccDescription"),se=m(t=>{Jt=ee(t)},"setDiagramTitle"),le=m(()=>Jt,"getDiagramTitle"),ce=b,he=k,ue=ct,de=lt,pe=J,fe=m(t=>_t(t,ue()),"sanitizeText"),ge=Ut,me=m(()=>Xt,"getCommonDb"),ye={},xe=m((t,e,r)=>{ye[t]&&ce.warn(`Diagram with id ${t} already registered. Overwriting.`),ye[t]=e,r&&B(t,r),Vt(t,e.styles),e.injectUtils?.(ce,he,ue,fe,ge,me(),()=>{})},"registerDiagram"),be=m(t=>{if(t in ye)return ye[t];throw new ke(t)},"getDiagram"),ke=class extends Error{static{m(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}},28404:(t,e,r)=>{"use strict";r.d(e,{A:()=>st});const{entries:n,setPrototypeOf:i,isFrozen:a,getPrototypeOf:o,getOwnPropertyDescriptor:s}=Object;let{freeze:l,seal:c,create:h}=Object,{apply:u,construct:d}="undefined"!=typeof Reflect&&Reflect;l||(l=function(t){return t}),c||(c=function(t){return t}),u||(u=function(t,e,r){return t.apply(e,r)}),d||(d=function(t,e){return new t(...e)});const p=M(Array.prototype.forEach),f=M(Array.prototype.lastIndexOf),g=M(Array.prototype.pop),m=M(Array.prototype.push),y=M(Array.prototype.splice),x=M(String.prototype.toLowerCase),b=M(String.prototype.toString),k=M(String.prototype.match),C=M(String.prototype.replace),w=M(String.prototype.indexOf),_=M(String.prototype.trim),v=M(Object.prototype.hasOwnProperty),S=M(RegExp.prototype.test),A=(T=TypeError,function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return d(T,e)});var T;function M(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];return u(t,e,n)}}function B(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:x;i&&i(t,null);let n=e.length;for(;n--;){let i=e[n];if("string"==typeof i){const t=r(i);t!==i&&(a(e)||(e[n]=t),i=t)}t[i]=!0}return t}function L(t){for(let e=0;e<t.length;e++){v(t,e)||(t[e]=null)}return t}function F(t){const e=h(null);for(const[r,i]of n(t)){v(t,r)&&(Array.isArray(i)?e[r]=L(i):i&&"object"==typeof i&&i.constructor===Object?e[r]=F(i):e[r]=i)}return e}function $(t,e){for(;null!==t;){const r=s(t,e);if(r){if(r.get)return M(r.get);if("function"==typeof r.value)return M(r.value)}t=o(t)}return function(){return null}}const E=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),D=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),N=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),O=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),R=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),I=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),j=l(["#text"]),z=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),P=l(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),K=l(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),q=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),W=c(/\{\{[\w\W]*|[\w\W]*\}\}/gm),H=c(/<%[\w\W]*|[\w\W]*%>/gm),U=c(/\$\{[\w\W]*/gm),Y=c(/^data-[\-\w.\u00B7-\uFFFF]+$/),G=c(/^aria-[\-\w]+$/),V=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Z=c(/^(?:\w+script|data):/i),X=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Q=c(/^html$/i),J=c(/^[a-z][.\w]*(-[.\w]+)+$/i);var tt=Object.freeze({__proto__:null,ARIA_ATTR:G,ATTR_WHITESPACE:X,CUSTOM_ELEMENT:J,DATA_ATTR:Y,DOCTYPE_NAME:Q,ERB_EXPR:H,IS_ALLOWED_URI:V,IS_SCRIPT_OR_DATA:Z,MUSTACHE_EXPR:W,TMPLIT_EXPR:U});const et=1,rt=3,nt=7,it=8,at=9,ot=function(){return"undefined"==typeof window?null:window};var st=function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ot();const r=e=>t(e);if(r.version="3.2.6",r.removed=[],!e||!e.document||e.document.nodeType!==at||!e.Element)return r.isSupported=!1,r;let{document:i}=e;const a=i,o=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:c,Node:u,Element:d,NodeFilter:T,NamedNodeMap:M=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:L,DOMParser:W,trustedTypes:H}=e,U=d.prototype,Y=$(U,"cloneNode"),G=$(U,"remove"),Z=$(U,"nextSibling"),X=$(U,"childNodes"),J=$(U,"parentNode");if("function"==typeof c){const t=i.createElement("template");t.content&&t.content.ownerDocument&&(i=t.content.ownerDocument)}let st,lt="";const{implementation:ct,createNodeIterator:ht,createDocumentFragment:ut,getElementsByTagName:dt}=i,{importNode:pt}=a;let ft={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};r.isSupported="function"==typeof n&&"function"==typeof J&&ct&&void 0!==ct.createHTMLDocument;const{MUSTACHE_EXPR:gt,ERB_EXPR:mt,TMPLIT_EXPR:yt,DATA_ATTR:xt,ARIA_ATTR:bt,IS_SCRIPT_OR_DATA:kt,ATTR_WHITESPACE:Ct,CUSTOM_ELEMENT:wt}=tt;let{IS_ALLOWED_URI:_t}=tt,vt=null;const St=B({},[...E,...D,...N,...R,...j]);let At=null;const Tt=B({},[...z,...P,...K,...q]);let Mt=Object.seal(h(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Bt=null,Lt=null,Ft=!0,$t=!0,Et=!1,Dt=!0,Nt=!1,Ot=!0,Rt=!1,It=!1,jt=!1,zt=!1,Pt=!1,Kt=!1,qt=!0,Wt=!1,Ht=!0,Ut=!1,Yt={},Gt=null;const Vt=B({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Zt=null;const Xt=B({},["audio","video","img","source","image","track"]);let Qt=null;const Jt=B({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),te="http://www.w3.org/1998/Math/MathML",ee="http://www.w3.org/2000/svg",re="http://www.w3.org/1999/xhtml";let ne=re,ie=!1,ae=null;const oe=B({},[te,ee,re],b);let se=B({},["mi","mo","mn","ms","mtext"]),le=B({},["annotation-xml"]);const ce=B({},["title","style","font","a","script"]);let he=null;const ue=["application/xhtml+xml","text/html"];let de=null,pe=null;const fe=i.createElement("form"),ge=function(t){return t instanceof RegExp||t instanceof Function},me=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!pe||pe!==t){if(t&&"object"==typeof t||(t={}),t=F(t),he=-1===ue.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,de="application/xhtml+xml"===he?b:x,vt=v(t,"ALLOWED_TAGS")?B({},t.ALLOWED_TAGS,de):St,At=v(t,"ALLOWED_ATTR")?B({},t.ALLOWED_ATTR,de):Tt,ae=v(t,"ALLOWED_NAMESPACES")?B({},t.ALLOWED_NAMESPACES,b):oe,Qt=v(t,"ADD_URI_SAFE_ATTR")?B(F(Jt),t.ADD_URI_SAFE_ATTR,de):Jt,Zt=v(t,"ADD_DATA_URI_TAGS")?B(F(Xt),t.ADD_DATA_URI_TAGS,de):Xt,Gt=v(t,"FORBID_CONTENTS")?B({},t.FORBID_CONTENTS,de):Vt,Bt=v(t,"FORBID_TAGS")?B({},t.FORBID_TAGS,de):F({}),Lt=v(t,"FORBID_ATTR")?B({},t.FORBID_ATTR,de):F({}),Yt=!!v(t,"USE_PROFILES")&&t.USE_PROFILES,Ft=!1!==t.ALLOW_ARIA_ATTR,$t=!1!==t.ALLOW_DATA_ATTR,Et=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Dt=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Nt=t.SAFE_FOR_TEMPLATES||!1,Ot=!1!==t.SAFE_FOR_XML,Rt=t.WHOLE_DOCUMENT||!1,zt=t.RETURN_DOM||!1,Pt=t.RETURN_DOM_FRAGMENT||!1,Kt=t.RETURN_TRUSTED_TYPE||!1,jt=t.FORCE_BODY||!1,qt=!1!==t.SANITIZE_DOM,Wt=t.SANITIZE_NAMED_PROPS||!1,Ht=!1!==t.KEEP_CONTENT,Ut=t.IN_PLACE||!1,_t=t.ALLOWED_URI_REGEXP||V,ne=t.NAMESPACE||re,se=t.MATHML_TEXT_INTEGRATION_POINTS||se,le=t.HTML_INTEGRATION_POINTS||le,Mt=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ge(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Mt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ge(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Mt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Mt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Nt&&($t=!1),Pt&&(zt=!0),Yt&&(vt=B({},j),At=[],!0===Yt.html&&(B(vt,E),B(At,z)),!0===Yt.svg&&(B(vt,D),B(At,P),B(At,q)),!0===Yt.svgFilters&&(B(vt,N),B(At,P),B(At,q)),!0===Yt.mathMl&&(B(vt,R),B(At,K),B(At,q))),t.ADD_TAGS&&(vt===St&&(vt=F(vt)),B(vt,t.ADD_TAGS,de)),t.ADD_ATTR&&(At===Tt&&(At=F(At)),B(At,t.ADD_ATTR,de)),t.ADD_URI_SAFE_ATTR&&B(Qt,t.ADD_URI_SAFE_ATTR,de),t.FORBID_CONTENTS&&(Gt===Vt&&(Gt=F(Gt)),B(Gt,t.FORBID_CONTENTS,de)),Ht&&(vt["#text"]=!0),Rt&&B(vt,["html","head","body"]),vt.table&&(B(vt,["tbody"]),delete Bt.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');st=t.TRUSTED_TYPES_POLICY,lt=st.createHTML("")}else void 0===st&&(st=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let r=null;const n="data-tt-policy-suffix";e&&e.hasAttribute(n)&&(r=e.getAttribute(n));const i="dompurify"+(r?"#"+r:"");try{return t.createPolicy(i,{createHTML:t=>t,createScriptURL:t=>t})}catch(a){return console.warn("TrustedTypes policy "+i+" could not be created."),null}}(H,o)),null!==st&&"string"==typeof lt&&(lt=st.createHTML(""));l&&l(t),pe=t}},ye=B({},[...D,...N,...O]),xe=B({},[...R,...I]),be=function(t){m(r.removed,{element:t});try{J(t).removeChild(t)}catch(e){G(t)}},ke=function(t,e){try{m(r.removed,{attribute:e.getAttributeNode(t),from:e})}catch(n){m(r.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t)if(zt||Pt)try{be(e)}catch(n){}else try{e.setAttribute(t,"")}catch(n){}},Ce=function(t){let e=null,r=null;if(jt)t="<remove></remove>"+t;else{const e=k(t,/^[\r\n\t ]+/);r=e&&e[0]}"application/xhtml+xml"===he&&ne===re&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");const n=st?st.createHTML(t):t;if(ne===re)try{e=(new W).parseFromString(n,he)}catch(o){}if(!e||!e.documentElement){e=ct.createDocument(ne,"template",null);try{e.documentElement.innerHTML=ie?lt:n}catch(o){}}const a=e.body||e.documentElement;return t&&r&&a.insertBefore(i.createTextNode(r),a.childNodes[0]||null),ne===re?dt.call(e,Rt?"html":"body")[0]:Rt?e.documentElement:a},we=function(t){return ht.call(t.ownerDocument||t,t,T.SHOW_ELEMENT|T.SHOW_COMMENT|T.SHOW_TEXT|T.SHOW_PROCESSING_INSTRUCTION|T.SHOW_CDATA_SECTION,null)},_e=function(t){return t instanceof L&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof M)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},ve=function(t){return"function"==typeof u&&t instanceof u};function Se(t,e,n){p(t,t=>{t.call(r,e,n,pe)})}const Ae=function(t){let e=null;if(Se(ft.beforeSanitizeElements,t,null),_e(t))return be(t),!0;const n=de(t.nodeName);if(Se(ft.uponSanitizeElement,t,{tagName:n,allowedTags:vt}),Ot&&t.hasChildNodes()&&!ve(t.firstElementChild)&&S(/<[/\w!]/g,t.innerHTML)&&S(/<[/\w!]/g,t.textContent))return be(t),!0;if(t.nodeType===nt)return be(t),!0;if(Ot&&t.nodeType===it&&S(/<[/\w]/g,t.data))return be(t),!0;if(!vt[n]||Bt[n]){if(!Bt[n]&&Me(n)){if(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,n))return!1;if(Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(n))return!1}if(Ht&&!Gt[n]){const e=J(t)||t.parentNode,r=X(t)||t.childNodes;if(r&&e){for(let n=r.length-1;n>=0;--n){const i=Y(r[n],!0);i.__removalCount=(t.__removalCount||0)+1,e.insertBefore(i,Z(t))}}}return be(t),!0}return t instanceof d&&!function(t){let e=J(t);e&&e.tagName||(e={namespaceURI:ne,tagName:"template"});const r=x(t.tagName),n=x(e.tagName);return!!ae[t.namespaceURI]&&(t.namespaceURI===ee?e.namespaceURI===re?"svg"===r:e.namespaceURI===te?"svg"===r&&("annotation-xml"===n||se[n]):Boolean(ye[r]):t.namespaceURI===te?e.namespaceURI===re?"math"===r:e.namespaceURI===ee?"math"===r&&le[n]:Boolean(xe[r]):t.namespaceURI===re?!(e.namespaceURI===ee&&!le[n])&&!(e.namespaceURI===te&&!se[n])&&!xe[r]&&(ce[r]||!ye[r]):!("application/xhtml+xml"!==he||!ae[t.namespaceURI]))}(t)?(be(t),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!S(/<\/no(script|embed|frames)/i,t.innerHTML)?(Nt&&t.nodeType===rt&&(e=t.textContent,p([gt,mt,yt],t=>{e=C(e,t," ")}),t.textContent!==e&&(m(r.removed,{element:t.cloneNode()}),t.textContent=e)),Se(ft.afterSanitizeElements,t,null),!1):(be(t),!0)},Te=function(t,e,r){if(qt&&("id"===e||"name"===e)&&(r in i||r in fe))return!1;if($t&&!Lt[e]&&S(xt,e));else if(Ft&&S(bt,e));else if(!At[e]||Lt[e]){if(!(Me(t)&&(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,t)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(t))&&(Mt.attributeNameCheck instanceof RegExp&&S(Mt.attributeNameCheck,e)||Mt.attributeNameCheck instanceof Function&&Mt.attributeNameCheck(e))||"is"===e&&Mt.allowCustomizedBuiltInElements&&(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,r)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(r))))return!1}else if(Qt[e]);else if(S(_t,C(r,Ct,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==w(r,"data:")||!Zt[t]){if(Et&&!S(kt,C(r,Ct,"")));else if(r)return!1}else;return!0},Me=function(t){return"annotation-xml"!==t&&k(t,wt)},Be=function(t){Se(ft.beforeSanitizeAttributes,t,null);const{attributes:e}=t;if(!e||_e(t))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:At,forceKeepAttr:void 0};let i=e.length;for(;i--;){const o=e[i],{name:s,namespaceURI:l,value:c}=o,h=de(s),u=c;let d="value"===s?u:_(u);if(n.attrName=h,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,Se(ft.uponSanitizeAttribute,t,n),d=n.attrValue,!Wt||"id"!==h&&"name"!==h||(ke(s,t),d="user-content-"+d),Ot&&S(/((--!?|])>)|<\/(style|title)/i,d)){ke(s,t);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){ke(s,t);continue}if(!Dt&&S(/\/>/i,d)){ke(s,t);continue}Nt&&p([gt,mt,yt],t=>{d=C(d,t," ")});const f=de(t.nodeName);if(Te(f,h,d)){if(st&&"object"==typeof H&&"function"==typeof H.getAttributeType)if(l);else switch(H.getAttributeType(f,h)){case"TrustedHTML":d=st.createHTML(d);break;case"TrustedScriptURL":d=st.createScriptURL(d)}if(d!==u)try{l?t.setAttributeNS(l,s,d):t.setAttribute(s,d),_e(t)?be(t):g(r.removed)}catch(a){ke(s,t)}}else ke(s,t)}Se(ft.afterSanitizeAttributes,t,null)},Le=function t(e){let r=null;const n=we(e);for(Se(ft.beforeSanitizeShadowDOM,e,null);r=n.nextNode();)Se(ft.uponSanitizeShadowNode,r,null),Ae(r),Be(r),r.content instanceof s&&t(r.content);Se(ft.afterSanitizeShadowDOM,e,null)};return r.sanitize=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,i=null,o=null,l=null;if(ie=!t,ie&&(t="\x3c!--\x3e"),"string"!=typeof t&&!ve(t)){if("function"!=typeof t.toString)throw A("toString is not a function");if("string"!=typeof(t=t.toString()))throw A("dirty is not a string, aborting")}if(!r.isSupported)return t;if(It||me(e),r.removed=[],"string"==typeof t&&(Ut=!1),Ut){if(t.nodeName){const e=de(t.nodeName);if(!vt[e]||Bt[e])throw A("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof u)n=Ce("\x3c!----\x3e"),i=n.ownerDocument.importNode(t,!0),i.nodeType===et&&"BODY"===i.nodeName||"HTML"===i.nodeName?n=i:n.appendChild(i);else{if(!zt&&!Nt&&!Rt&&-1===t.indexOf("<"))return st&&Kt?st.createHTML(t):t;if(n=Ce(t),!n)return zt?null:Kt?lt:""}n&&jt&&be(n.firstChild);const c=we(Ut?t:n);for(;o=c.nextNode();)Ae(o),Be(o),o.content instanceof s&&Le(o.content);if(Ut)return t;if(zt){if(Pt)for(l=ut.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(At.shadowroot||At.shadowrootmode)&&(l=pt.call(a,l,!0)),l}let h=Rt?n.outerHTML:n.innerHTML;return Rt&&vt["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&S(Q,n.ownerDocument.doctype.name)&&(h="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+h),Nt&&p([gt,mt,yt],t=>{h=C(h,t," ")}),st&&Kt?st.createHTML(h):h},r.setConfig=function(){me(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),It=!0},r.clearConfig=function(){pe=null,It=!1},r.isValidAttribute=function(t,e,r){pe||me({});const n=de(t),i=de(e);return Te(n,i,r)},r.addHook=function(t,e){"function"==typeof e&&m(ft[t],e)},r.removeHook=function(t,e){if(void 0!==e){const r=f(ft[t],e);return-1===r?void 0:y(ft[t],r,1)[0]}return g(ft[t])},r.removeHooks=function(t){ft[t]=[]},r.removeAllHooks=function(){ft={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},r}()},30150:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t,e){return function(r){return t(e(r))}}},30226:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=Function.prototype.toString;const i=function(t){if(null!=t){try{return n.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},30256:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(53443),i=r(57454);const a=(0,n.A)(i.A,"Set")},30726:(t,e,r)=>{"use strict";function n(t,e,r){if(t&&t.length){const[n,i]=e,a=Math.PI/180*r,o=Math.cos(a),s=Math.sin(a);for(const e of t){const[t,r]=e;e[0]=(t-n)*o-(r-i)*s+n,e[1]=(t-n)*s+(r-i)*o+i}}}function i(t,e){return t[0]===e[0]&&t[1]===e[1]}function a(t,e,r,a=1){const o=r,s=Math.max(e,.1),l=t[0]&&t[0][0]&&"number"==typeof t[0][0]?[t]:t,c=[0,0];if(o)for(const i of l)n(i,c,o);const h=function(t,e,r){const n=[];for(const h of t){const t=[...h];i(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&n.push(t)}const a=[];e=Math.max(e,.1);const o=[];for(const i of n)for(let t=0;t<i.length-1;t++){const e=i[t],r=i[t+1];if(e[1]!==r[1]){const t=Math.min(e[1],r[1]);o.push({ymin:t,ymax:Math.max(e[1],r[1]),x:t===e[1]?e[0]:r[0],islope:(r[0]-e[0])/(r[1]-e[1])})}}if(o.sort((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax)),!o.length)return a;let s=[],l=o[0].ymin,c=0;for(;s.length||o.length;){if(o.length){let t=-1;for(let e=0;e<o.length&&!(o[e].ymin>l);e++)t=e;o.splice(0,t+1).forEach(t=>{s.push({s:l,edge:t})})}if(s=s.filter(t=>!(t.edge.ymax<=l)),s.sort((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x)),(1!==r||c%e==0)&&s.length>1)for(let t=0;t<s.length;t+=2){const e=t+1;if(e>=s.length)break;const r=s[t].edge,n=s[e].edge;a.push([[Math.round(r.x),l],[Math.round(n.x),l]])}l+=r,s.forEach(t=>{t.edge.x=t.edge.x+r*t.edge.islope}),c++}return a}(l,s,a);if(o){for(const t of l)n(t,c,-o);!function(t,e,r){const i=[];t.forEach(t=>i.push(...t)),n(i,e,r)}(h,c,-o)}return h}function o(t,e){var r;const n=e.hachureAngle+90;let i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.round(Math.max(i,.1));let o=1;return e.roughness>=1&&((null===(r=e.randomizer)||void 0===r?void 0:r.next())||Math.random())>.7&&(o=i),a(t,i,n,o||1)}r.d(e,{A:()=>it});class s{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const r=o(t,e);return{type:"fillSketch",ops:this.renderLines(r,e)}}renderLines(t,e){const r=[];for(const n of t)r.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return r}}function l(t){const e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}class c extends s{fillPolygons(t,e){let r=e.hachureGap;r<0&&(r=4*e.strokeWidth),r=Math.max(r,.1);const n=o(t,Object.assign({},e,{hachureGap:r})),i=Math.PI/180*e.hachureAngle,a=[],s=.5*r*Math.cos(i),c=.5*r*Math.sin(i);for(const[o,h]of n)l([o,h])&&a.push([[o[0]-s,o[1]+c],[...h]],[[o[0]+s,o[1]-c],[...h]]);return{type:"fillSketch",ops:this.renderLines(a,e)}}}class h extends s{fillPolygons(t,e){const r=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),i=this._fillPolygons(t,n);return r.ops=r.ops.concat(i.ops),r}}class u{constructor(t){this.helper=t}fillPolygons(t,e){const r=o(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(r,e)}dotsOnLines(t,e){const r=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let i=e.fillWeight;i<0&&(i=e.strokeWidth/2);const a=n/4;for(const o of t){const t=l(o),s=t/n,c=Math.ceil(s)-1,h=t-c*n,u=(o[0][0]+o[1][0])/2-n/4,d=Math.min(o[0][1],o[1][1]);for(let o=0;o<c;o++){const t=d+h+o*n,s=u-a+2*Math.random()*a,l=t-a+2*Math.random()*a,c=this.helper.ellipse(s,l,i,i,e);r.push(...c.ops)}}return{type:"fillSketch",ops:r}}}class d{constructor(t){this.helper=t}fillPolygons(t,e){const r=o(t,e);return{type:"fillSketch",ops:this.dashedLine(r,e)}}dashedLine(t,e){const r=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,n=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,i=[];return t.forEach(t=>{const a=l(t),o=Math.floor(a/(r+n)),s=(a+n-o*(r+n))/2;let c=t[0],h=t[1];c[0]>h[0]&&(c=t[1],h=t[0]);const u=Math.atan((h[1]-c[1])/(h[0]-c[0]));for(let l=0;l<o;l++){const t=l*(r+n),a=t+r,o=[c[0]+t*Math.cos(u)+s*Math.cos(u),c[1]+t*Math.sin(u)+s*Math.sin(u)],h=[c[0]+a*Math.cos(u)+s*Math.cos(u),c[1]+a*Math.sin(u)+s*Math.sin(u)];i.push(...this.helper.doubleLineOps(o[0],o[1],h[0],h[1],e))}}),i}}class p{constructor(t){this.helper=t}fillPolygons(t,e){const r=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,n=e.zigzagOffset<0?r:e.zigzagOffset,i=o(t,e=Object.assign({},e,{hachureGap:r+n}));return{type:"fillSketch",ops:this.zigzagLines(i,n,e)}}zigzagLines(t,e,r){const n=[];return t.forEach(t=>{const i=l(t),a=Math.round(i/(2*e));let o=t[0],s=t[1];o[0]>s[0]&&(o=t[1],s=t[0]);const c=Math.atan((s[1]-o[1])/(s[0]-o[0]));for(let l=0;l<a;l++){const t=2*l*e,i=2*(l+1)*e,a=Math.sqrt(2*Math.pow(e,2)),s=[o[0]+t*Math.cos(c),o[1]+t*Math.sin(c)],h=[o[0]+i*Math.cos(c),o[1]+i*Math.sin(c)],u=[s[0]+a*Math.cos(c+Math.PI/4),s[1]+a*Math.sin(c+Math.PI/4)];n.push(...this.helper.doubleLineOps(s[0],s[1],u[0],u[1],r),...this.helper.doubleLineOps(u[0],u[1],h[0],h[1],r))}}),n}}const f={};class g{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const m={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function y(t,e){return t.type===e}function x(t){const e=[],r=function(t){const e=new Array;for(;""!==t;)if(t.match(/^([ \t\r\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:0,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:1,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:2,text:""},e}(t);let n="BOD",i=0,a=r[i];for(;!y(a,2);){let o=0;const s=[];if("BOD"===n){if("M"!==a.text&&"m"!==a.text)return x("M0,0"+t);i++,o=m[a.text],n=a.text}else y(a,1)?o=m[n]:(i++,o=m[a.text],n=a.text);if(!(i+o<r.length))throw new Error("Path data ended short");for(let t=i;t<i+o;t++){const e=r[t];if(!y(e,1))throw new Error("Param not a number: "+n+","+e.text);s[s.length]=+e.text}if("number"!=typeof m[n])throw new Error("Bad segment: "+n);{const t={key:n,data:s};e.push(t),i+=o,a=r[i],"M"===n&&(n="L"),"m"===n&&(n="l")}}return e}function b(t){let e=0,r=0,n=0,i=0;const a=[];for(const{key:o,data:s}of t)switch(o){case"M":a.push({key:"M",data:[...s]}),[e,r]=s,[n,i]=s;break;case"m":e+=s[0],r+=s[1],a.push({key:"M",data:[e,r]}),n=e,i=r;break;case"L":a.push({key:"L",data:[...s]}),[e,r]=s;break;case"l":e+=s[0],r+=s[1],a.push({key:"L",data:[e,r]});break;case"C":a.push({key:"C",data:[...s]}),e=s[4],r=s[5];break;case"c":{const t=s.map((t,n)=>n%2?t+r:t+e);a.push({key:"C",data:t}),e=t[4],r=t[5];break}case"Q":a.push({key:"Q",data:[...s]}),e=s[2],r=s[3];break;case"q":{const t=s.map((t,n)=>n%2?t+r:t+e);a.push({key:"Q",data:t}),e=t[2],r=t[3];break}case"A":a.push({key:"A",data:[...s]}),e=s[5],r=s[6];break;case"a":e+=s[5],r+=s[6],a.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],e,r]});break;case"H":a.push({key:"H",data:[...s]}),e=s[0];break;case"h":e+=s[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...s]}),r=s[0];break;case"v":r+=s[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...s]}),e=s[2],r=s[3];break;case"s":{const t=s.map((t,n)=>n%2?t+r:t+e);a.push({key:"S",data:t}),e=t[2],r=t[3];break}case"T":a.push({key:"T",data:[...s]}),e=s[0],r=s[1];break;case"t":e+=s[0],r+=s[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=n,r=i}return a}function k(t){const e=[];let r="",n=0,i=0,a=0,o=0,s=0,l=0;for(const{key:c,data:h}of t){switch(c){case"M":e.push({key:"M",data:[...h]}),[n,i]=h,[a,o]=h;break;case"C":e.push({key:"C",data:[...h]}),n=h[4],i=h[5],s=h[2],l=h[3];break;case"L":e.push({key:"L",data:[...h]}),[n,i]=h;break;case"H":n=h[0],e.push({key:"L",data:[n,i]});break;case"V":i=h[0],e.push({key:"L",data:[n,i]});break;case"S":{let t=0,a=0;"C"===r||"S"===r?(t=n+(n-s),a=i+(i-l)):(t=n,a=i),e.push({key:"C",data:[t,a,...h]}),s=h[0],l=h[1],n=h[2],i=h[3];break}case"T":{const[t,a]=h;let o=0,c=0;"Q"===r||"T"===r?(o=n+(n-s),c=i+(i-l)):(o=n,c=i);const u=n+2*(o-n)/3,d=i+2*(c-i)/3,p=t+2*(o-t)/3,f=a+2*(c-a)/3;e.push({key:"C",data:[u,d,p,f,t,a]}),s=o,l=c,n=t,i=a;break}case"Q":{const[t,r,a,o]=h,c=n+2*(t-n)/3,u=i+2*(r-i)/3,d=a+2*(t-a)/3,p=o+2*(r-o)/3;e.push({key:"C",data:[c,u,d,p,a,o]}),s=t,l=r,n=a,i=o;break}case"A":{const t=Math.abs(h[0]),r=Math.abs(h[1]),a=h[2],o=h[3],s=h[4],l=h[5],c=h[6];0===t||0===r?(e.push({key:"C",data:[n,i,l,c,l,c]}),n=l,i=c):n===l&&i===c||(w(n,i,l,c,t,r,a,o,s).forEach(function(t){e.push({key:"C",data:t})}),n=l,i=c);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=o}r=c}return e}function C(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function w(t,e,r,n,i,a,o,s,l,c){const h=(u=o,Math.PI*u/180);var u;let d=[],p=0,f=0,g=0,m=0;if(c)[p,f,g,m]=c;else{[t,e]=C(t,e,-h),[r,n]=C(r,n,-h);const o=(t-r)/2,c=(e-n)/2;let u=o*o/(i*i)+c*c/(a*a);u>1&&(u=Math.sqrt(u),i*=u,a*=u);const d=i*i,y=a*a,x=d*y-d*c*c-y*o*o,b=d*c*c+y*o*o,k=(s===l?-1:1)*Math.sqrt(Math.abs(x/b));g=k*i*c/a+(t+r)/2,m=k*-a*o/i+(e+n)/2,p=Math.asin(parseFloat(((e-m)/a).toFixed(9))),f=Math.asin(parseFloat(((n-m)/a).toFixed(9))),t<g&&(p=Math.PI-p),r<g&&(f=Math.PI-f),p<0&&(p=2*Math.PI+p),f<0&&(f=2*Math.PI+f),l&&p>f&&(p-=2*Math.PI),!l&&f>p&&(f-=2*Math.PI)}let y=f-p;if(Math.abs(y)>120*Math.PI/180){const t=f,e=r,s=n;f=l&&f>p?p+120*Math.PI/180*1:p+120*Math.PI/180*-1,d=w(r=g+i*Math.cos(f),n=m+a*Math.sin(f),e,s,i,a,o,0,l,[f,t,g,m])}y=f-p;const x=Math.cos(p),b=Math.sin(p),k=Math.cos(f),_=Math.sin(f),v=Math.tan(y/4),S=4/3*i*v,A=4/3*a*v,T=[t,e],M=[t+S*b,e-A*x],B=[r+S*_,n-A*k],L=[r,n];if(M[0]=2*T[0]-M[0],M[1]=2*T[1]-M[1],c)return[M,B,L].concat(d);{d=[M,B,L].concat(d);const t=[];for(let e=0;e<d.length;e+=3){const r=C(d[e][0],d[e][1],h),n=C(d[e+1][0],d[e+1][1],h),i=C(d[e+2][0],d[e+2][1],h);t.push([r[0],r[1],n[0],n[1],i[0],i[1]])}return t}}const _={randOffset:function(t,e){return O(t,e)},randOffsetWithRange:function(t,e,r){return N(t,e,r)},ellipse:function(t,e,r,n,i){return M(t,e,i,T(r,n,i)).opset},doubleLineOps:function(t,e,r,n,i){return R(t,e,r,n,i,!0)}};function v(t,e,r,n,i){return{type:"path",ops:R(t,e,r,n,i)}}function S(t,e,r){const n=(t||[]).length;if(n>2){const i=[];for(let e=0;e<n-1;e++)i.push(...R(t[e][0],t[e][1],t[e+1][0],t[e+1][1],r));return e&&i.push(...R(t[n-1][0],t[n-1][1],t[0][0],t[0][1],r)),{type:"path",ops:i}}return 2===n?v(t[0][0],t[0][1],t[1][0],t[1][1],r):{type:"path",ops:[]}}function A(t,e){if(t.length){const r="number"==typeof t[0][0]?[t]:t,n=j(r[0],1*(1+.2*e.roughness),e),i=e.disableMultiStroke?[]:j(r[0],1.5*(1+.22*e.roughness),E(e));for(let t=1;t<r.length;t++){const a=r[t];if(a.length){const t=j(a,1*(1+.2*e.roughness),e),r=e.disableMultiStroke?[]:j(a,1.5*(1+.22*e.roughness),E(e));for(const e of t)"move"!==e.op&&n.push(e);for(const e of r)"move"!==e.op&&i.push(e)}}return{type:"path",ops:n.concat(i)}}return{type:"path",ops:[]}}function T(t,e,r){const n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),i=Math.ceil(Math.max(r.curveStepCount,r.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/i;let o=Math.abs(t/2),s=Math.abs(e/2);const l=1-r.curveFitting;return o+=O(o*l,r),s+=O(s*l,r),{increment:a,rx:o,ry:s}}function M(t,e,r,n){const[i,a]=P(n.increment,t,e,n.rx,n.ry,1,n.increment*N(.1,N(.4,1,r),r),r);let o=z(i,null,r);if(!r.disableMultiStroke&&0!==r.roughness){const[i]=P(n.increment,t,e,n.rx,n.ry,1.5,0,r),a=z(i,null,r);o=o.concat(a)}return{estimatedPoints:a,opset:{type:"path",ops:o}}}function B(t,e,r,n,i,a,o,s,l){const c=t,h=e;let u=Math.abs(r/2),d=Math.abs(n/2);u+=O(.01*u,l),d+=O(.01*d,l);let p=i,f=a;for(;p<0;)p+=2*Math.PI,f+=2*Math.PI;f-p>2*Math.PI&&(p=0,f=2*Math.PI);const g=2*Math.PI/l.curveStepCount,m=Math.min(g/2,(f-p)/2),y=K(m,c,h,u,d,p,f,1,l);if(!l.disableMultiStroke){const t=K(m,c,h,u,d,p,f,1.5,l);y.push(...t)}return o&&(s?y.push(...R(c,h,c+u*Math.cos(p),h+d*Math.sin(p),l),...R(c,h,c+u*Math.cos(f),h+d*Math.sin(f),l)):y.push({op:"lineTo",data:[c,h]},{op:"lineTo",data:[c+u*Math.cos(p),h+d*Math.sin(p)]})),{type:"path",ops:y}}function L(t,e){const r=k(b(x(t))),n=[];let i=[0,0],a=[0,0];for(const{key:o,data:s}of r)switch(o){case"M":a=[s[0],s[1]],i=[s[0],s[1]];break;case"L":n.push(...R(a[0],a[1],s[0],s[1],e)),a=[s[0],s[1]];break;case"C":{const[t,r,i,o,l,c]=s;n.push(...q(t,r,i,o,l,c,a,e)),a=[l,c];break}case"Z":n.push(...R(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function F(t,e){const r=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,i=n.length;if(i>2){r.push({op:"move",data:[n[0][0]+O(t,e),n[0][1]+O(t,e)]});for(let a=1;a<i;a++)r.push({op:"lineTo",data:[n[a][0]+O(t,e),n[a][1]+O(t,e)]})}}return{type:"fillPath",ops:r}}function $(t,e){return function(t,e){let r=t.fillStyle||"hachure";if(!f[r])switch(r){case"zigzag":f[r]||(f[r]=new c(e));break;case"cross-hatch":f[r]||(f[r]=new h(e));break;case"dots":f[r]||(f[r]=new u(e));break;case"dashed":f[r]||(f[r]=new d(e));break;case"zigzag-line":f[r]||(f[r]=new p(e));break;default:r="hachure",f[r]||(f[r]=new s(e))}return f[r]}(e,_).fillPolygons(t,e)}function E(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function D(t){return t.randomizer||(t.randomizer=new g(t.seed||0)),t.randomizer.next()}function N(t,e,r,n=1){return r.roughness*n*(D(r)*(e-t)+t)}function O(t,e,r=1){return N(-t,t,e,r)}function R(t,e,r,n,i,a=!1){const o=a?i.disableMultiStrokeFill:i.disableMultiStroke,s=I(t,e,r,n,i,!0,!1);if(o)return s;const l=I(t,e,r,n,i,!0,!0);return s.concat(l)}function I(t,e,r,n,i,a,o){const s=Math.pow(t-r,2)+Math.pow(e-n,2),l=Math.sqrt(s);let c=1;c=l<200?1:l>500?.4:-.0016668*l+1.233334;let h=i.maxRandomnessOffset||0;h*h*100>s&&(h=l/10);const u=h/2,d=.2+.2*D(i);let p=i.bowing*i.maxRandomnessOffset*(n-e)/200,f=i.bowing*i.maxRandomnessOffset*(t-r)/200;p=O(p,i,c),f=O(f,i,c);const g=[],m=()=>O(u,i,c),y=()=>O(h,i,c),x=i.preserveVertices;return a&&(o?g.push({op:"move",data:[t+(x?0:m()),e+(x?0:m())]}):g.push({op:"move",data:[t+(x?0:O(h,i,c)),e+(x?0:O(h,i,c))]})),o?g.push({op:"bcurveTo",data:[p+t+(r-t)*d+m(),f+e+(n-e)*d+m(),p+t+2*(r-t)*d+m(),f+e+2*(n-e)*d+m(),r+(x?0:m()),n+(x?0:m())]}):g.push({op:"bcurveTo",data:[p+t+(r-t)*d+y(),f+e+(n-e)*d+y(),p+t+2*(r-t)*d+y(),f+e+2*(n-e)*d+y(),r+(x?0:y()),n+(x?0:y())]}),g}function j(t,e,r){if(!t.length)return[];const n=[];n.push([t[0][0]+O(e,r),t[0][1]+O(e,r)]),n.push([t[0][0]+O(e,r),t[0][1]+O(e,r)]);for(let i=1;i<t.length;i++)n.push([t[i][0]+O(e,r),t[i][1]+O(e,r)]),i===t.length-1&&n.push([t[i][0]+O(e,r),t[i][1]+O(e,r)]);return z(n,null,r)}function z(t,e,r){const n=t.length,i=[];if(n>3){const a=[],o=1-r.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let e=1;e+2<n;e++){const r=t[e];a[0]=[r[0],r[1]],a[1]=[r[0]+(o*t[e+1][0]-o*t[e-1][0])/6,r[1]+(o*t[e+1][1]-o*t[e-1][1])/6],a[2]=[t[e+1][0]+(o*t[e][0]-o*t[e+2][0])/6,t[e+1][1]+(o*t[e][1]-o*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],i.push({op:"bcurveTo",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){const t=r.maxRandomnessOffset;i.push({op:"lineTo",data:[e[0]+O(t,r),e[1]+O(t,r)]})}}else 3===n?(i.push({op:"move",data:[t[1][0],t[1][1]]}),i.push({op:"bcurveTo",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===n&&i.push(...I(t[0][0],t[0][1],t[1][0],t[1][1],r,!0,!0));return i}function P(t,e,r,n,i,a,o,s){const l=[],c=[];if(0===s.roughness){t/=4,c.push([e+n*Math.cos(-t),r+i*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){const t=[e+n*Math.cos(a),r+i*Math.sin(a)];l.push(t),c.push(t)}c.push([e+n*Math.cos(0),r+i*Math.sin(0)]),c.push([e+n*Math.cos(t),r+i*Math.sin(t)])}else{const h=O(.5,s)-Math.PI/2;c.push([O(a,s)+e+.9*n*Math.cos(h-t),O(a,s)+r+.9*i*Math.sin(h-t)]);const u=2*Math.PI+h-.01;for(let o=h;o<u;o+=t){const t=[O(a,s)+e+n*Math.cos(o),O(a,s)+r+i*Math.sin(o)];l.push(t),c.push(t)}c.push([O(a,s)+e+n*Math.cos(h+2*Math.PI+.5*o),O(a,s)+r+i*Math.sin(h+2*Math.PI+.5*o)]),c.push([O(a,s)+e+.98*n*Math.cos(h+o),O(a,s)+r+.98*i*Math.sin(h+o)]),c.push([O(a,s)+e+.9*n*Math.cos(h+.5*o),O(a,s)+r+.9*i*Math.sin(h+.5*o)])}return[c,l]}function K(t,e,r,n,i,a,o,s,l){const c=a+O(.1,l),h=[];h.push([O(s,l)+e+.9*n*Math.cos(c-t),O(s,l)+r+.9*i*Math.sin(c-t)]);for(let u=c;u<=o;u+=t)h.push([O(s,l)+e+n*Math.cos(u),O(s,l)+r+i*Math.sin(u)]);return h.push([e+n*Math.cos(o),r+i*Math.sin(o)]),h.push([e+n*Math.cos(o),r+i*Math.sin(o)]),z(h,null,l)}function q(t,e,r,n,i,a,o,s){const l=[],c=[s.maxRandomnessOffset||1,(s.maxRandomnessOffset||1)+.3];let h=[0,0];const u=s.disableMultiStroke?1:2,d=s.preserveVertices;for(let p=0;p<u;p++)0===p?l.push({op:"move",data:[o[0],o[1]]}):l.push({op:"move",data:[o[0]+(d?0:O(c[0],s)),o[1]+(d?0:O(c[0],s))]}),h=d?[i,a]:[i+O(c[p],s),a+O(c[p],s)],l.push({op:"bcurveTo",data:[t+O(c[p],s),e+O(c[p],s),r+O(c[p],s),n+O(c[p],s),h[0],h[1]]});return l}function W(t){return[...t]}function H(t,e=0){const r=t.length;if(r<3)throw new Error("A curve must have at least three points.");const n=[];if(3===r)n.push(W(t[0]),W(t[1]),W(t[2]),W(t[2]));else{const r=[];r.push(t[0],t[0]);for(let e=1;e<t.length;e++)r.push(t[e]),e===t.length-1&&r.push(t[e]);const i=[],a=1-e;n.push(W(r[0]));for(let t=1;t+2<r.length;t++){const e=r[t];i[0]=[e[0],e[1]],i[1]=[e[0]+(a*r[t+1][0]-a*r[t-1][0])/6,e[1]+(a*r[t+1][1]-a*r[t-1][1])/6],i[2]=[r[t+1][0]+(a*r[t][0]-a*r[t+2][0])/6,r[t+1][1]+(a*r[t][1]-a*r[t+2][1])/6],i[3]=[r[t+1][0],r[t+1][1]],n.push(i[1],i[2],i[3])}}return n}function U(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function Y(t,e,r){const n=U(e,r);if(0===n)return U(t,e);let i=((t[0]-e[0])*(r[0]-e[0])+(t[1]-e[1])*(r[1]-e[1]))/n;return i=Math.max(0,Math.min(1,i)),U(t,G(e,r,i))}function G(t,e,r){return[t[0]+(e[0]-t[0])*r,t[1]+(e[1]-t[1])*r]}function V(t,e,r,n){const i=n||[];if(function(t,e){const r=t[e+0],n=t[e+1],i=t[e+2],a=t[e+3];let o=3*n[0]-2*r[0]-a[0];o*=o;let s=3*n[1]-2*r[1]-a[1];s*=s;let l=3*i[0]-2*a[0]-r[0];l*=l;let c=3*i[1]-2*a[1]-r[1];return c*=c,o<l&&(o=l),s<c&&(s=c),o+s}(t,e)<r){const r=t[e+0];i.length?(a=i[i.length-1],o=r,Math.sqrt(U(a,o))>1&&i.push(r)):i.push(r),i.push(t[e+3])}else{const n=.5,a=t[e+0],o=t[e+1],s=t[e+2],l=t[e+3],c=G(a,o,n),h=G(o,s,n),u=G(s,l,n),d=G(c,h,n),p=G(h,u,n),f=G(d,p,n);V([a,c,d,f],0,r,i),V([f,p,u,l],0,r,i)}var a,o;return i}function Z(t,e){return X(t,0,t.length,e)}function X(t,e,r,n,i){const a=i||[],o=t[e],s=t[r-1];let l=0,c=1;for(let h=e+1;h<r-1;++h){const e=Y(t[h],o,s);e>l&&(l=e,c=h)}return Math.sqrt(l)>n?(X(t,e,c+1,n,a),X(t,c,r,n,a)):(a.length||a.push(o),a.push(s)),a}function Q(t,e=.15,r){const n=[],i=(t.length-1)/3;for(let a=0;a<i;a++)V(t,3*a,e,n);return r&&r>0?X(n,0,n.length,r):n}const J="none";class tt{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,r){return{shape:t,sets:e||[],options:r||this.defaultOptions}}line(t,e,r,n,i){const a=this._o(i);return this._d("line",[v(t,e,r,n,a)],a)}rectangle(t,e,r,n,i){const a=this._o(i),o=[],s=function(t,e,r,n,i){return function(t,e){return S(t,!0,e)}([[t,e],[t+r,e],[t+r,e+n],[t,e+n]],i)}(t,e,r,n,a);if(a.fill){const i=[[t,e],[t+r,e],[t+r,e+n],[t,e+n]];"solid"===a.fillStyle?o.push(F([i],a)):o.push($([i],a))}return a.stroke!==J&&o.push(s),this._d("rectangle",o,a)}ellipse(t,e,r,n,i){const a=this._o(i),o=[],s=T(r,n,a),l=M(t,e,a,s);if(a.fill)if("solid"===a.fillStyle){const r=M(t,e,a,s).opset;r.type="fillPath",o.push(r)}else o.push($([l.estimatedPoints],a));return a.stroke!==J&&o.push(l.opset),this._d("ellipse",o,a)}circle(t,e,r,n){const i=this.ellipse(t,e,r,r,n);return i.shape="circle",i}linearPath(t,e){const r=this._o(e);return this._d("linearPath",[S(t,!1,r)],r)}arc(t,e,r,n,i,a,o=!1,s){const l=this._o(s),c=[],h=B(t,e,r,n,i,a,o,!0,l);if(o&&l.fill)if("solid"===l.fillStyle){const o=Object.assign({},l);o.disableMultiStroke=!0;const s=B(t,e,r,n,i,a,!0,!1,o);s.type="fillPath",c.push(s)}else c.push(function(t,e,r,n,i,a,o){const s=t,l=e;let c=Math.abs(r/2),h=Math.abs(n/2);c+=O(.01*c,o),h+=O(.01*h,o);let u=i,d=a;for(;u<0;)u+=2*Math.PI,d+=2*Math.PI;d-u>2*Math.PI&&(u=0,d=2*Math.PI);const p=(d-u)/o.curveStepCount,f=[];for(let g=u;g<=d;g+=p)f.push([s+c*Math.cos(g),l+h*Math.sin(g)]);return f.push([s+c*Math.cos(d),l+h*Math.sin(d)]),f.push([s,l]),$([f],o)}(t,e,r,n,i,a,l));return l.stroke!==J&&c.push(h),this._d("arc",c,l)}curve(t,e){const r=this._o(e),n=[],i=A(t,r);if(r.fill&&r.fill!==J)if("solid"===r.fillStyle){const e=A(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else{const e=[],i=t;if(i.length){const t="number"==typeof i[0][0]?[i]:i;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Q(H([n[0],n[0],n[1],n[2]]),10,(1+r.roughness)/2)):e.push(...Q(H(n),10,(1+r.roughness)/2))}e.length&&n.push($([e],r))}return r.stroke!==J&&n.push(i),this._d("curve",n,r)}polygon(t,e){const r=this._o(e),n=[],i=S(t,!0,r);return r.fill&&("solid"===r.fillStyle?n.push(F([t],r)):n.push($([t],r))),r.stroke!==J&&n.push(i),this._d("polygon",n,r)}path(t,e){const r=this._o(e),n=[];if(!t)return this._d("path",n,r);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");const i=r.fill&&"transparent"!==r.fill&&r.fill!==J,a=r.stroke!==J,o=!!(r.simplification&&r.simplification<1),s=function(t,e,r){const n=k(b(x(t))),i=[];let a=[],o=[0,0],s=[];const l=()=>{s.length>=4&&a.push(...Q(s,1)),s=[]},c=()=>{l(),a.length&&(i.push(a),a=[])};for(const{key:u,data:d}of n)switch(u){case"M":c(),o=[d[0],d[1]],a.push(o);break;case"L":l(),a.push([d[0],d[1]]);break;case"C":if(!s.length){const t=a.length?a[a.length-1]:o;s.push([t[0],t[1]])}s.push([d[0],d[1]]),s.push([d[2],d[3]]),s.push([d[4],d[5]]);break;case"Z":l(),a.push([o[0],o[1]])}if(c(),!r)return i;const h=[];for(const u of i){const t=Z(u,r);t.length&&h.push(t)}return h}(t,0,o?4-4*(r.simplification||1):(1+r.roughness)/2),l=L(t,r);if(i)if("solid"===r.fillStyle)if(1===s.length){const e=L(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else n.push(F(s,r));else n.push($(s,r));return a&&(o?s.forEach(t=>{n.push(S(t,!1,r))}):n.push(l)),this._d("path",n,r)}opsToPath(t,e){let r="";for(const n of t.ops){const t="number"==typeof e&&e>=0?n.data.map(t=>+t.toFixed(e)):n.data;switch(n.op){case"move":r+=`M${t[0]} ${t[1]} `;break;case"bcurveTo":r+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case"lineTo":r+=`L${t[0]} ${t[1]} `}}return r.trim()}toPaths(t){const e=t.sets||[],r=t.options||this.defaultOptions,n=[];for(const i of e){let t=null;switch(i.type){case"path":t={d:this.opsToPath(i),stroke:r.stroke,strokeWidth:r.strokeWidth,fill:J};break;case"fillPath":t={d:this.opsToPath(i),stroke:J,strokeWidth:0,fill:r.fill||J};break;case"fillSketch":t=this.fillSketch(i,r)}t&&n.push(t)}return n}fillSketch(t,e){let r=e.fillWeight;return r<0&&(r=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||J,strokeWidth:r,fill:J}}_mergedShape(t){return t.filter((t,e)=>0===e||"move"!==t.op)}}class et{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new tt(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),n=this.ctx,i=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case"path":n.save(),n.strokeStyle="none"===r.stroke?"transparent":r.stroke,n.lineWidth=r.strokeWidth,r.strokeLineDash&&n.setLineDash(r.strokeLineDash),r.strokeLineDashOffset&&(n.lineDashOffset=r.strokeLineDashOffset),this._drawToContext(n,a,i),n.restore();break;case"fillPath":{n.save(),n.fillStyle=r.fill||"";const e="curve"===t.shape||"polygon"===t.shape||"path"===t.shape?"evenodd":"nonzero";this._drawToContext(n,a,i,e),n.restore();break}case"fillSketch":this.fillSketch(n,a,r)}}fillSketch(t,e,r){let n=r.fillWeight;n<0&&(n=r.strokeWidth/2),t.save(),r.fillLineDash&&t.setLineDash(r.fillLineDash),r.fillLineDashOffset&&(t.lineDashOffset=r.fillLineDashOffset),t.strokeStyle=r.fill||"",t.lineWidth=n,this._drawToContext(t,e,r.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,r,n="nonzero"){t.beginPath();for(const i of e.ops){const e="number"==typeof r&&r>=0?i.data.map(t=>+t.toFixed(r)):i.data;switch(i.op){case"move":t.moveTo(e[0],e[1]);break;case"bcurveTo":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case"lineTo":t.lineTo(e[0],e[1])}}"fillPath"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,r,n,i){const a=this.gen.line(t,e,r,n,i);return this.draw(a),a}rectangle(t,e,r,n,i){const a=this.gen.rectangle(t,e,r,n,i);return this.draw(a),a}ellipse(t,e,r,n,i){const a=this.gen.ellipse(t,e,r,n,i);return this.draw(a),a}circle(t,e,r,n){const i=this.gen.circle(t,e,r,n);return this.draw(i),i}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r),r}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r),r}arc(t,e,r,n,i,a,o=!1,s){const l=this.gen.arc(t,e,r,n,i,a,o,s);return this.draw(l),l}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r),r}path(t,e){const r=this.gen.path(t,e);return this.draw(r),r}}const rt="http://www.w3.org/2000/svg";class nt{constructor(t,e){this.svg=t,this.gen=new tt(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,i=n.createElementNS(rt,"g"),a=t.options.fixedDecimalPlaceDigits;for(const o of e){let e=null;switch(o.type){case"path":e=n.createElementNS(rt,"path"),e.setAttribute("d",this.opsToPath(o,a)),e.setAttribute("stroke",r.stroke),e.setAttribute("stroke-width",r.strokeWidth+""),e.setAttribute("fill","none"),r.strokeLineDash&&e.setAttribute("stroke-dasharray",r.strokeLineDash.join(" ").trim()),r.strokeLineDashOffset&&e.setAttribute("stroke-dashoffset",`${r.strokeLineDashOffset}`);break;case"fillPath":e=n.createElementNS(rt,"path"),e.setAttribute("d",this.opsToPath(o,a)),e.setAttribute("stroke","none"),e.setAttribute("stroke-width","0"),e.setAttribute("fill",r.fill||""),"curve"!==t.shape&&"polygon"!==t.shape||e.setAttribute("fill-rule","evenodd");break;case"fillSketch":e=this.fillSketch(n,o,r)}e&&i.appendChild(e)}return i}fillSketch(t,e,r){let n=r.fillWeight;n<0&&(n=r.strokeWidth/2);const i=t.createElementNS(rt,"path");return i.setAttribute("d",this.opsToPath(e,r.fixedDecimalPlaceDigits)),i.setAttribute("stroke",r.fill||""),i.setAttribute("stroke-width",n+""),i.setAttribute("fill","none"),r.fillLineDash&&i.setAttribute("stroke-dasharray",r.fillLineDash.join(" ").trim()),r.fillLineDashOffset&&i.setAttribute("stroke-dashoffset",`${r.fillLineDashOffset}`),i}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,r,n,i){const a=this.gen.line(t,e,r,n,i);return this.draw(a)}rectangle(t,e,r,n,i){const a=this.gen.rectangle(t,e,r,n,i);return this.draw(a)}ellipse(t,e,r,n,i){const a=this.gen.ellipse(t,e,r,n,i);return this.draw(a)}circle(t,e,r,n){const i=this.gen.circle(t,e,r,n);return this.draw(i)}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r)}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r)}arc(t,e,r,n,i,a,o=!1,s){const l=this.gen.arc(t,e,r,n,i,a,o,s);return this.draw(l)}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r)}path(t,e){const r=this.gen.path(t,e);return this.draw(r)}}var it={canvas:(t,e)=>new et(t,e),svg:(t,e)=>new nt(t,e),generator:t=>new tt(t),newSeed:()=>tt.newSeed()}},30941:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var n=r(46554),i=r(68676),a=r(55385),o=r(21763);const s=(t,e,r=0,s=1)=>{if("number"!=typeof t)return(0,o.A)(t,{a:e});const l=i.A.set({r:n.A.channel.clamp.r(t),g:n.A.channel.clamp.g(e),b:n.A.channel.clamp.b(r),a:n.A.channel.clamp.a(s)});return a.A.stringify(l)}},31408:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=/^(?:0|[1-9]\d*)$/;const i=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&n.test(t))&&t>-1&&t%1==0&&t<e}},33998:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(42849),i=r(97427);const a=function(t){return(0,i.A)(t)&&(0,n.A)(t)}},34713:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var n=r(56117),i=r(71398),a=r(22470);const o=function(t,e){return(0,a.A)((0,i.A)(t,e,n.A),t+"")}},34809:(t,e)=>{function r(t){let e,r=[];for(let n of t.split(",").map(t=>t.trim()))if(/^-?\d+$/.test(n))r.push(parseInt(n,10));else if(e=n.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[t,n,i,a]=e;if(n&&a){n=parseInt(n),a=parseInt(a);const t=n<a?1:-1;"-"!==i&&".."!==i&&"\u2025"!==i||(a+=t);for(let e=n;e!==a;e+=t)r.push(e)}}return r}e.default=r,t.exports=r},35745:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=r(90372);const i=function(t,e,r){"__proto__"==e&&n.A?(0,n.A)(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},36711:(t,e,r)=>{"use strict";r.d(e,{A:()=>y});r(36672);var n=r(13526),i=r(50120),a=r(19521),o=r(23420);function s(){return(0,o.jsx)(i.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,o.jsx)(i.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,o.jsx)(a.A,{children:(0,o.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function h(){return(0,o.jsx)(i.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function u(){return(0,o.jsx)(i.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}var d=r(40987),p=r(7674);function f({className:t}){return(0,o.jsx)(p.A,{type:"caution",title:(0,o.jsx)(h,{}),className:(0,n.A)(t,d.G.common.draftBanner),children:(0,o.jsx)(u,{})})}function g({className:t}){return(0,o.jsx)(p.A,{type:"caution",title:(0,o.jsx)(s,{}),className:(0,n.A)(t,d.G.common.unlistedBanner),children:(0,o.jsx)(l,{})})}function m(t){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(c,{}),(0,o.jsx)(g,{...t})]})}function y({metadata:t}){const{unlisted:e,frontMatter:r}=t;return(0,o.jsxs)(o.Fragment,{children:[(e||r.unlisted)&&(0,o.jsx)(m,{}),r.draft&&(0,o.jsx)(f,{})]})}},38819:(t,e,r)=>{"use strict";r.d(e,{Y:()=>i,Z:()=>a});var n=r(46554);const i={};for(let o=0;o<=255;o++)i[o]=n.A.unit.dec2hex(o);const a={ALL:0,RGB:1,HSL:2}},39448:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=r(9634);const i=function(t,e){var r=e?(0,n.A)(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}},39458:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=Object.prototype;const i=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},41407:(t,e,r)=>{"use strict";e.J=void 0;var n=r(70370);function i(t){return t.replace(n.ctrlCharactersRegex,"").replace(n.htmlEntitiesRegex,function(t,e){return String.fromCharCode(e)})}function a(t){try{return decodeURIComponent(t)}catch(e){return t}}e.J=function(t){if(!t)return n.BLANK_URL;var e,r=a(t.trim());do{e=(r=a(r=i(r).replace(n.htmlCtrlEntityRegex,"").replace(n.ctrlCharactersRegex,"").replace(n.whitespaceEscapeCharsRegex,"").trim())).match(n.ctrlCharactersRegex)||r.match(n.htmlEntitiesRegex)||r.match(n.htmlCtrlEntityRegex)||r.match(n.whitespaceEscapeCharsRegex)}while(e&&e.length>0);var o=r;if(!o)return n.BLANK_URL;if(function(t){return n.relativeFirstCharacters.indexOf(t[0])>-1}(o))return o;var s=o.trimStart(),l=s.match(n.urlSchemeRegex);if(!l)return o;var c=l[0].toLowerCase().trim();if(n.invalidProtocolRegex.test(c))return n.BLANK_URL;var h=s.replace(/\\/g,"/");if("mailto:"===c||c.includes("://"))return h;if("http:"===c||"https:"===c){if(!function(t){return URL.canParse(t)}(h))return n.BLANK_URL;var u=new URL(h);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return h}},41863:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(80565),i=r(49084);const a=function(t){if(!(0,i.A)(t))return!1;var e=(0,n.A)(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},42849:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(41863),i=r(47227);const a=function(t){return null!=t&&(0,i.A)(t.length)&&!(0,n.A)(t)}},43545:(t,e,r)=>{"use strict";r.d(e,{R:()=>s});var n=r(27293),i={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:4};function a(t,e){if(void 0===t||void 0===e)return{angle:0,deltaX:0,deltaY:0};t=o(t),e=o(e);const[r,n]=[t.x,t.y],[i,a]=[e.x,e.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}(0,n.K2)(a,"calculateDeltaAndAngle");var o=(0,n.K2)(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),s=(0,n.K2)(t=>({x:(0,n.K2)(function(e,r,n){let s=0;const l=o(n[0]).x<o(n[n.length-1]).x?"left":"right";if(0===r&&Object.hasOwn(i,t.arrowTypeStart)){const{angle:e,deltaX:r}=a(n[0],n[1]);s=i[t.arrowTypeStart]*Math.cos(e)*(r>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(i,t.arrowTypeEnd)){const{angle:e,deltaX:r}=a(n[n.length-1],n[n.length-2]);s=i[t.arrowTypeEnd]*Math.cos(e)*(r>=0?1:-1)}const c=Math.abs(o(e).x-o(n[n.length-1]).x),h=Math.abs(o(e).y-o(n[n.length-1]).y),u=Math.abs(o(e).x-o(n[0]).x),d=Math.abs(o(e).y-o(n[0]).y),p=i[t.arrowTypeStart],f=i[t.arrowTypeEnd];if(c<f&&c>0&&h<f){let t=f+1-c;t*="right"===l?-1:1,s-=t}if(u<p&&u>0&&d<p){let t=p+1-u;t*="right"===l?-1:1,s+=t}return o(e).x+s},"x"),y:(0,n.K2)(function(e,r,n){let s=0;const l=o(n[0]).y<o(n[n.length-1]).y?"down":"up";if(0===r&&Object.hasOwn(i,t.arrowTypeStart)){const{angle:e,deltaY:r}=a(n[0],n[1]);s=i[t.arrowTypeStart]*Math.abs(Math.sin(e))*(r>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(i,t.arrowTypeEnd)){const{angle:e,deltaY:r}=a(n[n.length-1],n[n.length-2]);s=i[t.arrowTypeEnd]*Math.abs(Math.sin(e))*(r>=0?1:-1)}const c=Math.abs(o(e).y-o(n[n.length-1]).y),h=Math.abs(o(e).x-o(n[n.length-1]).x),u=Math.abs(o(e).y-o(n[0]).y),d=Math.abs(o(e).x-o(n[0]).x),p=i[t.arrowTypeStart],f=i[t.arrowTypeEnd];if(c<f&&c>0&&h<f){let t=f+1-c;t*="up"===l?-1:1,s-=t}if(u<p&&u>0&&d<p){let t=p+1-u;t*="up"===l?-1:1,s+=t}return o(e).y+s},"y")}),"getLineFunctionsWithOffset")},44254:(t,e,r)=>{"use strict";r.d(e,{A:()=>_});var n=r(53443),i=r(57454);const a=(0,n.A)(i.A,"DataView");var o=r(86986);const s=(0,n.A)(i.A,"Promise");var l=r(30256);const c=(0,n.A)(i.A,"WeakMap");var h=r(80565),u=r(30226),d="[object Map]",p="[object Promise]",f="[object Set]",g="[object WeakMap]",m="[object DataView]",y=(0,u.A)(a),x=(0,u.A)(o.A),b=(0,u.A)(s),k=(0,u.A)(l.A),C=(0,u.A)(c),w=h.A;(a&&w(new a(new ArrayBuffer(1)))!=m||o.A&&w(new o.A)!=d||s&&w(s.resolve())!=p||l.A&&w(new l.A)!=f||c&&w(new c)!=g)&&(w=function(t){var e=(0,h.A)(t),r="[object Object]"==e?t.constructor:void 0,n=r?(0,u.A)(r):"";if(n)switch(n){case y:return m;case x:return d;case b:return p;case k:return f;case C:return g}return e});const _=w},45786:(t,e,r)=>{"use strict";r.d(e,{A:()=>_});const n=(0,r(53443).A)(Object,"create");const i=function(){this.__data__=n?n(null):{},this.size=0};const a=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var o=Object.prototype.hasOwnProperty;const s=function(t){var e=this.__data__;if(n){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(e,t)?e[t]:void 0};var l=Object.prototype.hasOwnProperty;const c=function(t){var e=this.__data__;return n?void 0!==e[t]:l.call(e,t)};const h=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?"__lodash_hash_undefined__":e,this};function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=i,u.prototype.delete=a,u.prototype.get=s,u.prototype.has=c,u.prototype.set=h;const d=u;var p=r(89732),f=r(86986);const g=function(){this.size=0,this.__data__={hash:new d,map:new(f.A||p.A),string:new d}};const m=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};const y=function(t,e){var r=t.__data__;return m(e)?r["string"==typeof e?"string":"hash"]:r.map};const x=function(t){var e=y(this,t).delete(t);return this.size-=e?1:0,e};const b=function(t){return y(this,t).get(t)};const k=function(t){return y(this,t).has(t)};const C=function(t,e){var r=y(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this};function w(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}w.prototype.clear=g,w.prototype.delete=x,w.prototype.get=b,w.prototype.has=k,w.prototype.set=C;const _=w},46554:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const n={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t),hsl2rgb:({h:t,s:e,l:r},i)=>{if(!e)return 2.55*r;t/=360,e/=100;const a=(r/=100)<.5?r*(1+e):r+e-r*e,o=2*r-a;switch(i){case"r":return 255*n.hue2rgb(o,a,t+1/3);case"g":return 255*n.hue2rgb(o,a,t);case"b":return 255*n.hue2rgb(o,a,t-1/3)}},rgb2hsl:({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;const i=Math.max(t,e,r),a=Math.min(t,e,r),o=(i+a)/2;if("l"===n)return 100*o;if(i===a)return 0;const s=i-a;if("s"===n)return 100*(o>.5?s/(2-i-a):s/(i+a));switch(i){case t:return 60*((e-r)/s+(e<r?6:0));case e:return 60*((r-t)/s+2);case r:return 60*((t-e)/s+4);default:return-1}}},i={channel:n,lang:{clamp:(t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},47227:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},47794:(t,e,r)=>{"use strict";r.d(e,{$C:()=>T,$t:()=>q,C4:()=>H,I5:()=>K,Ib:()=>g,KL:()=>G,Sm:()=>U,Un:()=>N,_K:()=>W,bH:()=>$,dq:()=>z,pe:()=>l,rY:()=>Y,ru:()=>D,sM:()=>S,vU:()=>p,yT:()=>B});var n=r(27293),i=r(41407),a=r(61274),o=r(4003),s=r(75856),l="\u200b",c={curveBasis:a.qrM,curveBasisClosed:a.Yu4,curveBasisOpen:a.IA3,curveBumpX:a.Wi0,curveBumpY:a.PGM,curveBundle:a.OEq,curveCardinalClosed:a.olC,curveCardinalOpen:a.IrU,curveCardinal:a.y8u,curveCatmullRomClosed:a.Q7f,curveCatmullRomOpen:a.cVp,curveCatmullRom:a.oDi,curveLinear:a.lUB,curveLinearClosed:a.Lx9,curveMonotoneX:a.nVG,curveMonotoneY:a.uxU,curveNatural:a.Xf2,curveStep:a.GZz,curveStepAfter:a.UPb,curveStepBefore:a.dyv},h=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,u=(0,n.K2)(function(t,e){const r=d(t,/(?:init\b)|(?:initialize\b)/);let i={};if(Array.isArray(r)){const t=r.map(t=>t.args);(0,n.$i)(t),i=(0,n.hH)(i,[...t])}else i=r.args;if(!i)return;let a=(0,n.Ch)(t,e);const o="config";return void 0!==i[o]&&("flowchart-v2"===a&&(a="flowchart"),i[a]=i[o],delete i[o]),i},"detectInit"),d=(0,n.K2)(function(t,e=null){try{const r=new RegExp(`[%]{2}(?![{]${h.source})(?=[}][%]{2}).*\n`,"ig");let i;t=t.trim().replace(r,"").replace(/'/gm,'"'),n.Rm.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const a=[];for(;null!==(i=n.DB.exec(t));)if(i.index===n.DB.lastIndex&&n.DB.lastIndex++,i&&!e||e&&i[1]?.match(e)||e&&i[2]?.match(e)){const t=i[1]?i[1]:i[2],e=i[3]?i[3].trim():i[4]?JSON.parse(i[4].trim()):null;a.push({type:t,args:e})}return 0===a.length?{type:t,args:null}:1===a.length?a[0]:a}catch(r){return n.Rm.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),p=(0,n.K2)(function(t){return t.replace(n.DB,"")},"removeDirectives"),f=(0,n.K2)(function(t,e){for(const[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray");function g(t,e){if(!t)return e;const r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return c[r]??e}function m(t,e){const r=t.trim();if(r)return"loose"!==e.securityLevel?(0,i.J)(r):r}(0,n.K2)(g,"interpolateToCurve"),(0,n.K2)(m,"formatUrl");var y=(0,n.K2)((t,...e)=>{const r=t.split("."),i=r.length-1,a=r[i];let o=window;for(let s=0;s<i;s++)if(o=o[r[s]],!o)return void n.Rm.error(`Function name: ${t} not found in window`);o[a](...e)},"runFunc");function x(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0}function b(t){let e,r=0;t.forEach(t=>{r+=x(t,e),e=t});return w(t,r/2)}function k(t){return 1===t.length?t[0]:b(t)}(0,n.K2)(x,"distance"),(0,n.K2)(b,"traverseEdge"),(0,n.K2)(k,"calcLabelPosition");var C=(0,n.K2)((t,e=2)=>{const r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),w=(0,n.K2)((t,e)=>{let r,n=e;for(const i of t){if(r){const t=x(i,r);if(0===t)return r;if(t<n)n-=t;else{const e=n/t;if(e<=0)return r;if(e>=1)return{x:i.x,y:i.y};if(e>0&&e<1)return{x:C((1-e)*r.x+e*i.x,5),y:C((1-e)*r.y+e*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),_=(0,n.K2)((t,e,r)=>{n.Rm.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());const i=w(e,25),a=t?10:5,o=Math.atan2(e[0].y-i.y,e[0].x-i.x),s={x:0,y:0};return s.x=Math.sin(o)*a+(e[0].x+i.x)/2,s.y=-Math.cos(o)*a+(e[0].y+i.y)/2,s},"calcCardinalityPosition");function v(t,e,r){const i=structuredClone(r);n.Rm.info("our points",i),"start_left"!==e&&"start_right"!==e&&i.reverse();const a=w(i,25+t),o=10+.5*t,s=Math.atan2(i[0].y-a.y,i[0].x-a.x),l={x:0,y:0};return"start_left"===e?(l.x=Math.sin(s+Math.PI)*o+(i[0].x+a.x)/2,l.y=-Math.cos(s+Math.PI)*o+(i[0].y+a.y)/2):"end_right"===e?(l.x=Math.sin(s-Math.PI)*o+(i[0].x+a.x)/2-5,l.y=-Math.cos(s-Math.PI)*o+(i[0].y+a.y)/2-5):"end_left"===e?(l.x=Math.sin(s)*o+(i[0].x+a.x)/2-5,l.y=-Math.cos(s)*o+(i[0].y+a.y)/2-5):(l.x=Math.sin(s)*o+(i[0].x+a.x)/2,l.y=-Math.cos(s)*o+(i[0].y+a.y)/2),l}function S(t){let e="",r="";for(const n of t)void 0!==n&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":e=e+n+";");return{style:e,labelStyle:r}}(0,n.K2)(v,"calcTerminalLabelPosition"),(0,n.K2)(S,"getStylesFromArray");var A=0,T=(0,n.K2)(()=>(A++,"id-"+Math.random().toString(36).substr(2,12)+"-"+A),"generateId");function M(t){let e="";const r="0123456789abcdef";for(let n=0;n<t;n++)e+=r.charAt(Math.floor(16*Math.random()));return e}(0,n.K2)(M,"makeRandomHex");var B=(0,n.K2)(t=>M(t.length),"random"),L=(0,n.K2)(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),F=(0,n.K2)(function(t,e){const r=e.text.replace(n.Y2.lineBreakRegex," "),[,i]=K(e.fontSize),a=t.append("text");a.attr("x",e.x),a.attr("y",e.y),a.style("text-anchor",e.anchor),a.style("font-family",e.fontFamily),a.style("font-size",i),a.style("font-weight",e.fontWeight),a.attr("fill",e.fill),void 0!==e.class&&a.attr("class",e.class);const o=a.append("tspan");return o.attr("x",e.x+2*e.textMargin),o.attr("fill",e.fill),o.text(r),a},"drawSimpleText"),$=(0,o.A)((t,e,r)=>{if(!t)return t;if(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"<br/>"},r),n.Y2.lineBreakRegex.test(t))return t;const i=t.split(" ").filter(Boolean),a=[];let o="";return i.forEach((t,n)=>{const s=N(`${t} `,r),l=N(o,r);if(s>e){const{hyphenatedStrings:n,remainingWord:i}=E(t,e,"-",r);a.push(o,...n),o=i}else l+s>=e?(a.push(o),o=t):o=[o,t].filter(Boolean).join(" ");n+1===i.length&&a.push(o)}),a.filter(t=>""!==t).join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),E=(0,o.A)((t,e,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);const i=[...t],a=[];let o="";return i.forEach((t,s)=>{const l=`${o}${t}`;if(N(l,n)>=e){const t=s+1,e=i.length===t,n=`${l}${r}`;a.push(e?l:n),o=""}else o=l}),{hyphenatedStrings:a,remainingWord:o}},(t,e,r="-",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);function D(t,e){return R(t,e).height}function N(t,e){return R(t,e).width}(0,n.K2)(D,"calculateTextHeight"),(0,n.K2)(N,"calculateTextWidth");var O,R=(0,o.A)((t,e)=>{const{fontSize:r=12,fontFamily:i="Arial",fontWeight:o=400}=e;if(!t)return{width:0,height:0};const[,s]=K(r),c=["sans-serif",i],h=t.split(n.Y2.lineBreakRegex),u=[],d=(0,a.Ltv)("body");if(!d.remove)return{width:0,height:0,lineHeight:0};const p=d.append("svg");for(const n of c){let t=0;const e={width:0,height:0,lineHeight:0};for(const r of h){const i=L();i.text=r||l;const a=F(p,i).style("font-size",s).style("font-weight",o).style("font-family",n),c=(a._groups||a)[0][0].getBBox();if(0===c.width&&0===c.height)throw new Error("svg element not in render tree");e.width=Math.round(Math.max(e.width,c.width)),t=Math.round(c.height),e.height+=t,e.lineHeight=Math.round(Math.max(e.lineHeight,t))}u.push(e)}p.remove();return u[isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),I=class{constructor(t=!1,e){this.count=0,this.count=e?e.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{(0,n.K2)(this,"InitIDGenerator")}},j=(0,n.K2)(function(t){return O=O||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),O.innerHTML=t,unescape(O.textContent)},"entityDecode");function z(t){return"str"in t}(0,n.K2)(z,"isDetailedError");var P=(0,n.K2)((t,e,r,n)=>{if(!n)return;const i=t.node()?.getBBox();i&&t.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",e)},"insertTitle"),K=(0,n.K2)(t=>{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");function q(t,e){return(0,s.A)({},t,e)}(0,n.K2)(q,"cleanAndMerge");var W={assignWithDepth:n.hH,wrapLabel:$,calculateTextHeight:D,calculateTextWidth:N,calculateTextDimensions:R,cleanAndMerge:q,detectInit:u,detectDirective:d,isSubstringInArray:f,interpolateToCurve:g,calcLabelPosition:k,calcCardinalityPosition:_,calcTerminalLabelPosition:v,formatUrl:m,getStylesFromArray:S,generateId:T,random:B,runFunc:y,entityDecode:j,insertTitle:P,parseFontSize:K,InitIDGenerator:I},H=(0,n.K2)(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)}),e=e.replace(/#\w+;/g,function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"\ufb02\xb0\xb0"+e+"\xb6\xdf":"\ufb02\xb0"+e+"\xb6\xdf"}),e},"encodeEntities"),U=(0,n.K2)(function(t){return t.replace(/\ufb02\xb0\xb0/g,"&#").replace(/\ufb02\xb0/g,"&").replace(/\xb6\xdf/g,";")},"decodeEntities"),Y=(0,n.K2)((t,e,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${t}_${e}_${r}${i?`_${i}`:""}`,"getEdgeId");function G(t){return t??null}(0,n.K2)(G,"handleUndefinedAttr")},47848:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(34713),i=r(16599);const a=function(t){return(0,n.A)(function(e,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,s=a>2?r[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&(0,i.A)(r[0],r[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++n<a;){var l=r[n];l&&t(e,l,n,o)}return e})}},48203:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t){return function(){return t}}},49084:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},53443:(t,e,r)=>{"use strict";r.d(e,{A:()=>x});var n=r(41863);const i=r(57454).A["__core-js_shared__"];var a,o=(a=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";const s=function(t){return!!o&&o in t};var l=r(49084),c=r(30226),h=/^\[object .+?Constructor\]$/,u=Function.prototype,d=Object.prototype,p=u.toString,f=d.hasOwnProperty,g=RegExp("^"+p.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const m=function(t){return!(!(0,l.A)(t)||s(t))&&((0,n.A)(t)?g:h).test((0,c.A)(t))};const y=function(t,e){return null==t?void 0:t[e]};const x=function(t,e){var r=y(t,e);return m(r)?r:void 0}},55385:(t,e,r)=>{"use strict";r.d(e,{A:()=>g});var n=r(68676),i=r(38819);const a={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(a.re);if(!e)return;const r=e[1],i=parseInt(r,16),o=r.length,s=o%4==0,l=o>4,c=l?1:17,h=l?8:4,u=s?0:-1,d=l?255:15;return n.A.set({r:(i>>h*(u+3)&d)*c,g:(i>>h*(u+2)&d)*c,b:(i>>h*(u+1)&d)*c,a:s?(i&d)*c/255:1},t)},stringify:t=>{const{r:e,g:r,b:n,a:a}=t;return a<1?`#${i.Y[Math.round(e)]}${i.Y[Math.round(r)]}${i.Y[Math.round(n)]}${i.Y[Math.round(255*a)]}`:`#${i.Y[Math.round(e)]}${i.Y[Math.round(r)]}${i.Y[Math.round(n)]}`}},o=a;var s=r(46554);const l={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(l.hueRe);if(e){const[,t,r]=e;switch(r){case"grad":return s.A.channel.clamp.h(.9*parseFloat(t));case"rad":return s.A.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return s.A.channel.clamp.h(360*parseFloat(t))}}return s.A.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const r=t.match(l.re);if(!r)return;const[,i,a,o,c,h]=r;return n.A.set({h:l._hue2deg(i),s:s.A.channel.clamp.s(parseFloat(a)),l:s.A.channel.clamp.l(parseFloat(o)),a:c?s.A.channel.clamp.a(h?parseFloat(c)/100:parseFloat(c)):1},t)},stringify:t=>{const{h:e,s:r,l:n,a:i}=t;return i<1?`hsla(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(n)}%, ${i})`:`hsl(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(n)}%)`}},c=l,h={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=h.colors[t];if(e)return o.parse(e)},stringify:t=>{const e=o.stringify(t);for(const r in h.colors)if(h.colors[r]===e)return r}},u=h,d={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const r=t.match(d.re);if(!r)return;const[,i,a,o,l,c,h,u,p]=r;return n.A.set({r:s.A.channel.clamp.r(a?2.55*parseFloat(i):parseFloat(i)),g:s.A.channel.clamp.g(l?2.55*parseFloat(o):parseFloat(o)),b:s.A.channel.clamp.b(h?2.55*parseFloat(c):parseFloat(c)),a:u?s.A.channel.clamp.a(p?parseFloat(u)/100:parseFloat(u)):1},t)},stringify:t=>{const{r:e,g:r,b:n,a:i}=t;return i<1?`rgba(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(n)}, ${s.A.lang.round(i)})`:`rgb(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(n)})`}},p=d,f={format:{keyword:h,hex:o,rgb:d,rgba:d,hsl:l,hsla:l},parse:t=>{if("string"!=typeof t)return t;const e=o.parse(t)||p.parse(t)||c.parse(t)||u.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(i.Z.HSL)||void 0===t.data.r?c.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?p.stringify(t):o.stringify(t)},g=f},55842:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=r(57454).A.Symbol},56117:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t){return t}},56267:(t,e,r)=>{"use strict";r.d(e,{A:()=>c});var n=r(80565),i=r(97427);const a=function(t){return(0,i.A)(t)&&"[object Arguments]"==(0,n.A)(t)};var o=Object.prototype,s=o.hasOwnProperty,l=o.propertyIsEnumerable;const c=a(function(){return arguments}())?a:function(t){return(0,i.A)(t)&&s.call(t,"callee")&&!l.call(t,"callee")}},56287:function(t){t.exports=function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",a="minute",o="hour",s="day",l="week",c="month",h="quarter",u="year",d="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],r=t%100;return"["+t+(e[(r-20)%10]||e[r]||e[0])+"]"}},y=function(t,e,r){var n=String(t);return!n||n.length>=e?t:""+Array(e+1-n.length).join(r)+t},x={s:y,z:function(t){var e=-t.utcOffset(),r=Math.abs(e),n=Math.floor(r/60),i=r%60;return(e<=0?"+":"-")+y(n,2,"0")+":"+y(i,2,"0")},m:function t(e,r){if(e.date()<r.date())return-t(r,e);var n=12*(r.year()-e.year())+(r.month()-e.month()),i=e.clone().add(n,c),a=r-i<0,o=e.clone().add(n+(a?-1:1),c);return+(-(n+(r-i)/(a?i-o:o-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:u,w:l,d:s,D:d,h:o,m:a,s:i,ms:n,Q:h}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},b="en",k={};k[b]=m;var C="$isDayjsObject",w=function(t){return t instanceof A||!(!t||!t[C])},_=function t(e,r,n){var i;if(!e)return b;if("string"==typeof e){var a=e.toLowerCase();k[a]&&(i=a),r&&(k[a]=r,i=a);var o=e.split("-");if(!i&&o.length>1)return t(o[0])}else{var s=e.name;k[s]=e,i=s}return!n&&i&&(b=i),i||!n&&b},v=function(t,e){if(w(t))return t.clone();var r="object"==typeof e?e:{};return r.date=t,r.args=arguments,new A(r)},S=x;S.l=_,S.i=w,S.w=function(t,e){return v(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var A=function(){function m(t){this.$L=_(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[C]=!0}var y=m.prototype;return y.parse=function(t){this.$d=function(t){var e=t.date,r=t.utc;if(null===e)return new Date(NaN);if(S.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var n=e.match(f);if(n){var i=n[2]-1||0,a=(n[7]||"0").substring(0,3);return r?new Date(Date.UTC(n[1],i,n[3]||1,n[4]||0,n[5]||0,n[6]||0,a)):new Date(n[1],i,n[3]||1,n[4]||0,n[5]||0,n[6]||0,a)}}return new Date(e)}(t),this.init()},y.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},y.$utils=function(){return S},y.isValid=function(){return!(this.$d.toString()===p)},y.isSame=function(t,e){var r=v(t);return this.startOf(e)<=r&&r<=this.endOf(e)},y.isAfter=function(t,e){return v(t)<this.startOf(e)},y.isBefore=function(t,e){return this.endOf(e)<v(t)},y.$g=function(t,e,r){return S.u(t)?this[e]:this.set(r,t)},y.unix=function(){return Math.floor(this.valueOf()/1e3)},y.valueOf=function(){return this.$d.getTime()},y.startOf=function(t,e){var r=this,n=!!S.u(e)||e,h=S.p(t),p=function(t,e){var i=S.w(r.$u?Date.UTC(r.$y,e,t):new Date(r.$y,e,t),r);return n?i:i.endOf(s)},f=function(t,e){return S.w(r.toDate()[t].apply(r.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(e)),r)},g=this.$W,m=this.$M,y=this.$D,x="set"+(this.$u?"UTC":"");switch(h){case u:return n?p(1,0):p(31,11);case c:return n?p(1,m):p(0,m+1);case l:var b=this.$locale().weekStart||0,k=(g<b?g+7:g)-b;return p(n?y-k:y+(6-k),m);case s:case d:return f(x+"Hours",0);case o:return f(x+"Minutes",1);case a:return f(x+"Seconds",2);case i:return f(x+"Milliseconds",3);default:return this.clone()}},y.endOf=function(t){return this.startOf(t,!1)},y.$set=function(t,e){var r,l=S.p(t),h="set"+(this.$u?"UTC":""),p=(r={},r[s]=h+"Date",r[d]=h+"Date",r[c]=h+"Month",r[u]=h+"FullYear",r[o]=h+"Hours",r[a]=h+"Minutes",r[i]=h+"Seconds",r[n]=h+"Milliseconds",r)[l],f=l===s?this.$D+(e-this.$W):e;if(l===c||l===u){var g=this.clone().set(d,1);g.$d[p](f),g.init(),this.$d=g.set(d,Math.min(this.$D,g.daysInMonth())).$d}else p&&this.$d[p](f);return this.init(),this},y.set=function(t,e){return this.clone().$set(t,e)},y.get=function(t){return this[S.p(t)]()},y.add=function(n,h){var d,p=this;n=Number(n);var f=S.p(h),g=function(t){var e=v(p);return S.w(e.date(e.date()+Math.round(t*n)),p)};if(f===c)return this.set(c,this.$M+n);if(f===u)return this.set(u,this.$y+n);if(f===s)return g(1);if(f===l)return g(7);var m=(d={},d[a]=e,d[o]=r,d[i]=t,d)[f]||1,y=this.$d.getTime()+n*m;return S.w(y,this)},y.subtract=function(t,e){return this.add(-1*t,e)},y.format=function(t){var e=this,r=this.$locale();if(!this.isValid())return r.invalidDate||p;var n=t||"YYYY-MM-DDTHH:mm:ssZ",i=S.z(this),a=this.$H,o=this.$m,s=this.$M,l=r.weekdays,c=r.months,h=r.meridiem,u=function(t,r,i,a){return t&&(t[r]||t(e,n))||i[r].slice(0,a)},d=function(t){return S.s(a%12||12,t,"0")},f=h||function(t,e,r){var n=t<12?"AM":"PM";return r?n.toLowerCase():n};return n.replace(g,function(t,n){return n||function(t){switch(t){case"YY":return String(e.$y).slice(-2);case"YYYY":return S.s(e.$y,4,"0");case"M":return s+1;case"MM":return S.s(s+1,2,"0");case"MMM":return u(r.monthsShort,s,c,3);case"MMMM":return u(c,s);case"D":return e.$D;case"DD":return S.s(e.$D,2,"0");case"d":return String(e.$W);case"dd":return u(r.weekdaysMin,e.$W,l,2);case"ddd":return u(r.weekdaysShort,e.$W,l,3);case"dddd":return l[e.$W];case"H":return String(a);case"HH":return S.s(a,2,"0");case"h":return d(1);case"hh":return d(2);case"a":return f(a,o,!0);case"A":return f(a,o,!1);case"m":return String(o);case"mm":return S.s(o,2,"0");case"s":return String(e.$s);case"ss":return S.s(e.$s,2,"0");case"SSS":return S.s(e.$ms,3,"0");case"Z":return i}return null}(t)||i.replace(":","")})},y.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},y.diff=function(n,d,p){var f,g=this,m=S.p(d),y=v(n),x=(y.utcOffset()-this.utcOffset())*e,b=this-y,k=function(){return S.m(g,y)};switch(m){case u:f=k()/12;break;case c:f=k();break;case h:f=k()/3;break;case l:f=(b-x)/6048e5;break;case s:f=(b-x)/864e5;break;case o:f=b/r;break;case a:f=b/e;break;case i:f=b/t;break;default:f=b}return p?f:S.a(f)},y.daysInMonth=function(){return this.endOf(c).$D},y.$locale=function(){return k[this.$L]},y.locale=function(t,e){if(!t)return this.$L;var r=this.clone(),n=_(t,e,!0);return n&&(r.$L=n),r},y.clone=function(){return S.w(this.$d,this)},y.toDate=function(){return new Date(this.valueOf())},y.toJSON=function(){return this.isValid()?this.toISOString():null},y.toISOString=function(){return this.$d.toISOString()},y.toString=function(){return this.$d.toUTCString()},m}(),T=A.prototype;return v.prototype=T,[["$ms",n],["$s",i],["$m",a],["$H",o],["$W",s],["$M",c],["$y",u],["$D",d]].forEach(function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}}),v.extend=function(t,e){return t.$i||(t(e,A,v),t.$i=!0),v},v.locale=_,v.isDayjs=w,v.unix=function(t){return v(1e3*t)},v.en=k[b],v.Ls=k,v.p={},v}()},56389:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var n=r(89732);const i=function(){this.__data__=new n.A,this.size=0};const a=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r};const o=function(t){return this.__data__.get(t)};const s=function(t){return this.__data__.has(t)};var l=r(86986),c=r(45786);const h=function(t,e){var r=this.__data__;if(r instanceof n.A){var i=r.__data__;if(!l.A||i.length<199)return i.push([t,e]),this.size=++r.size,this;r=this.__data__=new c.A(i)}return r.set(t,e),this.size=r.size,this};function u(t){var e=this.__data__=new n.A(t);this.size=e.size}u.prototype.clear=i,u.prototype.delete=a,u.prototype.get=o,u.prototype.has=s,u.prototype.set=h;const d=u},57442:(t,e,r)=>{"use strict";r.d(e,{XX:()=>h,q7:()=>u,sO:()=>c});var n=r(84982),i=r(61598),a=r(47794),o=r(27293),s={common:o.Y2,getConfig:o.zj,insertCluster:i.U,insertEdge:n.Jo,insertEdgeLabel:n.jP,insertMarkers:n.g0,insertNode:i.on,interpolateToCurve:a.Ib,labelHelper:i.Zk,log:o.Rm,positionEdgeLabel:n.T_},l={},c=(0,o.K2)(t=>{for(const e of t)l[e.name]=e},"registerLayoutLoaders");(0,o.K2)(()=>{c([{name:"dagre",loader:(0,o.K2)(async()=>await Promise.all([r.e(1874),r.e(4326),r.e(8886)]).then(r.bind(r,6505)),"loader")}])},"registerDefaultLayoutLoaders")();var h=(0,o.K2)(async(t,e)=>{if(!(t.layoutAlgorithm in l))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);const r=l[t.layoutAlgorithm];return(await r.loader()).render(t,e,s,{algorithm:r.algorithm})},"render"),u=(0,o.K2)((t="",{fallback:e="dagre"}={})=>{if(t in l)return t;if(e in l)return o.Rm.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")},57454:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(6727),i="object"==typeof self&&self&&self.Object===Object&&self;const a=n.A||i||Function("return this")()},58480:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=r(11628);const i=(t,e)=>(0,n.A)(t,"l",e)},61274:(t,e,r)=>{"use strict";function n(t,e){let r;if(void 0===e)for(const n of t)null!=n&&(r<n||void 0===r&&n>=n)&&(r=n);else{let n=-1;for(let i of t)null!=(i=e(i,++n,t))&&(r<i||void 0===r&&i>=i)&&(r=i)}return r}function i(t,e){let r;if(void 0===e)for(const n of t)null!=n&&(r>n||void 0===r&&n>=n)&&(r=n);else{let n=-1;for(let i of t)null!=(i=e(i,++n,t))&&(r>i||void 0===r&&i>=i)&&(r=i)}return r}function a(t){return t}r.d(e,{JLW:()=>Zo,l78:()=>x,tlR:()=>y,qrM:()=>cs,Yu4:()=>us,IA3:()=>ps,Wi0:()=>gs,PGM:()=>ms,OEq:()=>xs,y8u:()=>Cs,olC:()=>_s,IrU:()=>Ss,oDi:()=>Ms,Q7f:()=>Ls,cVp:()=>$s,lUB:()=>Jo,Lx9:()=>Ds,nVG:()=>Ks,uxU:()=>qs,Xf2:()=>Us,GZz:()=>Gs,UPb:()=>Zs,dyv:()=>Vs,bEH:()=>rn,n8j:()=>rs,T9B:()=>n,jkA:()=>i,rLf:()=>as,WH:()=>dn,m4Y:()=>ii,UMr:()=>un,w7C:()=>Co,zt:()=>wo,Ltv:()=>_o,UAC:()=>Ci,DCK:()=>Ji,TUC:()=>Li,Agd:()=>bi,t6C:()=>gi,wXd:()=>yi,ABi:()=>Ai,Ui6:()=>zi,rGn:()=>Fi,ucG:()=>mi,YPH:()=>Si,Mol:()=>Bi,PGu:()=>Ti,GuW:()=>Mi});var o=1,s=2,l=3,c=4,h=1e-6;function u(t){return"translate("+t+",0)"}function d(t){return"translate(0,"+t+")"}function p(t){return e=>+t(e)}function f(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function g(){return!this.__axis}function m(t,e){var r=[],n=null,i=null,m=6,y=6,x=3,b="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,k=t===o||t===c?-1:1,C=t===c||t===s?"x":"y",w=t===o||t===l?u:d;function _(u){var d=null==n?e.ticks?e.ticks.apply(e,r):e.domain():n,_=null==i?e.tickFormat?e.tickFormat.apply(e,r):a:i,v=Math.max(m,0)+x,S=e.range(),A=+S[0]+b,T=+S[S.length-1]+b,M=(e.bandwidth?f:p)(e.copy(),b),B=u.selection?u.selection():u,L=B.selectAll(".domain").data([null]),F=B.selectAll(".tick").data(d,e).order(),$=F.exit(),E=F.enter().append("g").attr("class","tick"),D=F.select("line"),N=F.select("text");L=L.merge(L.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),F=F.merge(E),D=D.merge(E.append("line").attr("stroke","currentColor").attr(C+"2",k*m)),N=N.merge(E.append("text").attr("fill","currentColor").attr(C,k*v).attr("dy",t===o?"0em":t===l?"0.71em":"0.32em")),u!==B&&(L=L.transition(u),F=F.transition(u),D=D.transition(u),N=N.transition(u),$=$.transition(u).attr("opacity",h).attr("transform",function(t){return isFinite(t=M(t))?w(t+b):this.getAttribute("transform")}),E.attr("opacity",h).attr("transform",function(t){var e=this.parentNode.__axis;return w((e&&isFinite(e=e(t))?e:M(t))+b)})),$.remove(),L.attr("d",t===c||t===s?y?"M"+k*y+","+A+"H"+b+"V"+T+"H"+k*y:"M"+b+","+A+"V"+T:y?"M"+A+","+k*y+"V"+b+"H"+T+"V"+k*y:"M"+A+","+b+"H"+T),F.attr("opacity",1).attr("transform",function(t){return w(M(t)+b)}),D.attr(C+"2",k*m),N.attr(C,k*v).text(_),B.filter(g).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===s?"start":t===c?"end":"middle"),B.each(function(){this.__axis=M})}return _.scale=function(t){return arguments.length?(e=t,_):e},_.ticks=function(){return r=Array.from(arguments),_},_.tickArguments=function(t){return arguments.length?(r=null==t?[]:Array.from(t),_):r.slice()},_.tickValues=function(t){return arguments.length?(n=null==t?null:Array.from(t),_):n&&n.slice()},_.tickFormat=function(t){return arguments.length?(i=t,_):i},_.tickSize=function(t){return arguments.length?(m=y=+t,_):m},_.tickSizeInner=function(t){return arguments.length?(m=+t,_):m},_.tickSizeOuter=function(t){return arguments.length?(y=+t,_):y},_.tickPadding=function(t){return arguments.length?(x=+t,_):x},_.offset=function(t){return arguments.length?(b=+t,_):b},_}function y(t){return m(o,t)}function x(t){return m(l,t)}function b(){}function k(t){return null==t?b:function(){return this.querySelector(t)}}function C(){return[]}function w(t){return null==t?C:function(){return this.querySelectorAll(t)}}function _(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}function v(t){return function(){return this.matches(t)}}function S(t){return function(e){return e.matches(t)}}var A=Array.prototype.find;function T(){return this.firstElementChild}var M=Array.prototype.filter;function B(){return Array.from(this.children)}function L(t){return new Array(t.length)}function F(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function $(t,e,r,n,i,a){for(var o,s=0,l=e.length,c=a.length;s<c;++s)(o=e[s])?(o.__data__=a[s],n[s]=o):r[s]=new F(t,a[s]);for(;s<l;++s)(o=e[s])&&(i[s]=o)}function E(t,e,r,n,i,a,o){var s,l,c,h=new Map,u=e.length,d=a.length,p=new Array(u);for(s=0;s<u;++s)(l=e[s])&&(p[s]=c=o.call(l,l.__data__,s,e)+"",h.has(c)?i[s]=l:h.set(c,l));for(s=0;s<d;++s)c=o.call(t,a[s],s,a)+"",(l=h.get(c))?(n[s]=l,l.__data__=a[s],h.delete(c)):r[s]=new F(t,a[s]);for(s=0;s<u;++s)(l=e[s])&&h.get(p[s])===l&&(i[s]=l)}function D(t){return t.__data__}function N(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function O(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}F.prototype={constructor:F,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var R="http://www.w3.org/1999/xhtml";const I={svg:"http://www.w3.org/2000/svg",xhtml:R,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function j(t){var e=t+="",r=e.indexOf(":");return r>=0&&"xmlns"!==(e=t.slice(0,r))&&(t=t.slice(r+1)),I.hasOwnProperty(e)?{space:I[e],local:t}:t}function z(t){return function(){this.removeAttribute(t)}}function P(t){return function(){this.removeAttributeNS(t.space,t.local)}}function K(t,e){return function(){this.setAttribute(t,e)}}function q(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function W(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttribute(t):this.setAttribute(t,r)}}function H(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function U(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Y(t){return function(){this.style.removeProperty(t)}}function G(t,e,r){return function(){this.style.setProperty(t,e,r)}}function V(t,e,r){return function(){var n=e.apply(this,arguments);null==n?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function Z(t,e){return t.style.getPropertyValue(e)||U(t).getComputedStyle(t,null).getPropertyValue(e)}function X(t){return function(){delete this[t]}}function Q(t,e){return function(){this[t]=e}}function J(t,e){return function(){var r=e.apply(this,arguments);null==r?delete this[t]:this[t]=r}}function tt(t){return t.trim().split(/^|\s+/)}function et(t){return t.classList||new rt(t)}function rt(t){this._node=t,this._names=tt(t.getAttribute("class")||"")}function nt(t,e){for(var r=et(t),n=-1,i=e.length;++n<i;)r.add(e[n])}function it(t,e){for(var r=et(t),n=-1,i=e.length;++n<i;)r.remove(e[n])}function at(t){return function(){nt(this,t)}}function ot(t){return function(){it(this,t)}}function st(t,e){return function(){(e.apply(this,arguments)?nt:it)(this,t)}}function lt(){this.textContent=""}function ct(t){return function(){this.textContent=t}}function ht(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function ut(){this.innerHTML=""}function dt(t){return function(){this.innerHTML=t}}function pt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function ft(){this.nextSibling&&this.parentNode.appendChild(this)}function gt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function mt(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===R&&e.documentElement.namespaceURI===R?e.createElement(t):e.createElementNS(r,t)}}function yt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function xt(t){var e=j(t);return(e.local?yt:mt)(e)}function bt(){return null}function kt(){var t=this.parentNode;t&&t.removeChild(this)}function Ct(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function wt(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function _t(t){return function(){var e=this.__on;if(e){for(var r,n=0,i=-1,a=e.length;n<a;++n)r=e[n],t.type&&r.type!==t.type||r.name!==t.name?e[++i]=r:this.removeEventListener(r.type,r.listener,r.options);++i?e.length=i:delete this.__on}}}function vt(t,e,r){return function(){var n,i=this.__on,a=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(i)for(var o=0,s=i.length;o<s;++o)if((n=i[o]).type===t.type&&n.name===t.name)return this.removeEventListener(n.type,n.listener,n.options),this.addEventListener(n.type,n.listener=a,n.options=r),void(n.value=e);this.addEventListener(t.type,a,r),n={type:t.type,name:t.name,value:e,listener:a,options:r},i?i.push(n):this.__on=[n]}}function St(t,e,r){var n=U(t),i=n.CustomEvent;"function"==typeof i?i=new i(e,r):(i=n.document.createEvent("Event"),r?(i.initEvent(e,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function At(t,e){return function(){return St(this,t,e)}}function Tt(t,e){return function(){return St(this,t,e.apply(this,arguments))}}rt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Mt=[null];function Bt(t,e){this._groups=t,this._parents=e}function Lt(){return new Bt([[document.documentElement]],Mt)}Bt.prototype=Lt.prototype={constructor:Bt,select:function(t){"function"!=typeof t&&(t=k(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i<r;++i)for(var a,o,s=e[i],l=s.length,c=n[i]=new Array(l),h=0;h<l;++h)(a=s[h])&&(o=t.call(a,a.__data__,h,s))&&("__data__"in a&&(o.__data__=a.__data__),c[h]=o);return new Bt(n,this._parents)},selectAll:function(t){t="function"==typeof t?_(t):w(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a<r;++a)for(var o,s=e[a],l=s.length,c=0;c<l;++c)(o=s[c])&&(n.push(t.call(o,o.__data__,c,s)),i.push(o));return new Bt(n,i)},selectChild:function(t){return this.select(null==t?T:function(t){return function(){return A.call(this.children,t)}}("function"==typeof t?t:S(t)))},selectChildren:function(t){return this.selectAll(null==t?B:function(t){return function(){return M.call(this.children,t)}}("function"==typeof t?t:S(t)))},filter:function(t){"function"!=typeof t&&(t=v(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i<r;++i)for(var a,o=e[i],s=o.length,l=n[i]=[],c=0;c<s;++c)(a=o[c])&&t.call(a,a.__data__,c,o)&&l.push(a);return new Bt(n,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,D);var r,n=e?E:$,i=this._parents,a=this._groups;"function"!=typeof t&&(r=t,t=function(){return r});for(var o=a.length,s=new Array(o),l=new Array(o),c=new Array(o),h=0;h<o;++h){var u=i[h],d=a[h],p=d.length,f=N(t.call(u,u&&u.__data__,h,i)),g=f.length,m=l[h]=new Array(g),y=s[h]=new Array(g);n(u,d,m,y,c[h]=new Array(p),f,e);for(var x,b,k=0,C=0;k<g;++k)if(x=m[k]){for(k>=C&&(C=k+1);!(b=y[C])&&++C<g;);x._next=b||null}}return(s=new Bt(s,i))._enter=l,s._exit=c,s},enter:function(){return new Bt(this._enter||this._groups.map(L),this._parents)},exit:function(){return new Bt(this._exit||this._groups.map(L),this._parents)},join:function(t,e,r){var n=this.enter(),i=this,a=this.exit();return"function"==typeof t?(n=t(n))&&(n=n.selection()):n=n.append(t+""),null!=e&&(i=e(i))&&(i=i.selection()),null==r?a.remove():r(a),n&&i?n.merge(i).order():i},merge:function(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,i=r.length,a=n.length,o=Math.min(i,a),s=new Array(i),l=0;l<o;++l)for(var c,h=r[l],u=n[l],d=h.length,p=s[l]=new Array(d),f=0;f<d;++f)(c=h[f]||u[f])&&(p[f]=c);for(;l<i;++l)s[l]=r[l];return new Bt(s,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,r=t.length;++e<r;)for(var n,i=t[e],a=i.length-1,o=i[a];--a>=0;)(n=i[a])&&(o&&4^n.compareDocumentPosition(o)&&o.parentNode.insertBefore(n,o),o=n);return this},sort:function(t){function e(e,r){return e&&r?t(e.__data__,r.__data__):!e-!r}t||(t=O);for(var r=this._groups,n=r.length,i=new Array(n),a=0;a<n;++a){for(var o,s=r[a],l=s.length,c=i[a]=new Array(l),h=0;h<l;++h)(o=s[h])&&(c[h]=o);c.sort(e)}return new Bt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var n=t[e],i=0,a=n.length;i<a;++i){var o=n[i];if(o)return o}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,r=0,n=e.length;r<n;++r)for(var i,a=e[r],o=0,s=a.length;o<s;++o)(i=a[o])&&t.call(i,i.__data__,o,a);return this},attr:function(t,e){var r=j(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((null==e?r.local?P:z:"function"==typeof e?r.local?H:W:r.local?q:K)(r,e))},style:function(t,e,r){return arguments.length>1?this.each((null==e?Y:"function"==typeof e?V:G)(t,e,null==r?"":r)):Z(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?X:"function"==typeof e?J:Q)(t,e)):this.node()[t]},classed:function(t,e){var r=tt(t+"");if(arguments.length<2){for(var n=et(this.node()),i=-1,a=r.length;++i<a;)if(!n.contains(r[i]))return!1;return!0}return this.each(("function"==typeof e?st:e?at:ot)(r,e))},text:function(t){return arguments.length?this.each(null==t?lt:("function"==typeof t?ht:ct)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?ut:("function"==typeof t?pt:dt)(t)):this.node().innerHTML},raise:function(){return this.each(ft)},lower:function(){return this.each(gt)},append:function(t){var e="function"==typeof t?t:xt(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})},insert:function(t,e){var r="function"==typeof t?t:xt(t),n=null==e?bt:"function"==typeof e?e:k(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})},remove:function(){return this.each(kt)},clone:function(t){return this.select(t?wt:Ct)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,r){var n,i,a=function(t){return t.trim().split(/^|\s+/).map(function(t){var e="",r=t.indexOf(".");return r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),{type:t,name:e}})}(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?vt:_t,n=0;n<o;++n)this.each(s(a[n],e,r));return this}var s=this.node().__on;if(s)for(var l,c=0,h=s.length;c<h;++c)for(n=0,l=s[c];n<o;++n)if((i=a[n]).type===l.type&&i.name===l.name)return l.value},dispatch:function(t,e){return this.each(("function"==typeof e?Tt:At)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var n,i=t[e],a=0,o=i.length;a<o;++a)(n=i[a])&&(yield n)}};const Ft=Lt;var $t={value:()=>{}};function Et(){for(var t,e=0,r=arguments.length,n={};e<r;++e){if(!(t=arguments[e]+"")||t in n||/[\s.]/.test(t))throw new Error("illegal type: "+t);n[t]=[]}return new Dt(n)}function Dt(t){this._=t}function Nt(t,e){for(var r,n=0,i=t.length;n<i;++n)if((r=t[n]).name===e)return r.value}function Ot(t,e,r){for(var n=0,i=t.length;n<i;++n)if(t[n].name===e){t[n]=$t,t=t.slice(0,n).concat(t.slice(n+1));break}return null!=r&&t.push({name:e,value:r}),t}Dt.prototype=Et.prototype={constructor:Dt,on:function(t,e){var r,n,i=this._,a=(n=i,(t+"").trim().split(/^|\s+/).map(function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),o=-1,s=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o<s;)if(r=(t=a[o]).type)i[r]=Ot(i[r],t.name,e);else if(null==e)for(r in i)i[r]=Ot(i[r],t.name,null);return this}for(;++o<s;)if((r=(t=a[o]).type)&&(r=Nt(i[r],t.name)))return r},copy:function(){var t={},e=this._;for(var r in e)t[r]=e[r].slice();return new Dt(t)},call:function(t,e){if((r=arguments.length-2)>0)for(var r,n,i=new Array(r),a=0;a<r;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,r=(n=this._[t]).length;a<r;++a)n[a].value.apply(e,i)},apply:function(t,e,r){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var n=this._[t],i=0,a=n.length;i<a;++i)n[i].value.apply(e,r)}};const Rt=Et;var It,jt,zt=0,Pt=0,Kt=0,qt=0,Wt=0,Ht=0,Ut="object"==typeof performance&&performance.now?performance:Date,Yt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Gt(){return Wt||(Yt(Vt),Wt=Ut.now()+Ht)}function Vt(){Wt=0}function Zt(){this._call=this._time=this._next=null}function Xt(t,e,r){var n=new Zt;return n.restart(t,e,r),n}function Qt(){Wt=(qt=Ut.now())+Ht,zt=Pt=0;try{!function(){Gt(),++zt;for(var t,e=It;e;)(t=Wt-e._time)>=0&&e._call.call(void 0,t),e=e._next;--zt}()}finally{zt=0,function(){var t,e,r=It,n=1/0;for(;r;)r._call?(n>r._time&&(n=r._time),t=r,r=r._next):(e=r._next,r._next=null,r=t?t._next=e:It=e);jt=t,te(n)}(),Wt=0}}function Jt(){var t=Ut.now(),e=t-qt;e>1e3&&(Ht-=e,qt=t)}function te(t){zt||(Pt&&(Pt=clearTimeout(Pt)),t-Wt>24?(t<1/0&&(Pt=setTimeout(Qt,t-Ut.now()-Ht)),Kt&&(Kt=clearInterval(Kt))):(Kt||(qt=Ut.now(),Kt=setInterval(Jt,1e3)),zt=1,Yt(Qt)))}function ee(t,e,r){var n=new Zt;return e=null==e?0:+e,n.restart(r=>{n.stop(),t(r+e)},e,r),n}Zt.prototype=Xt.prototype={constructor:Zt,restart:function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?Gt():+r)+(null==e?0:+e),this._next||jt===this||(jt?jt._next=this:It=this,jt=this),this._call=t,this._time=r,te()},stop:function(){this._call&&(this._call=null,this._time=1/0,te())}};var re=Rt("start","end","cancel","interrupt"),ne=[];function ie(t,e,r,n,i,a){var o=t.__transition;if(o){if(r in o)return}else t.__transition={};!function(t,e,r){var n,i=t.__transition;function a(t){r.state=1,r.timer.restart(o,r.delay,r.time),r.delay<=t&&o(t-r.delay)}function o(a){var c,h,u,d;if(1!==r.state)return l();for(c in i)if((d=i[c]).name===r.name){if(3===d.state)return ee(o);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete i[c]):+c<e&&(d.state=6,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete i[c])}if(ee(function(){3===r.state&&(r.state=4,r.timer.restart(s,r.delay,r.time),s(a))}),r.state=2,r.on.call("start",t,t.__data__,r.index,r.group),2===r.state){for(r.state=3,n=new Array(u=r.tween.length),c=0,h=-1;c<u;++c)(d=r.tween[c].value.call(t,t.__data__,r.index,r.group))&&(n[++h]=d);n.length=h+1}}function s(e){for(var i=e<r.duration?r.ease.call(null,e/r.duration):(r.timer.restart(l),r.state=5,1),a=-1,o=n.length;++a<o;)n[a].call(t,i);5===r.state&&(r.on.call("end",t,t.__data__,r.index,r.group),l())}function l(){for(var n in r.state=6,r.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=r,r.timer=Xt(a,0,r.time)}(t,r,{name:e,index:n,group:i,on:re,tween:ne,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function ae(t,e){var r=se(t,e);if(r.state>0)throw new Error("too late; already scheduled");return r}function oe(t,e){var r=se(t,e);if(r.state>3)throw new Error("too late; already running");return r}function se(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function le(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var ce,he=180/Math.PI,ue={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function de(t,e,r,n,i,a){var o,s,l;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(l=t*r+e*n)&&(r-=t*l,n-=e*l),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,l/=s),t*n<e*r&&(t=-t,e=-e,l=-l,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*he,skewX:Math.atan(l)*he,scaleX:o,scaleY:s}}function pe(t,e,r,n){function i(t){return t.length?t.pop()+" ":""}return function(a,o){var s=[],l=[];return a=t(a),o=t(o),function(t,n,i,a,o,s){if(t!==i||n!==a){var l=o.push("translate(",null,e,null,r);s.push({i:l-4,x:le(t,i)},{i:l-2,x:le(n,a)})}else(i||a)&&o.push("translate("+i+e+a+r)}(a.translateX,a.translateY,o.translateX,o.translateY,s,l),function(t,e,r,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+"rotate(",null,n)-2,x:le(t,e)})):e&&r.push(i(r)+"rotate("+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+"skewX(",null,n)-2,x:le(t,e)}):e&&r.push(i(r)+"skewX("+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:le(t,r)},{i:s-2,x:le(e,n)})}else 1===r&&1===n||a.push(i(a)+"scale("+r+","+n+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++r<n;)s[(e=l[r]).i]=e.x(t);return s.join("")}}}var fe=pe(function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?ue:de(e.a,e.b,e.c,e.d,e.e,e.f)},"px, ","px)","deg)"),ge=pe(function(t){return null==t?ue:(ce||(ce=document.createElementNS("http://www.w3.org/2000/svg","g")),ce.setAttribute("transform",t),(t=ce.transform.baseVal.consolidate())?de((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):ue)},", ",")",")");function me(t,e){var r,n;return function(){var i=oe(this,t),a=i.tween;if(a!==r)for(var o=0,s=(n=r=a).length;o<s;++o)if(n[o].name===e){(n=n.slice()).splice(o,1);break}i.tween=n}}function ye(t,e,r){var n,i;if("function"!=typeof r)throw new Error;return function(){var a=oe(this,t),o=a.tween;if(o!==n){i=(n=o).slice();for(var s={name:e,value:r},l=0,c=i.length;l<c;++l)if(i[l].name===e){i[l]=s;break}l===c&&i.push(s)}a.tween=i}}function xe(t,e,r){var n=t._id;return t.each(function(){var t=oe(this,n);(t.value||(t.value={}))[e]=r.apply(this,arguments)}),function(t){return se(t,n).value[e]}}function be(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function ke(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function Ce(){}var we=.7,_e=1/we,ve="\\s*([+-]?\\d+)\\s*",Se="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ae="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Te=/^#([0-9a-f]{3,8})$/,Me=new RegExp(`^rgb\\(${ve},${ve},${ve}\\)$`),Be=new RegExp(`^rgb\\(${Ae},${Ae},${Ae}\\)$`),Le=new RegExp(`^rgba\\(${ve},${ve},${ve},${Se}\\)$`),Fe=new RegExp(`^rgba\\(${Ae},${Ae},${Ae},${Se}\\)$`),$e=new RegExp(`^hsl\\(${Se},${Ae},${Ae}\\)$`),Ee=new RegExp(`^hsla\\(${Se},${Ae},${Ae},${Se}\\)$`),De={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Ne(){return this.rgb().formatHex()}function Oe(){return this.rgb().formatRgb()}function Re(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=Te.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?Ie(e):3===r?new Ke(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?je(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?je(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Me.exec(t))?new Ke(e[1],e[2],e[3],1):(e=Be.exec(t))?new Ke(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Le.exec(t))?je(e[1],e[2],e[3],e[4]):(e=Fe.exec(t))?je(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=$e.exec(t))?Ge(e[1],e[2]/100,e[3]/100,1):(e=Ee.exec(t))?Ge(e[1],e[2]/100,e[3]/100,e[4]):De.hasOwnProperty(t)?Ie(De[t]):"transparent"===t?new Ke(NaN,NaN,NaN,0):null}function Ie(t){return new Ke(t>>16&255,t>>8&255,255&t,1)}function je(t,e,r,n){return n<=0&&(t=e=r=NaN),new Ke(t,e,r,n)}function ze(t){return t instanceof Ce||(t=Re(t)),t?new Ke((t=t.rgb()).r,t.g,t.b,t.opacity):new Ke}function Pe(t,e,r,n){return 1===arguments.length?ze(t):new Ke(t,e,r,null==n?1:n)}function Ke(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function qe(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function We(){const t=He(this.opacity);return`${1===t?"rgb(":"rgba("}${Ue(this.r)}, ${Ue(this.g)}, ${Ue(this.b)}${1===t?")":`, ${t})`}`}function He(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ue(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Ue(t))<16?"0":"")+t.toString(16)}function Ge(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new Ze(t,e,r,n)}function Ve(t){if(t instanceof Ze)return new Ze(t.h,t.s,t.l,t.opacity);if(t instanceof Ce||(t=Re(t)),!t)return new Ze;if(t instanceof Ze)return t;var e=(t=t.rgb()).r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),o=NaN,s=a-i,l=(a+i)/2;return s?(o=e===a?(r-n)/s+6*(r<n):r===a?(n-e)/s+2:(e-r)/s+4,s/=l<.5?a+i:2-a-i,o*=60):s=l>0&&l<1?0:o,new Ze(o,s,l,t.opacity)}function Ze(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function Xe(t){return(t=(t||0)%360)<0?t+360:t}function Qe(t){return Math.max(0,Math.min(1,t||0))}function Je(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}function tr(t,e,r,n,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*n+o*i)/6}be(Ce,Re,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ne,formatHex:Ne,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Ve(this).formatHsl()},formatRgb:Oe,toString:Oe}),be(Ke,Pe,ke(Ce,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Ke(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?we:Math.pow(we,t),new Ke(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Ke(Ue(this.r),Ue(this.g),Ue(this.b),He(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:qe,formatHex:qe,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:We,toString:We})),be(Ze,function(t,e,r,n){return 1===arguments.length?Ve(t):new Ze(t,e,r,null==n?1:n)},ke(Ce,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Ze(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?we:Math.pow(we,t),new Ze(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new Ke(Je(t>=240?t-240:t+120,i,n),Je(t,i,n),Je(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new Ze(Xe(this.h),Qe(this.s),Qe(this.l),He(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=He(this.opacity);return`${1===t?"hsl(":"hsla("}${Xe(this.h)}, ${100*Qe(this.s)}%, ${100*Qe(this.l)}%${1===t?")":`, ${t})`}`}}));const er=t=>()=>t;function rr(t,e){return function(r){return t+r*e}}function nr(t){return 1===(t=+t)?ir:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}(e,r,t):er(isNaN(e)?r:e)}}function ir(t,e){var r=e-t;return r?rr(t,r):er(isNaN(t)?e:t)}const ar=function t(e){var r=nr(e);function n(t,e){var n=r((t=Pe(t)).r,(e=Pe(e)).r),i=r(t.g,e.g),a=r(t.b,e.b),o=ir(t.opacity,e.opacity);return function(e){return t.r=n(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return n.gamma=t,n}(1);function or(t){return function(e){var r,n,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(r=0;r<i;++r)n=Pe(e[r]),a[r]=n.r||0,o[r]=n.g||0,s[r]=n.b||0;return a=t(a),o=t(o),s=t(s),n.opacity=1,function(t){return n.r=a(t),n.g=o(t),n.b=s(t),n+""}}}or(function(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],o=n>0?t[n-1]:2*i-a,s=n<e-1?t[n+2]:2*a-i;return tr((r-n/e)*e,o,i,a,s)}}),or(function(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),i=t[(n+e-1)%e],a=t[n%e],o=t[(n+1)%e],s=t[(n+2)%e];return tr((r-n/e)*e,i,a,o,s)}});var sr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,lr=new RegExp(sr.source,"g");function cr(t,e){var r,n,i,a=sr.lastIndex=lr.lastIndex=0,o=-1,s=[],l=[];for(t+="",e+="";(r=sr.exec(t))&&(n=lr.exec(e));)(i=n.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:le(r,n)})),a=lr.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?l[0]?function(t){return function(e){return t(e)+""}}(l[0].x):function(t){return function(){return t}}(e):(e=l.length,function(t){for(var r,n=0;n<e;++n)s[(r=l[n]).i]=r.x(t);return s.join("")})}function hr(t,e){var r;return("number"==typeof e?le:e instanceof Re?ar:(r=Re(e))?(e=r,ar):cr)(t,e)}function ur(t){return function(){this.removeAttribute(t)}}function dr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function pr(t,e,r){var n,i,a=r+"";return function(){var o=this.getAttribute(t);return o===a?null:o===n?i:i=e(n=o,r)}}function fr(t,e,r){var n,i,a=r+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===n?i:i=e(n=o,r)}}function gr(t,e,r){var n,i,a;return function(){var o,s,l=r(this);if(null!=l)return(o=this.getAttribute(t))===(s=l+"")?null:o===n&&s===i?a:(i=s,a=e(n=o,l));this.removeAttribute(t)}}function mr(t,e,r){var n,i,a;return function(){var o,s,l=r(this);if(null!=l)return(o=this.getAttributeNS(t.space,t.local))===(s=l+"")?null:o===n&&s===i?a:(i=s,a=e(n=o,l));this.removeAttributeNS(t.space,t.local)}}function yr(t,e){var r,n;function i(){var i=e.apply(this,arguments);return i!==n&&(r=(n=i)&&function(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}(t,i)),r}return i._value=e,i}function xr(t,e){var r,n;function i(){var i=e.apply(this,arguments);return i!==n&&(r=(n=i)&&function(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}(t,i)),r}return i._value=e,i}function br(t,e){return function(){ae(this,t).delay=+e.apply(this,arguments)}}function kr(t,e){return e=+e,function(){ae(this,t).delay=e}}function Cr(t,e){return function(){oe(this,t).duration=+e.apply(this,arguments)}}function wr(t,e){return e=+e,function(){oe(this,t).duration=e}}var _r=Ft.prototype.constructor;function vr(t){return function(){this.style.removeProperty(t)}}var Sr=0;function Ar(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function Tr(){return++Sr}var Mr=Ft.prototype;Ar.prototype=function(t){return Ft().transition(t)}.prototype={constructor:Ar,select:function(t){var e=this._name,r=this._id;"function"!=typeof t&&(t=k(t));for(var n=this._groups,i=n.length,a=new Array(i),o=0;o<i;++o)for(var s,l,c=n[o],h=c.length,u=a[o]=new Array(h),d=0;d<h;++d)(s=c[d])&&(l=t.call(s,s.__data__,d,c))&&("__data__"in s&&(l.__data__=s.__data__),u[d]=l,ie(u[d],e,r,d,u,se(s,r)));return new Ar(a,this._parents,e,r)},selectAll:function(t){var e=this._name,r=this._id;"function"!=typeof t&&(t=w(t));for(var n=this._groups,i=n.length,a=[],o=[],s=0;s<i;++s)for(var l,c=n[s],h=c.length,u=0;u<h;++u)if(l=c[u]){for(var d,p=t.call(l,l.__data__,u,c),f=se(l,r),g=0,m=p.length;g<m;++g)(d=p[g])&&ie(d,e,r,g,p,f);a.push(p),o.push(l)}return new Ar(a,o,e,r)},selectChild:Mr.selectChild,selectChildren:Mr.selectChildren,filter:function(t){"function"!=typeof t&&(t=v(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i<r;++i)for(var a,o=e[i],s=o.length,l=n[i]=[],c=0;c<s;++c)(a=o[c])&&t.call(a,a.__data__,c,o)&&l.push(a);return new Ar(n,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,i=r.length,a=Math.min(n,i),o=new Array(n),s=0;s<a;++s)for(var l,c=e[s],h=r[s],u=c.length,d=o[s]=new Array(u),p=0;p<u;++p)(l=c[p]||h[p])&&(d[p]=l);for(;s<n;++s)o[s]=e[s];return new Ar(o,this._parents,this._name,this._id)},selection:function(){return new _r(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,r=Tr(),n=this._groups,i=n.length,a=0;a<i;++a)for(var o,s=n[a],l=s.length,c=0;c<l;++c)if(o=s[c]){var h=se(o,e);ie(o,t,r,c,s,{time:h.time+h.delay+h.duration,delay:0,duration:h.duration,ease:h.ease})}return new Ar(n,this._parents,t,r)},call:Mr.call,nodes:Mr.nodes,node:Mr.node,size:Mr.size,empty:Mr.empty,each:Mr.each,on:function(t,e){var r=this._id;return arguments.length<2?se(this.node(),r).on.on(t):this.each(function(t,e,r){var n,i,a=function(t){return(t+"").trim().split(/^|\s+/).every(function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t})}(e)?ae:oe;return function(){var o=a(this,t),s=o.on;s!==n&&(i=(n=s).copy()).on(e,r),o.on=i}}(r,t,e))},attr:function(t,e){var r=j(t),n="transform"===r?ge:hr;return this.attrTween(t,"function"==typeof e?(r.local?mr:gr)(r,n,xe(this,"attr."+t,e)):null==e?(r.local?dr:ur)(r):(r.local?fr:pr)(r,n,e))},attrTween:function(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;var n=j(t);return this.tween(r,(n.local?yr:xr)(n,e))},style:function(t,e,r){var n="transform"==(t+="")?fe:hr;return null==e?this.styleTween(t,function(t,e){var r,n,i;return function(){var a=Z(this,t),o=(this.style.removeProperty(t),Z(this,t));return a===o?null:a===r&&o===n?i:i=e(r=a,n=o)}}(t,n)).on("end.style."+t,vr(t)):"function"==typeof e?this.styleTween(t,function(t,e,r){var n,i,a;return function(){var o=Z(this,t),s=r(this),l=s+"";return null==s&&(this.style.removeProperty(t),l=s=Z(this,t)),o===l?null:o===n&&l===i?a:(i=l,a=e(n=o,s))}}(t,n,xe(this,"style."+t,e))).each(function(t,e){var r,n,i,a,o="style."+e,s="end."+o;return function(){var l=oe(this,t),c=l.on,h=null==l.value[o]?a||(a=vr(e)):void 0;c===r&&i===h||(n=(r=c).copy()).on(s,i=h),l.on=n}}(this._id,t)):this.styleTween(t,function(t,e,r){var n,i,a=r+"";return function(){var o=Z(this,t);return o===a?null:o===n?i:i=e(n=o,r)}}(t,n,e),r).on("end.style."+t,null)},styleTween:function(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;return this.tween(n,function(t,e,r){var n,i;function a(){var a=e.apply(this,arguments);return a!==i&&(n=(i=a)&&function(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}(t,a,r)),n}return a._value=e,a}(t,e,null==r?"":r))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(xe(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,r;function n(){var n=t.apply(this,arguments);return n!==r&&(e=(r=n)&&function(t){return function(e){this.textContent=t.call(this,e)}}(n)),e}return n._value=t,n}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var r=this._id;if(t+="",arguments.length<2){for(var n,i=se(this.node(),r).tween,a=0,o=i.length;a<o;++a)if((n=i[a]).name===t)return n.value;return null}return this.each((null==e?me:ye)(r,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?br:kr)(e,t)):se(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Cr:wr)(e,t)):se(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(function(t,e){if("function"!=typeof e)throw new Error;return function(){oe(this,t).ease=e}}(e,t)):se(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var r=e.apply(this,arguments);if("function"!=typeof r)throw new Error;oe(this,t).ease=r}}(this._id,t))},end:function(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(a,o){var s={value:o},l={value:function(){0===--i&&a()}};r.each(function(){var r=oe(this,n),i=r.on;i!==t&&((e=(t=i).copy())._.cancel.push(s),e._.interrupt.push(s),e._.end.push(l)),r.on=e}),0===i&&a()})},[Symbol.iterator]:Mr[Symbol.iterator]};var Br={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function Lr(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}Ft.prototype.interrupt=function(t){return this.each(function(){!function(t,e){var r,n,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(r=a[i]).name===e?(n=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(n?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete a[i]):o=!1;o&&delete t.__transition}}(this,t)})},Ft.prototype.transition=function(t){var e,r;t instanceof Ar?(e=t._id,t=t._name):(e=Tr(),(r=Br).time=Gt(),t=null==t?null:t+"");for(var n=this._groups,i=n.length,a=0;a<i;++a)for(var o,s=n[a],l=s.length,c=0;c<l;++c)(o=s[c])&&ie(o,t,e,c,s,r||Lr(o,e));return new Ar(n,this._parents,t,e)};const{abs:Fr,max:$r,min:Er}=Math;function Dr(t){return[+t[0],+t[1]]}function Nr(t){return[Dr(t[0]),Dr(t[1])]}["w","e"].map(Or),["n","s"].map(Or),["n","w","e","s","nw","ne","sw","se"].map(Or);function Or(t){return{type:t}}const Rr=Math.PI/180,Ir=180/Math.PI,jr=.96422,zr=.82521,Pr=4/29,Kr=6/29,qr=3*Kr*Kr,Wr=Kr*Kr*Kr;function Hr(t){if(t instanceof Ur)return new Ur(t.l,t.a,t.b,t.opacity);if(t instanceof Jr)return tn(t);t instanceof Ke||(t=ze(t));var e,r,n=Zr(t.r),i=Zr(t.g),a=Zr(t.b),o=Yr((.2225045*n+.7168786*i+.0606169*a)/1);return n===i&&i===a?e=r=o:(e=Yr((.4360747*n+.3850649*i+.1430804*a)/jr),r=Yr((.0139322*n+.0971045*i+.7141733*a)/zr)),new Ur(116*o-16,500*(e-o),200*(o-r),t.opacity)}function Ur(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function Yr(t){return t>Wr?Math.pow(t,1/3):t/qr+Pr}function Gr(t){return t>Kr?t*t*t:qr*(t-Pr)}function Vr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Zr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Xr(t){if(t instanceof Jr)return new Jr(t.h,t.c,t.l,t.opacity);if(t instanceof Ur||(t=Hr(t)),0===t.a&&0===t.b)return new Jr(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Ir;return new Jr(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Qr(t,e,r,n){return 1===arguments.length?Xr(t):new Jr(t,e,r,null==n?1:n)}function Jr(t,e,r,n){this.h=+t,this.c=+e,this.l=+r,this.opacity=+n}function tn(t){if(isNaN(t.h))return new Ur(t.l,0,0,t.opacity);var e=t.h*Rr;return new Ur(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}function en(t){return function(e,r){var n=t((e=Qr(e)).h,(r=Qr(r)).h),i=ir(e.c,r.c),a=ir(e.l,r.l),o=ir(e.opacity,r.opacity);return function(t){return e.h=n(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}be(Ur,function(t,e,r,n){return 1===arguments.length?Hr(t):new Ur(t,e,r,null==n?1:n)},ke(Ce,{brighter(t){return new Ur(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new Ur(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return new Ke(Vr(3.1338561*(e=jr*Gr(e))-1.6168667*(t=1*Gr(t))-.4906146*(r=zr*Gr(r))),Vr(-.9787684*e+1.9161415*t+.033454*r),Vr(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}})),be(Jr,Qr,ke(Ce,{brighter(t){return new Jr(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new Jr(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return tn(this).rgb()}}));const rn=en(function(t,e){var r=e-t;return r?rr(t,r>180||r<-180?r-360*Math.round(r/360):r):er(isNaN(t)?e:t)});en(ir);function nn(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}class an extends Map{constructor(t,e=cn){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[r,n]of t)this.set(r,n)}get(t){return super.get(on(this,t))}has(t){return super.has(on(this,t))}set(t,e){return super.set(sn(this,t),e)}delete(t){return super.delete(ln(this,t))}}Set;function on({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):r}function sn({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function ln({_intern:t,_key:e},r){const n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function cn(t){return null!==t&&"object"==typeof t?t.valueOf():t}const hn=Symbol("implicit");function un(){var t=new an,e=[],r=[],n=hn;function i(i){let a=t.get(i);if(void 0===a){if(n!==hn)return n;t.set(i,a=e.push(i)-1)}return r[a%r.length]}return i.domain=function(r){if(!arguments.length)return e.slice();e=[],t=new an;for(const n of r)t.has(n)||t.set(n,e.push(n)-1);return i},i.range=function(t){return arguments.length?(r=Array.from(t),i):r.slice()},i.unknown=function(t){return arguments.length?(n=t,i):n},i.copy=function(){return un(e,r).unknown(n)},nn.apply(i,arguments),i}function dn(){var t,e,r=un().unknown(void 0),n=r.domain,i=r.range,a=0,o=1,s=!1,l=0,c=0,h=.5;function u(){var r=n().length,u=o<a,d=u?o:a,p=u?a:o;t=(p-d)/Math.max(1,r-l+2*c),s&&(t=Math.floor(t)),d+=(p-d-t*(r-l))*h,e=t*(1-l),s&&(d=Math.round(d),e=Math.round(e));var f=function(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=0|Math.max(0,Math.ceil((e-t)/r)),a=new Array(i);++n<i;)a[n]=t+n*r;return a}(r).map(function(e){return d+t*e});return i(u?f.reverse():f)}return delete r.unknown,r.domain=function(t){return arguments.length?(n(t),u()):n()},r.range=function(t){return arguments.length?([a,o]=t,a=+a,o=+o,u()):[a,o]},r.rangeRound=function(t){return[a,o]=t,a=+a,o=+o,s=!0,u()},r.bandwidth=function(){return e},r.step=function(){return t},r.round=function(t){return arguments.length?(s=!!t,u()):s},r.padding=function(t){return arguments.length?(l=Math.min(1,c=+t),u()):l},r.paddingInner=function(t){return arguments.length?(l=Math.min(1,t),u()):l},r.paddingOuter=function(t){return arguments.length?(c=+t,u()):c},r.align=function(t){return arguments.length?(h=Math.max(0,Math.min(1,t)),u()):h},r.copy=function(){return dn(n(),[a,o]).round(s).paddingInner(l).paddingOuter(c).align(h)},nn.apply(u(),arguments)}const pn=Math.sqrt(50),fn=Math.sqrt(10),gn=Math.sqrt(2);function mn(t,e,r){const n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),o=a>=pn?10:a>=fn?5:a>=gn?2:1;let s,l,c;return i<0?(c=Math.pow(10,-i)/o,s=Math.round(t*c),l=Math.round(e*c),s/c<t&&++s,l/c>e&&--l,c=-c):(c=Math.pow(10,i)*o,s=Math.round(t/c),l=Math.round(e/c),s*c<t&&++s,l*c>e&&--l),l<s&&.5<=r&&r<2?mn(t,e,2*r):[s,l,c]}function yn(t,e,r){return mn(t=+t,e=+e,r=+r)[2]}function xn(t,e,r){r=+r;const n=(e=+e)<(t=+t),i=n?yn(e,t,r):yn(t,e,r);return(n?-1:1)*(i<0?1/-i:i)}function bn(t,e){return null==t||null==e?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function kn(t,e){return null==t||null==e?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Cn(t){let e,r,n;function i(t,n,i=0,a=t.length){if(i<a){if(0!==e(n,n))return a;do{const e=i+a>>>1;r(t[e],n)<0?i=e+1:a=e}while(i<a)}return i}return 2!==t.length?(e=bn,r=(e,r)=>bn(t(e),r),n=(e,r)=>t(e)-r):(e=t===bn||t===kn?t:wn,r=t,n=t),{left:i,center:function(t,e,r=0,a=t.length){const o=i(t,e,r,a-1);return o>r&&n(t[o-1],e)>-n(t[o],e)?o-1:o},right:function(t,n,i=0,a=t.length){if(i<a){if(0!==e(n,n))return a;do{const e=i+a>>>1;r(t[e],n)<=0?i=e+1:a=e}while(i<a)}return i}}}function wn(){return 0}const _n=Cn(bn),vn=_n.right,Sn=(_n.left,Cn(function(t){return null===t?NaN:+t}).center,vn);function An(t,e){var r,n=e?e.length:0,i=t?Math.min(n,t.length):0,a=new Array(i),o=new Array(n);for(r=0;r<i;++r)a[r]=Ln(t[r],e[r]);for(;r<n;++r)o[r]=e[r];return function(t){for(r=0;r<i;++r)o[r]=a[r](t);return o}}function Tn(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}function Mn(t,e){var r,n={},i={};for(r in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)r in t?n[r]=Ln(t[r],e[r]):i[r]=e[r];return function(t){for(r in n)i[r]=n[r](t);return i}}function Bn(t,e){e||(e=[]);var r,n=t?Math.min(e.length,t.length):0,i=e.slice();return function(a){for(r=0;r<n;++r)i[r]=t[r]*(1-a)+e[r]*a;return i}}function Ln(t,e){var r,n,i=typeof e;return null==e||"boolean"===i?er(e):("number"===i?le:"string"===i?(r=Re(e))?(e=r,ar):cr:e instanceof Re?ar:e instanceof Date?Tn:(n=e,!ArrayBuffer.isView(n)||n instanceof DataView?Array.isArray(e)?An:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?Mn:le:Bn))(t,e)}function Fn(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}function $n(t){return+t}var En=[0,1];function Dn(t){return t}function Nn(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:(r=isNaN(e)?NaN:.5,function(){return r});var r}function On(t,e,r){var n=t[0],i=t[1],a=e[0],o=e[1];return i<n?(n=Nn(i,n),a=r(o,a)):(n=Nn(n,i),a=r(a,o)),function(t){return a(n(t))}}function Rn(t,e,r){var n=Math.min(t.length,e.length)-1,i=new Array(n),a=new Array(n),o=-1;for(t[n]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<n;)i[o]=Nn(t[o],t[o+1]),a[o]=r(e[o],e[o+1]);return function(e){var r=Sn(t,e,1,n)-1;return a[r](i[r](e))}}function In(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function jn(){var t,e,r,n,i,a,o=En,s=En,l=Ln,c=Dn;function h(){var t,e,r,l=Math.min(o.length,s.length);return c!==Dn&&(t=o[0],e=o[l-1],t>e&&(r=t,t=e,e=r),c=function(r){return Math.max(t,Math.min(e,r))}),n=l>2?Rn:On,i=a=null,u}function u(e){return null==e||isNaN(e=+e)?r:(i||(i=n(o.map(t),s,l)))(t(c(e)))}return u.invert=function(r){return c(e((a||(a=n(s,o.map(t),le)))(r)))},u.domain=function(t){return arguments.length?(o=Array.from(t,$n),h()):o.slice()},u.range=function(t){return arguments.length?(s=Array.from(t),h()):s.slice()},u.rangeRound=function(t){return s=Array.from(t),l=Fn,h()},u.clamp=function(t){return arguments.length?(c=!!t||Dn,h()):c!==Dn},u.interpolate=function(t){return arguments.length?(l=t,h()):l},u.unknown=function(t){return arguments.length?(r=t,u):r},function(r,n){return t=r,e=n,h()}}function zn(){return jn()(Dn,Dn)}var Pn,Kn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function qn(t){if(!(e=Kn.exec(t)))throw new Error("invalid format: "+t);var e;return new Wn({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Wn(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Hn(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function Un(t){return(t=Hn(Math.abs(t)))?t[1]:NaN}function Yn(t,e){var r=Hn(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}qn.prototype=Wn.prototype,Wn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Gn={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Yn(100*t,e),r:Yn,s:function(t,e){var r=Hn(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(Pn=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=n.length;return a===o?n:a>o?n+new Array(a-o+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+Hn(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Vn(t){return t}var Zn,Xn,Qn,Jn=Array.prototype.map,ti=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function ei(t){var e,r,n=void 0===t.grouping||void 0===t.thousands?Vn:(e=Jn.call(t.grouping,Number),r=t.thousands+"",function(t,n){for(var i=t.length,a=[],o=0,s=e[0],l=0;i>0&&s>0&&(l+s+1>n&&(s=Math.max(1,n-l)),a.push(t.substring(i-=s,i+s)),!((l+=s+1)>n));)s=e[o=(o+1)%e.length];return a.reverse().join(r)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Vn:function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(Jn.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"\u2212":t.minus+"",h=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=qn(t)).fill,r=t.align,u=t.sign,d=t.symbol,p=t.zero,f=t.width,g=t.comma,m=t.precision,y=t.trim,x=t.type;"n"===x?(g=!0,x="g"):Gn[x]||(void 0===m&&(m=12),y=!0,x="g"),(p||"0"===e&&"="===r)&&(p=!0,e="0",r="=");var b="$"===d?i:"#"===d&&/[boxX]/.test(x)?"0"+x.toLowerCase():"",k="$"===d?a:/[%p]/.test(x)?l:"",C=Gn[x],w=/[defgprs%]/.test(x);function _(t){var i,a,l,d=b,_=k;if("c"===x)_=C(t)+_,t="";else{var v=(t=+t)<0||1/t<0;if(t=isNaN(t)?h:C(Math.abs(t),m),y&&(t=function(t){t:for(var e,r=t.length,n=1,i=-1;n<r;++n)switch(t[n]){case".":i=e=n;break;case"0":0===i&&(i=n),e=n;break;default:if(!+t[n])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),v&&0===+t&&"+"!==u&&(v=!1),d=(v?"("===u?u:c:"-"===u||"("===u?"":u)+d,_=("s"===x?ti[8+Pn/3]:"")+_+(v&&"("===u?")":""),w)for(i=-1,a=t.length;++i<a;)if(48>(l=t.charCodeAt(i))||l>57){_=(46===l?o+t.slice(i+1):t.slice(i))+_,t=t.slice(0,i);break}}g&&!p&&(t=n(t,1/0));var S=d.length+t.length+_.length,A=S<f?new Array(f-S+1).join(e):"";switch(g&&p&&(t=n(A+t,A.length?f-_.length:1/0),A=""),r){case"<":t=d+t+_+A;break;case"=":t=d+A+t+_;break;case"^":t=A.slice(0,S=A.length>>1)+d+t+_+A.slice(S);break;default:t=A+d+t+_}return s(t)}return m=void 0===m?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),_.toString=function(){return t+""},_}return{format:u,formatPrefix:function(t,e){var r=u(((t=qn(t)).type="f",t)),n=3*Math.max(-8,Math.min(8,Math.floor(Un(e)/3))),i=Math.pow(10,-n),a=ti[8+n/3];return function(t){return r(i*t)+a}}}}function ri(t,e,r,n){var i,a=xn(t,e,r);switch((n=qn(null==n?",f":n)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=n.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Un(e)/3)))-Un(Math.abs(t)))}(a,o))||(n.precision=i),Qn(n,o);case"":case"e":case"g":case"p":case"r":null!=n.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Un(e)-Un(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(n.precision=i-("e"===n.type));break;case"f":case"%":null!=n.precision||isNaN(i=function(t){return Math.max(0,-Un(Math.abs(t)))}(a))||(n.precision=i-2*("%"===n.type))}return Xn(n)}function ni(t){var e=t.domain;return t.ticks=function(t){var r=e();return function(t,e,r){if(!((r=+r)>0))return[];if((t=+t)===(e=+e))return[t];const n=e<t,[i,a,o]=n?mn(e,t,r):mn(t,e,r);if(!(a>=i))return[];const s=a-i+1,l=new Array(s);if(n)if(o<0)for(let c=0;c<s;++c)l[c]=(a-c)/-o;else for(let c=0;c<s;++c)l[c]=(a-c)*o;else if(o<0)for(let c=0;c<s;++c)l[c]=(i+c)/-o;else for(let c=0;c<s;++c)l[c]=(i+c)*o;return l}(r[0],r[r.length-1],null==t?10:t)},t.tickFormat=function(t,r){var n=e();return ri(n[0],n[n.length-1],null==t?10:t,r)},t.nice=function(r){null==r&&(r=10);var n,i,a=e(),o=0,s=a.length-1,l=a[o],c=a[s],h=10;for(c<l&&(i=l,l=c,c=i,i=o,o=s,s=i);h-- >0;){if((i=yn(l,c,r))===n)return a[o]=l,a[s]=c,e(a);if(i>0)l=Math.floor(l/i)*i,c=Math.ceil(c/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,c=Math.floor(c*i)/i}n=i}return t},t}function ii(){var t=zn();return t.copy=function(){return In(t,ii())},nn.apply(t,arguments),ni(t)}Zn=ei({thousands:",",grouping:[3],currency:["$",""]}),Xn=Zn.format,Qn=Zn.formatPrefix;const ai=1e3,oi=6e4,si=36e5,li=864e5,ci=6048e5,hi=2592e6,ui=31536e6,di=new Date,pi=new Date;function fi(t,e,r,n){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=e=>(t(e=new Date(+e)),e),i.ceil=r=>(t(r=new Date(r-1)),e(r,1),t(r),r),i.round=t=>{const e=i(t),r=i.ceil(t);return t-e<r-t?e:r},i.offset=(t,r)=>(e(t=new Date(+t),null==r?1:Math.floor(r)),t),i.range=(r,n,a)=>{const o=[];if(r=i.ceil(r),a=null==a?1:Math.floor(a),!(r<n&&a>0))return o;let s;do{o.push(s=new Date(+r)),e(r,a),t(r)}while(s<r&&r<n);return o},i.filter=r=>fi(e=>{if(e>=e)for(;t(e),!r(e);)e.setTime(e-1)},(t,n)=>{if(t>=t)if(n<0)for(;++n<=0;)for(;e(t,-1),!r(t););else for(;--n>=0;)for(;e(t,1),!r(t););}),r&&(i.count=(e,n)=>(di.setTime(+e),pi.setTime(+n),t(di),t(pi),Math.floor(r(di,pi))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(n?e=>n(e)%t===0:e=>i.count(0,e)%t===0):i:null)),i}const gi=fi(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);gi.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?fi(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):gi:null);gi.range;const mi=fi(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*ai)},(t,e)=>(e-t)/ai,t=>t.getUTCSeconds()),yi=(mi.range,fi(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ai)},(t,e)=>{t.setTime(+t+e*oi)},(t,e)=>(e-t)/oi,t=>t.getMinutes())),xi=(yi.range,fi(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*oi)},(t,e)=>(e-t)/oi,t=>t.getUTCMinutes())),bi=(xi.range,fi(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ai-t.getMinutes()*oi)},(t,e)=>{t.setTime(+t+e*si)},(t,e)=>(e-t)/si,t=>t.getHours())),ki=(bi.range,fi(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*si)},(t,e)=>(e-t)/si,t=>t.getUTCHours())),Ci=(ki.range,fi(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*oi)/li,t=>t.getDate()-1)),wi=(Ci.range,fi(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/li,t=>t.getUTCDate()-1)),_i=(wi.range,fi(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/li,t=>Math.floor(t/li)));_i.range;function vi(t){return fi(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+7*e)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*oi)/ci)}const Si=vi(0),Ai=vi(1),Ti=vi(2),Mi=vi(3),Bi=vi(4),Li=vi(5),Fi=vi(6);Si.range,Ai.range,Ti.range,Mi.range,Bi.range,Li.range,Fi.range;function $i(t){return fi(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)},(t,e)=>(e-t)/ci)}const Ei=$i(0),Di=$i(1),Ni=$i(2),Oi=$i(3),Ri=$i(4),Ii=$i(5),ji=$i(6),zi=(Ei.range,Di.range,Ni.range,Oi.range,Ri.range,Ii.range,ji.range,fi(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear()),t=>t.getMonth())),Pi=(zi.range,fi(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear()),t=>t.getUTCMonth())),Ki=(Pi.range,fi(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear()));Ki.every=t=>isFinite(t=Math.floor(t))&&t>0?fi(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)}):null;Ki.range;const qi=fi(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());qi.every=t=>isFinite(t=Math.floor(t))&&t>0?fi(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)}):null;qi.range;function Wi(t,e,r,n,i,a){const o=[[mi,1,ai],[mi,5,5e3],[mi,15,15e3],[mi,30,3e4],[a,1,oi],[a,5,3e5],[a,15,9e5],[a,30,18e5],[i,1,si],[i,3,108e5],[i,6,216e5],[i,12,432e5],[n,1,li],[n,2,1728e5],[r,1,ci],[e,1,hi],[e,3,7776e6],[t,1,ui]];function s(e,r,n){const i=Math.abs(r-e)/n,a=Cn(([,,t])=>t).right(o,i);if(a===o.length)return t.every(xn(e/ui,r/ui,n));if(0===a)return gi.every(Math.max(xn(e,r,n),1));const[s,l]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return s.every(l)}return[function(t,e,r){const n=e<t;n&&([t,e]=[e,t]);const i=r&&"function"==typeof r.range?r:s(t,e,r),a=i?i.range(t,+e+1):[];return n?a.reverse():a},s]}const[Hi,Ui]=Wi(qi,Pi,Ei,_i,ki,xi),[Yi,Gi]=Wi(Ki,zi,Si,Ci,bi,yi);function Vi(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Zi(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Xi(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}var Qi,Ji,ta={"-":"",_:" ",0:"0"},ea=/^\s*\d+/,ra=/^%/,na=/[\\^$*+?|[\]().{}]/g;function ia(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a<r?new Array(r-a+1).join(e)+i:i)}function aa(t){return t.replace(na,"\\$&")}function oa(t){return new RegExp("^(?:"+t.map(aa).join("|")+")","i")}function sa(t){return new Map(t.map((t,e)=>[t.toLowerCase(),e]))}function la(t,e,r){var n=ea.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function ca(t,e,r){var n=ea.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function ha(t,e,r){var n=ea.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function ua(t,e,r){var n=ea.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function da(t,e,r){var n=ea.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function pa(t,e,r){var n=ea.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function fa(t,e,r){var n=ea.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function ga(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function ma(t,e,r){var n=ea.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function ya(t,e,r){var n=ea.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function xa(t,e,r){var n=ea.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function ba(t,e,r){var n=ea.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function ka(t,e,r){var n=ea.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function Ca(t,e,r){var n=ea.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function wa(t,e,r){var n=ea.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function _a(t,e,r){var n=ea.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function va(t,e,r){var n=ea.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Sa(t,e,r){var n=ra.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function Aa(t,e,r){var n=ea.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function Ta(t,e,r){var n=ea.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function Ma(t,e){return ia(t.getDate(),e,2)}function Ba(t,e){return ia(t.getHours(),e,2)}function La(t,e){return ia(t.getHours()%12||12,e,2)}function Fa(t,e){return ia(1+Ci.count(Ki(t),t),e,3)}function $a(t,e){return ia(t.getMilliseconds(),e,3)}function Ea(t,e){return $a(t,e)+"000"}function Da(t,e){return ia(t.getMonth()+1,e,2)}function Na(t,e){return ia(t.getMinutes(),e,2)}function Oa(t,e){return ia(t.getSeconds(),e,2)}function Ra(t){var e=t.getDay();return 0===e?7:e}function Ia(t,e){return ia(Si.count(Ki(t)-1,t),e,2)}function ja(t){var e=t.getDay();return e>=4||0===e?Bi(t):Bi.ceil(t)}function za(t,e){return t=ja(t),ia(Bi.count(Ki(t),t)+(4===Ki(t).getDay()),e,2)}function Pa(t){return t.getDay()}function Ka(t,e){return ia(Ai.count(Ki(t)-1,t),e,2)}function qa(t,e){return ia(t.getFullYear()%100,e,2)}function Wa(t,e){return ia((t=ja(t)).getFullYear()%100,e,2)}function Ha(t,e){return ia(t.getFullYear()%1e4,e,4)}function Ua(t,e){var r=t.getDay();return ia((t=r>=4||0===r?Bi(t):Bi.ceil(t)).getFullYear()%1e4,e,4)}function Ya(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+ia(e/60|0,"0",2)+ia(e%60,"0",2)}function Ga(t,e){return ia(t.getUTCDate(),e,2)}function Va(t,e){return ia(t.getUTCHours(),e,2)}function Za(t,e){return ia(t.getUTCHours()%12||12,e,2)}function Xa(t,e){return ia(1+wi.count(qi(t),t),e,3)}function Qa(t,e){return ia(t.getUTCMilliseconds(),e,3)}function Ja(t,e){return Qa(t,e)+"000"}function to(t,e){return ia(t.getUTCMonth()+1,e,2)}function eo(t,e){return ia(t.getUTCMinutes(),e,2)}function ro(t,e){return ia(t.getUTCSeconds(),e,2)}function no(t){var e=t.getUTCDay();return 0===e?7:e}function io(t,e){return ia(Ei.count(qi(t)-1,t),e,2)}function ao(t){var e=t.getUTCDay();return e>=4||0===e?Ri(t):Ri.ceil(t)}function oo(t,e){return t=ao(t),ia(Ri.count(qi(t),t)+(4===qi(t).getUTCDay()),e,2)}function so(t){return t.getUTCDay()}function lo(t,e){return ia(Di.count(qi(t)-1,t),e,2)}function co(t,e){return ia(t.getUTCFullYear()%100,e,2)}function ho(t,e){return ia((t=ao(t)).getUTCFullYear()%100,e,2)}function uo(t,e){return ia(t.getUTCFullYear()%1e4,e,4)}function po(t,e){var r=t.getUTCDay();return ia((t=r>=4||0===r?Ri(t):Ri.ceil(t)).getUTCFullYear()%1e4,e,4)}function fo(){return"+0000"}function go(){return"%"}function mo(t){return+t}function yo(t){return Math.floor(+t/1e3)}function xo(t){return new Date(t)}function bo(t){return t instanceof Date?+t:+new Date(+t)}function ko(t,e,r,n,i,a,o,s,l,c){var h=zn(),u=h.invert,d=h.domain,p=c(".%L"),f=c(":%S"),g=c("%I:%M"),m=c("%I %p"),y=c("%a %d"),x=c("%b %d"),b=c("%B"),k=c("%Y");function C(t){return(l(t)<t?p:s(t)<t?f:o(t)<t?g:a(t)<t?m:n(t)<t?i(t)<t?y:x:r(t)<t?b:k)(t)}return h.invert=function(t){return new Date(u(t))},h.domain=function(t){return arguments.length?d(Array.from(t,bo)):d().map(xo)},h.ticks=function(e){var r=d();return t(r[0],r[r.length-1],null==e?10:e)},h.tickFormat=function(t,e){return null==e?C:c(e)},h.nice=function(t){var r=d();return t&&"function"==typeof t.range||(t=e(r[0],r[r.length-1],null==t?10:t)),t?d(function(t,e){var r,n=0,i=(t=t.slice()).length-1,a=t[n],o=t[i];return o<a&&(r=n,n=i,i=r,r=a,a=o,o=r),t[n]=e.floor(a),t[i]=e.ceil(o),t}(r,t)):h},h.copy=function(){return In(h,ko(t,e,r,n,i,a,o,s,l,c))},h}function Co(){return nn.apply(ko(Yi,Gi,Ki,zi,Si,Ci,bi,yi,mi,Ji).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}!function(t){Qi=function(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,l=t.shortMonths,c=oa(i),h=sa(i),u=oa(a),d=sa(a),p=oa(o),f=sa(o),g=oa(s),m=sa(s),y=oa(l),x=sa(l),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:Ma,e:Ma,f:Ea,g:Wa,G:Ua,H:Ba,I:La,j:Fa,L:$a,m:Da,M:Na,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:mo,s:yo,S:Oa,u:Ra,U:Ia,V:za,w:Pa,W:Ka,x:null,X:null,y:qa,Y:Ha,Z:Ya,"%":go},k={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Ga,e:Ga,f:Ja,g:ho,G:po,H:Va,I:Za,j:Xa,L:Qa,m:to,M:eo,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:mo,s:yo,S:ro,u:no,U:io,V:oo,w:so,W:lo,x:null,X:null,y:co,Y:uo,Z:fo,"%":go},C={a:function(t,e,r){var n=p.exec(e.slice(r));return n?(t.w=f.get(n[0].toLowerCase()),r+n[0].length):-1},A:function(t,e,r){var n=u.exec(e.slice(r));return n?(t.w=d.get(n[0].toLowerCase()),r+n[0].length):-1},b:function(t,e,r){var n=y.exec(e.slice(r));return n?(t.m=x.get(n[0].toLowerCase()),r+n[0].length):-1},B:function(t,e,r){var n=g.exec(e.slice(r));return n?(t.m=m.get(n[0].toLowerCase()),r+n[0].length):-1},c:function(t,r,n){return v(t,e,r,n)},d:xa,e:xa,f:va,g:fa,G:pa,H:ka,I:ka,j:ba,L:_a,m:ya,M:Ca,p:function(t,e,r){var n=c.exec(e.slice(r));return n?(t.p=h.get(n[0].toLowerCase()),r+n[0].length):-1},q:ma,Q:Aa,s:Ta,S:wa,u:ca,U:ha,V:ua,w:la,W:da,x:function(t,e,n){return v(t,r,e,n)},X:function(t,e,r){return v(t,n,e,r)},y:fa,Y:pa,Z:ga,"%":Sa};function w(t,e){return function(r){var n,i,a,o=[],s=-1,l=0,c=t.length;for(r instanceof Date||(r=new Date(+r));++s<c;)37===t.charCodeAt(s)&&(o.push(t.slice(l,s)),null!=(i=ta[n=t.charAt(++s)])?n=t.charAt(++s):i="e"===n?" ":"0",(a=e[n])&&(n=a(r,i)),o.push(n),l=s+1);return o.push(t.slice(l,s)),o.join("")}}function _(t,e){return function(r){var n,i,a=Xi(1900,void 0,1);if(v(a,t,r+="",0)!=r.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(e&&!("Z"in a)&&(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(n=Zi(Xi(a.y,0,1))).getUTCDay(),n=i>4||0===i?Di.ceil(n):Di(n),n=wi.offset(n,7*(a.V-1)),a.y=n.getUTCFullYear(),a.m=n.getUTCMonth(),a.d=n.getUTCDate()+(a.w+6)%7):(i=(n=Vi(Xi(a.y,0,1))).getDay(),n=i>4||0===i?Ai.ceil(n):Ai(n),n=Ci.offset(n,7*(a.V-1)),a.y=n.getFullYear(),a.m=n.getMonth(),a.d=n.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Zi(Xi(a.y,0,1)).getUTCDay():Vi(Xi(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Zi(a)):Vi(a)}}function v(t,e,r,n){for(var i,a,o=0,s=e.length,l=r.length;o<s;){if(n>=l)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=C[i in ta?e.charAt(o++):i])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return b.x=w(r,b),b.X=w(n,b),b.c=w(e,b),k.x=w(r,k),k.X=w(n,k),k.c=w(e,k),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=_(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",k);return e.toString=function(){return t},e},utcParse:function(t){var e=_(t+="",!0);return e.toString=function(){return t},e}}}(t),Ji=Qi.format,Qi.parse,Qi.utcFormat,Qi.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const wo=function(t){for(var e=t.length/6|0,r=new Array(e),n=0;n<e;)r[n]="#"+t.slice(6*n,6*++n);return r}("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");function _o(t){return"string"==typeof t?new Bt([[document.querySelector(t)]],[document.documentElement]):new Bt([[t]],Mt)}function vo(t){return function(){return t}}const So=Math.abs,Ao=Math.atan2,To=Math.cos,Mo=Math.max,Bo=Math.min,Lo=Math.sin,Fo=Math.sqrt,$o=1e-12,Eo=Math.PI,Do=Eo/2,No=2*Eo;function Oo(t){return t>=1?Do:t<=-1?-Do:Math.asin(t)}const Ro=Math.PI,Io=2*Ro,jo=1e-6,zo=Io-jo;function Po(t){this._+=t[0];for(let e=1,r=t.length;e<r;++e)this._+=arguments[e]+t[e]}class Ko{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?Po:function(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Po;const r=10**e;return function(t){this._+=t[0];for(let e=1,n=t.length;e<n;++e)this._+=Math.round(arguments[e]*r)/r+t[e]}}(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,r,n){this._append`Q${+t},${+e},${this._x1=+r},${this._y1=+n}`}bezierCurveTo(t,e,r,n,i,a){this._append`C${+t},${+e},${+r},${+n},${this._x1=+i},${this._y1=+a}`}arcTo(t,e,r,n,i){if(t=+t,e=+e,r=+r,n=+n,(i=+i)<0)throw new Error(`negative radius: ${i}`);let a=this._x1,o=this._y1,s=r-t,l=n-e,c=a-t,h=o-e,u=c*c+h*h;if(null===this._x1)this._append`M${this._x1=t},${this._y1=e}`;else if(u>jo)if(Math.abs(h*s-l*c)>jo&&i){let d=r-a,p=n-o,f=s*s+l*l,g=d*d+p*p,m=Math.sqrt(f),y=Math.sqrt(u),x=i*Math.tan((Ro-Math.acos((f+u-g)/(2*m*y)))/2),b=x/y,k=x/m;Math.abs(b-1)>jo&&this._append`L${t+b*c},${e+b*h}`,this._append`A${i},${i},0,0,${+(h*d>c*p)},${this._x1=t+k*s},${this._y1=e+k*l}`}else this._append`L${this._x1=t},${this._y1=e}`;else;}arc(t,e,r,n,i,a){if(t=+t,e=+e,a=!!a,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(n),s=r*Math.sin(n),l=t+o,c=e+s,h=1^a,u=a?n-i:i-n;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>jo||Math.abs(this._y1-c)>jo)&&this._append`L${l},${c}`,r&&(u<0&&(u=u%Io+Io),u>zo?this._append`A${r},${r},0,1,${h},${t-o},${e-s}A${r},${r},0,1,${h},${this._x1=l},${this._y1=c}`:u>jo&&this._append`A${r},${r},0,${+(u>=Ro)},${h},${this._x1=t+r*Math.cos(i)},${this._y1=e+r*Math.sin(i)}`)}rect(t,e,r,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${r=+r}v${+n}h${-r}Z`}toString(){return this._}}function qo(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(null==r)e=null;else{const t=Math.floor(r);if(!(t>=0))throw new RangeError(`invalid digits: ${r}`);e=t}return t},()=>new Ko(e)}function Wo(t){return t.innerRadius}function Ho(t){return t.outerRadius}function Uo(t){return t.startAngle}function Yo(t){return t.endAngle}function Go(t){return t&&t.padAngle}function Vo(t,e,r,n,i,a,o){var s=t-r,l=e-n,c=(o?a:-a)/Fo(s*s+l*l),h=c*l,u=-c*s,d=t+h,p=e+u,f=r+h,g=n+u,m=(d+f)/2,y=(p+g)/2,x=f-d,b=g-p,k=x*x+b*b,C=i-a,w=d*g-f*p,_=(b<0?-1:1)*Fo(Mo(0,C*C*k-w*w)),v=(w*b-x*_)/k,S=(-w*x-b*_)/k,A=(w*b+x*_)/k,T=(-w*x+b*_)/k,M=v-m,B=S-y,L=A-m,F=T-y;return M*M+B*B>L*L+F*F&&(v=A,S=T),{cx:v,cy:S,x01:-h,y01:-u,x11:v*(i/C-1),y11:S*(i/C-1)}}function Zo(){var t=Wo,e=Ho,r=vo(0),n=null,i=Uo,a=Yo,o=Go,s=null,l=qo(c);function c(){var c,h,u,d=+t.apply(this,arguments),p=+e.apply(this,arguments),f=i.apply(this,arguments)-Do,g=a.apply(this,arguments)-Do,m=So(g-f),y=g>f;if(s||(s=c=l()),p<d&&(h=p,p=d,d=h),p>$o)if(m>No-$o)s.moveTo(p*To(f),p*Lo(f)),s.arc(0,0,p,f,g,!y),d>$o&&(s.moveTo(d*To(g),d*Lo(g)),s.arc(0,0,d,g,f,y));else{var x,b,k=f,C=g,w=f,_=g,v=m,S=m,A=o.apply(this,arguments)/2,T=A>$o&&(n?+n.apply(this,arguments):Fo(d*d+p*p)),M=Bo(So(p-d)/2,+r.apply(this,arguments)),B=M,L=M;if(T>$o){var F=Oo(T/d*Lo(A)),$=Oo(T/p*Lo(A));(v-=2*F)>$o?(w+=F*=y?1:-1,_-=F):(v=0,w=_=(f+g)/2),(S-=2*$)>$o?(k+=$*=y?1:-1,C-=$):(S=0,k=C=(f+g)/2)}var E=p*To(k),D=p*Lo(k),N=d*To(_),O=d*Lo(_);if(M>$o){var R,I=p*To(C),j=p*Lo(C),z=d*To(w),P=d*Lo(w);if(m<Eo)if(R=function(t,e,r,n,i,a,o,s){var l=r-t,c=n-e,h=o-i,u=s-a,d=u*l-h*c;if(!(d*d<$o))return[t+(d=(h*(e-a)-u*(t-i))/d)*l,e+d*c]}(E,D,z,P,I,j,N,O)){var K=E-R[0],q=D-R[1],W=I-R[0],H=j-R[1],U=1/Lo(((u=(K*W+q*H)/(Fo(K*K+q*q)*Fo(W*W+H*H)))>1?0:u<-1?Eo:Math.acos(u))/2),Y=Fo(R[0]*R[0]+R[1]*R[1]);B=Bo(M,(d-Y)/(U-1)),L=Bo(M,(p-Y)/(U+1))}else B=L=0}S>$o?L>$o?(x=Vo(z,P,E,D,p,L,y),b=Vo(I,j,N,O,p,L,y),s.moveTo(x.cx+x.x01,x.cy+x.y01),L<M?s.arc(x.cx,x.cy,L,Ao(x.y01,x.x01),Ao(b.y01,b.x01),!y):(s.arc(x.cx,x.cy,L,Ao(x.y01,x.x01),Ao(x.y11,x.x11),!y),s.arc(0,0,p,Ao(x.cy+x.y11,x.cx+x.x11),Ao(b.cy+b.y11,b.cx+b.x11),!y),s.arc(b.cx,b.cy,L,Ao(b.y11,b.x11),Ao(b.y01,b.x01),!y))):(s.moveTo(E,D),s.arc(0,0,p,k,C,!y)):s.moveTo(E,D),d>$o&&v>$o?B>$o?(x=Vo(N,O,I,j,d,-B,y),b=Vo(E,D,z,P,d,-B,y),s.lineTo(x.cx+x.x01,x.cy+x.y01),B<M?s.arc(x.cx,x.cy,B,Ao(x.y01,x.x01),Ao(b.y01,b.x01),!y):(s.arc(x.cx,x.cy,B,Ao(x.y01,x.x01),Ao(x.y11,x.x11),!y),s.arc(0,0,d,Ao(x.cy+x.y11,x.cx+x.x11),Ao(b.cy+b.y11,b.cx+b.x11),y),s.arc(b.cx,b.cy,B,Ao(b.y11,b.x11),Ao(b.y01,b.x01),!y))):s.arc(0,0,d,_,w,y):s.lineTo(N,O)}else s.moveTo(0,0);if(s.closePath(),c)return s=null,c+""||null}return c.centroid=function(){var r=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,n=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-Eo/2;return[To(n)*r,Lo(n)*r]},c.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:vo(+e),c):t},c.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:vo(+t),c):e},c.cornerRadius=function(t){return arguments.length?(r="function"==typeof t?t:vo(+t),c):r},c.padRadius=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:vo(+t),c):n},c.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:vo(+t),c):i},c.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:vo(+t),c):a},c.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:vo(+t),c):o},c.context=function(t){return arguments.length?(s=null==t?null:t,c):s},c}Ko.prototype;Array.prototype.slice;function Xo(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Qo(t){this._context=t}function Jo(t){return new Qo(t)}function ts(t){return t[0]}function es(t){return t[1]}function rs(t,e){var r=vo(!0),n=null,i=Jo,a=null,o=qo(s);function s(s){var l,c,h,u=(s=Xo(s)).length,d=!1;for(null==n&&(a=i(h=o())),l=0;l<=u;++l)!(l<u&&r(c=s[l],l,s))===d&&((d=!d)?a.lineStart():a.lineEnd()),d&&a.point(+t(c,l,s),+e(c,l,s));if(h)return a=null,h+""||null}return t="function"==typeof t?t:void 0===t?ts:vo(t),e="function"==typeof e?e:void 0===e?es:vo(e),s.x=function(e){return arguments.length?(t="function"==typeof e?e:vo(+e),s):t},s.y=function(t){return arguments.length?(e="function"==typeof t?t:vo(+t),s):e},s.defined=function(t){return arguments.length?(r="function"==typeof t?t:vo(!!t),s):r},s.curve=function(t){return arguments.length?(i=t,null!=n&&(a=i(n)),s):i},s.context=function(t){return arguments.length?(null==t?n=a=null:a=i(n=t),s):n},s}function ns(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function is(t){return t}function as(){var t=is,e=ns,r=null,n=vo(0),i=vo(No),a=vo(0);function o(o){var s,l,c,h,u,d=(o=Xo(o)).length,p=0,f=new Array(d),g=new Array(d),m=+n.apply(this,arguments),y=Math.min(No,Math.max(-No,i.apply(this,arguments)-m)),x=Math.min(Math.abs(y)/d,a.apply(this,arguments)),b=x*(y<0?-1:1);for(s=0;s<d;++s)(u=g[f[s]=s]=+t(o[s],s,o))>0&&(p+=u);for(null!=e?f.sort(function(t,r){return e(g[t],g[r])}):null!=r&&f.sort(function(t,e){return r(o[t],o[e])}),s=0,c=p?(y-d*b)/p:0;s<d;++s,m=h)l=f[s],h=m+((u=g[l])>0?u*c:0)+b,g[l]={data:o[l],index:s,value:u,startAngle:m,endAngle:h,padAngle:x};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:vo(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,r=null,o):e},o.sort=function(t){return arguments.length?(r=t,e=null,o):r},o.startAngle=function(t){return arguments.length?(n="function"==typeof t?t:vo(+t),o):n},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:vo(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:vo(+t),o):a},o}function os(){}function ss(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function ls(t){this._context=t}function cs(t){return new ls(t)}function hs(t){this._context=t}function us(t){return new hs(t)}function ds(t){this._context=t}function ps(t){return new ds(t)}Qo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},ls.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ss(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ss(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},hs.prototype={areaStart:os,areaEnd:os,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ss(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ds.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:ss(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class fs{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function gs(t){return new fs(t,!0)}function ms(t){return new fs(t,!1)}function ys(t,e){this._basis=new ls(t),this._beta=e}ys.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n,i=t[0],a=e[0],o=t[r]-i,s=e[r]-a,l=-1;++l<=r;)n=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+n*o),this._beta*e[l]+(1-this._beta)*(a+n*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const xs=function t(e){function r(t){return 1===e?new ls(t):new ys(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function bs(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function ks(t,e){this._context=t,this._k=(1-e)/6}ks.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:bs(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:bs(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Cs=function t(e){function r(t){return new ks(t,e)}return r.tension=function(e){return t(+e)},r}(0);function ws(t,e){this._context=t,this._k=(1-e)/6}ws.prototype={areaStart:os,areaEnd:os,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:bs(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const _s=function t(e){function r(t){return new ws(t,e)}return r.tension=function(e){return t(+e)},r}(0);function vs(t,e){this._context=t,this._k=(1-e)/6}vs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:bs(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ss=function t(e){function r(t){return new vs(t,e)}return r.tension=function(e){return t(+e)},r}(0);function As(t,e,r){var n=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>$o){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>$o){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/h,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/h}t._context.bezierCurveTo(n,i,a,o,t._x2,t._y2)}function Ts(t,e){this._context=t,this._alpha=e}Ts.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:As(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ms=function t(e){function r(t){return e?new Ts(t,e):new ks(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Bs(t,e){this._context=t,this._alpha=e}Bs.prototype={areaStart:os,areaEnd:os,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:As(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ls=function t(e){function r(t){return e?new Bs(t,e):new ws(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Fs(t,e){this._context=t,this._alpha=e}Fs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:As(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const $s=function t(e){function r(t){return e?new Fs(t,e):new vs(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Es(t){this._context=t}function Ds(t){return new Es(t)}function Ns(t){return t<0?-1:1}function Os(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),o=(r-t._y1)/(i||n<0&&-0),s=(a*i+o*n)/(n+i);return(Ns(a)+Ns(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Rs(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Is(t,e,r){var n=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-n)/3;t._context.bezierCurveTo(n+s,i+s*e,a-s,o-s*r,a,o)}function js(t){this._context=t}function zs(t){this._context=new Ps(t)}function Ps(t){this._context=t}function Ks(t){return new js(t)}function qs(t){return new zs(t)}function Ws(t){this._context=t}function Hs(t){var e,r,n=t.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e<n-1;++e)i[e]=1,a[e]=4,o[e]=4*t[e]+2*t[e+1];for(i[n-1]=2,a[n-1]=7,o[n-1]=8*t[n-1]+t[n],e=1;e<n;++e)r=i[e]/a[e-1],a[e]-=r,o[e]-=r*o[e-1];for(i[n-1]=o[n-1]/a[n-1],e=n-2;e>=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[n-1]=(t[n]+i[n-1])/2,e=0;e<n-1;++e)a[e]=2*t[e+1]-i[e+1];return[i,a]}function Us(t){return new Ws(t)}function Ys(t,e){this._context=t,this._t=e}function Gs(t){return new Ys(t,.5)}function Vs(t){return new Ys(t,0)}function Zs(t){return new Ys(t,1)}function Xs(t,e,r){this.k=t,this.x=e,this.y=r}Es.prototype={areaStart:os,areaEnd:os,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},js.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Is(this,this._t0,Rs(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var r=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Is(this,Rs(this,r=Os(this,t,e)),r);break;default:Is(this,this._t0,r=Os(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}}},(zs.prototype=Object.create(js.prototype)).point=function(t,e){js.prototype.point.call(this,e,t)},Ps.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)}},Ws.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===r)this._context.lineTo(t[1],e[1]);else for(var n=Hs(t),i=Hs(e),a=0,o=1;o<r;++a,++o)this._context.bezierCurveTo(n[0][a],i[0][a],n[1][a],i[1][a],t[o],e[o]);(this._line||0!==this._line&&1===r)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},Ys.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},Xs.prototype={constructor:Xs,scale:function(t){return 1===t?this:new Xs(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new Xs(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};new Xs(1,0,0);Xs.prototype},61598:(t,e,r)=>{"use strict";r.d(e,{DA:()=>b,IU:()=>D,KX:()=>v,U:()=>E,U7:()=>Ae,U_:()=>Me,Zk:()=>c,aP:()=>_e,gh:()=>Te,lC:()=>u,on:()=>Se});var n=r(70837),i=r(24199),a=r(47794),o=r(27293),s=r(61274),l=r(30726),c=(0,o.K2)(async(t,e,r)=>{let n;const l=e.useHtmlLabels||(0,o._3)((0,o.D7)()?.htmlLabels);n=r||"node default";const c=t.insert("g").attr("class",n).attr("id",e.domId||e.id),h=c.insert("g").attr("class","label").attr("style",(0,a.KL)(e.labelStyle));let u;u=void 0===e.label?"":"string"==typeof e.label?e.label:e.label[0];const d=await(0,i.GZ)(h,(0,o.jZ)((0,a.Sm)(u),(0,o.D7)()),{useHtmlLabels:l,width:e.width||(0,o.D7)().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img});let p=d.getBBox();const f=(e?.padding??0)/2;if(l){const t=d.children[0],e=(0,s.Ltv)(d),r=t.getElementsByTagName("img");if(r){const t=""===u.replace(/<img[^>]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function n(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=(0,o.D7)().fontSize?(0,o.D7)().fontSize:window.getComputedStyle(document.body).fontSize,r=5,[n=o.UI.fontSize]=(0,a.I5)(t),i=n*r+"px";e.style.minWidth=i,e.style.maxWidth=i}else e.style.width="100%";r(e)}(0,o.K2)(n,"setupImage"),setTimeout(()=>{e.complete&&n()}),e.addEventListener("error",n),e.addEventListener("load",n)})))}p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}return l?h.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):h.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&h.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),h.insert("rect",":first-child"),{shapeSvg:c,bbox:p,halfPadding:f,label:h}},"labelHelper"),h=(0,o.K2)(async(t,e,r)=>{const n=r.useHtmlLabels||(0,o._3)((0,o.D7)()?.flowchart?.htmlLabels),l=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),c=await(0,i.GZ)(l,(0,o.jZ)((0,a.Sm)(e),(0,o.D7)()),{useHtmlLabels:n,width:r.width||(0,o.D7)()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img});let h=c.getBBox();const u=r.padding/2;if((0,o._3)((0,o.D7)()?.flowchart?.htmlLabels)){const t=c.children[0],e=(0,s.Ltv)(c);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}return n?l.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):l.attr("transform","translate(0, "+-h.height/2+")"),r.centerLabel&&l.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),l.insert("rect",":first-child"),{shapeSvg:t,bbox:h,halfPadding:u,label:l}},"insertLabel"),u=(0,o.K2)((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),d=(0,o.K2)((t,e)=>("handDrawn"===t.look?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");function p(t){const e=t.map((t,e)=>`${0===e?"M":"L"}${t.x},${t.y}`);return e.push("Z"),e.join(" ")}function f(t,e,r,n,i,a){const o=[],s=r-t,l=n-e,c=s/a,h=2*Math.PI/c,u=e+l/2;for(let d=0;d<=50;d++){const e=t+d/50*s,r=u+i*Math.sin(h*(e-t));o.push({x:e,y:r})}return o}function g(t,e,r,n,i,a){const o=[],s=i*Math.PI/180,l=(a*Math.PI/180-s)/(n-1);for(let c=0;c<n;c++){const n=s+c*l,i=t+r*Math.cos(n),a=e+r*Math.sin(n);o.push({x:-i,y:-a})}return o}(0,o.K2)(p,"createPathFromPoints"),(0,o.K2)(f,"generateFullSineWavePoints"),(0,o.K2)(g,"generateCirclePoints");var m=(0,o.K2)((t,e)=>{var r,n,i=t.x,a=t.y,o=e.x-i,s=e.y-a,l=t.width/2,c=t.height/2;return Math.abs(s)*l>Math.abs(o)*c?(s<0&&(c=-c),r=0===s?0:c*o/s,n=c):(o<0&&(l=-l),r=l,n=0===o?0:l*s/o),{x:i+r,y:a+n}},"intersectRect");function y(t,e){e&&t.attr("style",e)}async function x(t){const e=(0,s.Ltv)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div");let n=t.label;t.label&&(0,o.Wi)(t.label)&&(n=await(0,o.VJ)(t.label.replace(o.Y2.lineBreakRegex,"\n"),(0,o.D7)()));const i=t.isNode?"nodeLabel":"edgeLabel";return r.html('<span class="'+i+'" '+(t.labelStyle?'style="'+t.labelStyle+'"':"")+">"+n+"</span>"),y(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}(0,o.K2)(y,"applyStyle"),(0,o.K2)(x,"addHtmlLabel");var b=(0,o.K2)(async(t,e,r,n)=>{let i=t||"";if("object"==typeof i&&(i=i[0]),(0,o._3)((0,o.D7)().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"<br />"),o.Rm.info("vertexText"+i);const t={isNode:n,label:(0,a.Sm)(i).replace(/fa[blrs]?:fa-[\w-]+/g,t=>`<i class='${t.replace(":"," ")}'></i>`),labelStyle:e?e.replace("fill:","color:"):e};return await x(t)}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let n=[];n="string"==typeof i?i.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(i)?i:[];for(const e of n){const n=document.createElementNS("http://www.w3.org/2000/svg","tspan");n.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),n.setAttribute("dy","1em"),n.setAttribute("x","0"),r?n.setAttribute("class","title-row"):n.setAttribute("class","row"),n.textContent=e.trim(),t.appendChild(n)}return t}},"createLabel"),k=(0,o.K2)((t,e,r,n,i)=>["M",t+i,e,"H",t+r-i,"A",i,i,0,0,1,t+r,e+i,"V",e+n-i,"A",i,i,0,0,1,t+r-i,e+n,"H",t+i,"A",i,i,0,0,1,t,e+n-i,"V",e+i,"A",i,i,0,0,1,t+i,e,"Z"].join(" "),"createRoundedRectPathD"),C=(0,o.K2)(t=>{const{handDrawnSeed:e}=(0,o.D7)();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),w=(0,o.K2)(t=>{const e=_([...t.cssCompiledStyles||[],...t.cssStyles||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),_=(0,o.K2)(t=>{const e=new Map;return t.forEach(t=>{const[r,n]=t.split(":");e.set(r.trim(),n?.trim())}),e},"styles2Map"),v=(0,o.K2)(t=>"color"===t||"font-size"===t||"font-family"===t||"font-weight"===t||"font-style"===t||"text-decoration"===t||"text-align"===t||"text-transform"===t||"line-height"===t||"letter-spacing"===t||"word-spacing"===t||"text-shadow"===t||"text-overflow"===t||"white-space"===t||"word-wrap"===t||"word-break"===t||"overflow-wrap"===t||"hyphens"===t,"isLabelStyle"),S=(0,o.K2)(t=>{const{stylesArray:e}=w(t),r=[],n=[],i=[],a=[];return e.forEach(t=>{const e=t[0];v(e)?r.push(t.join(":")+" !important"):(n.push(t.join(":")+" !important"),e.includes("stroke")&&i.push(t.join(":")+" !important"),"fill"===e&&a.push(t.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),A=(0,o.K2)((t,e)=>{const{themeVariables:r,handDrawnSeed:n}=(0,o.D7)(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=w(t);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0]},e)},"userNodeOverrides"),T=(0,o.K2)(async(t,e)=>{o.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,o.D7)(),{themeVariables:a,handDrawnSeed:c}=r,{clusterBkg:h,clusterBorder:u}=a,{labelStyles:d,nodeStyles:p,borderStyles:f,backgroundStyles:g}=S(e),y=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),x=(0,o._3)(r.flowchart.htmlLabels),b=y.insert("g").attr("class","cluster-label "),C=await(0,i.GZ)(b,e.label,{style:e.labelStyle,useHtmlLabels:x,isNode:!0});let w=C.getBBox();if((0,o._3)(r.flowchart.htmlLabels)){const t=C.children[0],e=(0,s.Ltv)(C);w=t.getBoundingClientRect(),e.attr("width",w.width),e.attr("height",w.height)}const _=e.width<=w.width+e.padding?w.width+e.padding:e.width;e.width<=w.width+e.padding?e.diff=(_-e.width)/2-e.padding:e.diff=-e.padding;const v=e.height,T=e.x-_/2,M=e.y-v/2;let B;if(o.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=l.A.svg(y),r=A(e,{roughness:.7,fill:h,stroke:u,fillWeight:3,seed:c}),n=t.path(k(T,M,_,v,0),r);B=y.insert(()=>(o.Rm.debug("Rough node insert CXC",n),n),":first-child"),B.select("path:nth-child(2)").attr("style",f.join(";")),B.select("path").attr("style",g.join(";").replace("fill","stroke"))}else B=y.insert("rect",":first-child"),B.attr("style",p).attr("rx",e.rx).attr("ry",e.ry).attr("x",T).attr("y",M).attr("width",_).attr("height",v);const{subGraphTitleTopMargin:L}=(0,n.O)(r);if(b.attr("transform",`translate(${e.x-w.width/2}, ${e.y-e.height/2+L})`),d){const t=b.select("span");t&&t.attr("style",d)}const F=B.node().getBBox();return e.offsetX=0,e.width=F.width,e.height=F.height,e.offsetY=w.height-e.padding/2,e.intersect=function(t){return m(e,t)},{cluster:y,labelBBox:w}},"rect"),M=(0,o.K2)((t,e)=>{const r=t.insert("g").attr("class","note-cluster").attr("id",e.id),n=r.insert("rect",":first-child"),i=0*e.padding,a=i/2;n.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");const o=n.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return m(e,t)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),B=(0,o.K2)(async(t,e)=>{const r=(0,o.D7)(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:c,compositeTitleBackground:h,nodeBorder:u}=n,d=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),p=d.insert("g",":first-child"),f=d.insert("g").attr("class","cluster-label");let g=d.append("rect");const y=f.node().appendChild(await b(e.label,e.labelStyle,void 0,!0));let x=y.getBBox();if((0,o._3)(r.flowchart.htmlLabels)){const t=y.children[0],e=(0,s.Ltv)(y);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}const C=0*e.padding,w=C/2,_=(e.width<=x.width+e.padding?x.width+e.padding:e.width)+C;e.width<=x.width+e.padding?e.diff=(_-e.width)/2-e.padding:e.diff=-e.padding;const v=e.height+C,S=e.height+C-x.height-6,A=e.x-_/2,T=e.y-v/2;e.width=_;const M=e.y-e.height/2-w+x.height+2;let B;if("handDrawn"===e.look){const t=e.cssClasses.includes("statediagram-cluster-alt"),r=l.A.svg(d),n=e.rx||e.ry?r.path(k(A,T,_,v,10),{roughness:.7,fill:h,fillStyle:"solid",stroke:u,seed:i}):r.rectangle(A,T,_,v,{seed:i});B=d.insert(()=>n,":first-child");const o=r.rectangle(A,M,_,S,{fill:t?a:c,fillStyle:t?"hachure":"solid",stroke:u,seed:i});B=d.insert(()=>n,":first-child"),g=d.insert(()=>o)}else{B=p.insert("rect",":first-child");const t="outer";B.attr("class",t).attr("x",A).attr("y",T).attr("width",_).attr("height",v).attr("data-look",e.look),g.attr("class","inner").attr("x",A).attr("y",M).attr("width",_).attr("height",S)}f.attr("transform",`translate(${e.x-x.width/2}, ${T+1-((0,o._3)(r.flowchart.htmlLabels)?0:3)})`);const L=B.node().getBBox();return e.height=L.height,e.offsetX=0,e.offsetY=x.height-e.padding/2,e.labelBBox=x,e.intersect=function(t){return m(e,t)},{cluster:d,labelBBox:x}},"roundedWithTitle"),L=(0,o.K2)(async(t,e)=>{o.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,o.D7)(),{themeVariables:a,handDrawnSeed:c}=r,{clusterBkg:h,clusterBorder:u}=a,{labelStyles:d,nodeStyles:p,borderStyles:f,backgroundStyles:g}=S(e),y=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),x=(0,o._3)(r.flowchart.htmlLabels),b=y.insert("g").attr("class","cluster-label "),C=await(0,i.GZ)(b,e.label,{style:e.labelStyle,useHtmlLabels:x,isNode:!0,width:e.width});let w=C.getBBox();if((0,o._3)(r.flowchart.htmlLabels)){const t=C.children[0],e=(0,s.Ltv)(C);w=t.getBoundingClientRect(),e.attr("width",w.width),e.attr("height",w.height)}const _=e.width<=w.width+e.padding?w.width+e.padding:e.width;e.width<=w.width+e.padding?e.diff=(_-e.width)/2-e.padding:e.diff=-e.padding;const v=e.height,T=e.x-_/2,M=e.y-v/2;let B;if(o.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=l.A.svg(y),r=A(e,{roughness:.7,fill:h,stroke:u,fillWeight:4,seed:c}),n=t.path(k(T,M,_,v,e.rx),r);B=y.insert(()=>(o.Rm.debug("Rough node insert CXC",n),n),":first-child"),B.select("path:nth-child(2)").attr("style",f.join(";")),B.select("path").attr("style",g.join(";").replace("fill","stroke"))}else B=y.insert("rect",":first-child"),B.attr("style",p).attr("rx",e.rx).attr("ry",e.ry).attr("x",T).attr("y",M).attr("width",_).attr("height",v);const{subGraphTitleTopMargin:L}=(0,n.O)(r);if(b.attr("transform",`translate(${e.x-w.width/2}, ${e.y-e.height/2+L})`),d){const t=b.select("span");t&&t.attr("style",d)}const F=B.node().getBBox();return e.offsetX=0,e.width=F.width,e.height=F.height,e.offsetY=w.height-e.padding/2,e.intersect=function(t){return m(e,t)},{cluster:y,labelBBox:w}},"kanbanSection"),F={rect:T,squareRect:T,roundedWithTitle:B,noteGroup:M,divider:(0,o.K2)((t,e)=>{const r=(0,o.D7)(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),c=s.insert("g",":first-child"),h=0*e.padding,u=e.width+h;e.diff=-e.padding;const d=e.height+h,p=e.x-u/2,f=e.y-d/2;let g;if(e.width=u,"handDrawn"===e.look){const t=l.A.svg(s).rectangle(p,f,u,d,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});g=s.insert(()=>t,":first-child")}else{g=c.insert("rect",":first-child");const t="divider";g.attr("class",t).attr("x",p).attr("y",f).attr("width",u).attr("height",d).attr("data-look",e.look)}const y=g.node().getBBox();return e.height=y.height,e.offsetX=0,e.offsetY=0,e.intersect=function(t){return m(e,t)},{cluster:s,labelBBox:{}}},"divider"),kanbanSection:L},$=new Map,E=(0,o.K2)(async(t,e)=>{const r=e.shape||"rect",n=await F[r](t,e);return $.set(e.id,n),n},"insertCluster"),D=(0,o.K2)(()=>{$=new Map},"clear");function N(t,e){return t.intersect(e)}(0,o.K2)(N,"intersectNode");var O=N;function R(t,e,r,n){var i=t.x,a=t.y,o=i-n.x,s=a-n.y,l=Math.sqrt(e*e*s*s+r*r*o*o),c=Math.abs(e*r*o/l);n.x<i&&(c=-c);var h=Math.abs(e*r*s/l);return n.y<a&&(h=-h),{x:i+c,y:a+h}}(0,o.K2)(R,"intersectEllipse");var I=R;function j(t,e,r){return I(t,e,e,r)}(0,o.K2)(j,"intersectCircle");var z=j;function P(t,e,r,n){var i,a,o,s,l,c,h,u,d,p,f,g,m;if(i=e.y-t.y,o=t.x-e.x,l=e.x*t.y-t.x*e.y,d=i*r.x+o*r.y+l,p=i*n.x+o*n.y+l,!(0!==d&&0!==p&&K(d,p)||(a=n.y-r.y,s=r.x-n.x,c=n.x*r.y-r.x*n.y,h=a*t.x+s*t.y+c,u=a*e.x+s*e.y+c,0!==h&&0!==u&&K(h,u)||0===(f=i*s-a*o))))return g=Math.abs(f/2),{x:(m=o*c-s*l)<0?(m-g)/f:(m+g)/f,y:(m=a*l-i*c)<0?(m-g)/f:(m+g)/f}}function K(t,e){return t*e>0}(0,o.K2)(P,"intersectLine"),(0,o.K2)(K,"sameSign");var q=P;function W(t,e,r){let n=t.x,i=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach(function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)}):(o=Math.min(o,e.x),s=Math.min(s,e.y));let l=n-t.width/2-o,c=i-t.height/2-s;for(let h=0;h<e.length;h++){let n=e[h],i=e[h<e.length-1?h+1:0],o=q(t,r,{x:l+n.x,y:c+n.y},{x:l+i.x,y:c+i.y});o&&a.push(o)}return a.length?(a.length>1&&a.sort(function(t,e){let n=t.x-r.x,i=t.y-r.y,a=Math.sqrt(n*n+i*i),o=e.x-r.x,s=e.y-r.y,l=Math.sqrt(o*o+s*s);return a<l?-1:a===l?0:1}),a[0]):t}(0,o.K2)(W,"intersectPolygon");var H={node:O,circle:z,ellipse:I,polygon:W,rect:m};function U(t,e){const{labelStyles:r}=S(e);e.labelStyle=r;const n=d(e);let i=n;n||(i="anchor");const s=t.insert("g").attr("class",i).attr("id",e.domId||e.id),{cssStyles:c}=e,h=l.A.svg(s),p=A(e,{fill:"black",stroke:"none",fillStyle:"solid"});"handDrawn"!==e.look&&(p.roughness=0);const f=h.circle(0,0,2,p),g=s.insert(()=>f,":first-child");return g.attr("class","anchor").attr("style",(0,a.KL)(c)),u(e,g),e.intersect=function(t){return o.Rm.info("Circle intersect",e,1,t),H.circle(e,1,t)},s}function Y(t,e,r,n,i,a,o){const s=(t+r)/2,l=(e+n)/2,c=Math.atan2(n-e,r-t),h=(r-t)/2/i,u=(n-e)/2/a,d=Math.sqrt(h**2+u**2);if(d>1)throw new Error("The given radii are too small to create an arc between the points.");const p=Math.sqrt(1-d**2),f=s+p*a*Math.sin(c)*(o?-1:1),g=l-p*i*Math.cos(c)*(o?-1:1),m=Math.atan2((e-g)/a,(t-f)/i);let y=Math.atan2((n-g)/a,(r-f)/i)-m;o&&y<0&&(y+=2*Math.PI),!o&&y>0&&(y-=2*Math.PI);const x=[];for(let b=0;b<20;b++){const t=m+b/19*y,e=f+i*Math.cos(t),r=g+a*Math.sin(t);x.push({x:e,y:r})}return x}async function G(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=a.width+e.padding+20,s=a.height+e.padding,h=s/2,f=h/(2.5+s/50),{cssStyles:g}=e,m=[{x:o/2,y:-s/2},{x:-o/2,y:-s/2},...Y(-o/2,-s/2,-o/2,s/2,f,h,!1),{x:o/2,y:s/2},...Y(o/2,s/2,o/2,-s/2,f,h,!0)],y=l.A.svg(i),x=A(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=p(m),k=y.path(b,x),C=i.insert(()=>k,":first-child");return C.attr("class","basic label-container"),g&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",g),n&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${f/2}, 0)`),u(e,C),e.intersect=function(t){return H.polygon(e,m,t)},i}function V(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}async function Z(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=a.height+e.padding,s=a.width+e.padding+12,h=-o,f=[{x:12,y:h},{x:s,y:h},{x:s,y:0},{x:0,y:0},{x:0,y:h+12},{x:12,y:h}];let g;const{cssStyles:m}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=p(f),a=t.path(n,r);g=i.insert(()=>a,":first-child").attr("transform",`translate(${-s/2}, ${o/2})`),m&&g.attr("style",m)}else g=V(i,s,o,f);return n&&g.attr("style",n),u(e,g),e.intersect=function(t){return H.polygon(e,f,t)},i}function X(t,e){const{nodeStyles:r}=S(e);e.label="";const n=t.insert("g").attr("class",d(e)).attr("id",e.domId??e.id),{cssStyles:i}=e,a=Math.max(28,e.width??0),o=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],s=l.A.svg(n),c=A(e,{});"handDrawn"!==e.look&&(c.roughness=0,c.fillStyle="solid");const h=p(o),u=s.path(h,c),f=n.insert(()=>u,":first-child");return i&&"handDrawn"!==e.look&&f.selectAll("path").attr("style",i),r&&"handDrawn"!==e.look&&f.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(t){return H.polygon(e,o,t)},n}async function Q(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:s,halfPadding:h}=await c(t,e,d(e)),p=s.width/2+h;let f;const{cssStyles:g}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=t.circle(0,0,2*p,r);f=i.insert(()=>n,":first-child"),f.attr("class","basic label-container").attr("style",(0,a.KL)(g))}else f=i.insert("circle",":first-child").attr("class","basic label-container").attr("style",n).attr("r",p).attr("cx",0).attr("cy",0);return u(e,f),e.intersect=function(t){return o.Rm.info("Circle intersect",e,p,t),H.circle(e,p,t)},i}function J(t){const e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=2*t;return`M ${-n/2*e},${n/2*r} L ${n/2*e},${-n/2*r}\n M ${n/2*e},${n/2*r} L ${-n/2*e},${-n/2*r}`}function tt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r,e.label="";const i=t.insert("g").attr("class",d(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,c=l.A.svg(i),h=A(e,{});"handDrawn"!==e.look&&(h.roughness=0,h.fillStyle="solid");const p=c.circle(0,0,2*a,h),f=J(a),g=c.path(f,h),m=i.insert(()=>p,":first-child");return m.insert(()=>g),s&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",s),n&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",n),u(e,m),e.intersect=function(t){o.Rm.info("crossedCircle intersect",e,{radius:a,point:t});return H.circle(e,a,t)},i}function et(t,e,r,n=100,i=0,a=180){const o=[],s=i*Math.PI/180,l=(a*Math.PI/180-s)/(n-1);for(let c=0;c<n;c++){const n=s+c*l,i=t+r*Math.cos(n),a=e+r*Math.sin(n);o.push({x:-i,y:-a})}return o}async function rt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=a.width+(e.padding??0),h=a.height+(e.padding??0),f=Math.max(5,.1*h),{cssStyles:g}=e,m=[...et(s/2,-h/2,f,30,-90,0),{x:-s/2-f,y:f},...et(s/2+2*f,-f,f,20,-180,-270),...et(s/2+2*f,f,f,20,-90,-180),{x:-s/2-f,y:-h/2},...et(s/2,h/2,f,20,0,90)],y=[{x:s/2,y:-h/2-f},{x:-s/2,y:-h/2-f},...et(s/2,-h/2,f,20,-90,0),{x:-s/2-f,y:-f},...et(s/2+.1*s,-f,f,20,-180,-270),...et(s/2+.1*s,f,f,20,-90,-180),{x:-s/2-f,y:h/2},...et(s/2,h/2,f,20,0,90),{x:-s/2,y:h/2+f},{x:s/2,y:h/2+f}],x=l.A.svg(i),b=A(e,{fill:"none"});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=p(m).replace("Z",""),C=x.path(k,b),w=p(y),_=x.path(w,{...b}),v=i.insert("g",":first-child");return v.insert(()=>_,":first-child").attr("stroke-opacity",0),v.insert(()=>C,":first-child"),v.attr("class","text"),g&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",g),n&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${f}, 0)`),o.attr("transform",`translate(${-s/2+f-(a.x-(a.left??0))},${-h/2+(e.padding??0)/2-(a.y-(a.top??0))})`),u(e,v),e.intersect=function(t){return H.polygon(e,y,t)},i}function nt(t,e,r,n=100,i=0,a=180){const o=[],s=i*Math.PI/180,l=(a*Math.PI/180-s)/(n-1);for(let c=0;c<n;c++){const n=s+c*l,i=t+r*Math.cos(n),a=e+r*Math.sin(n);o.push({x:i,y:a})}return o}async function it(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=a.width+(e.padding??0),h=a.height+(e.padding??0),f=Math.max(5,.1*h),{cssStyles:g}=e,m=[...nt(s/2,-h/2,f,20,-90,0),{x:s/2+f,y:-f},...nt(s/2+2*f,-f,f,20,-180,-270),...nt(s/2+2*f,f,f,20,-90,-180),{x:s/2+f,y:h/2},...nt(s/2,h/2,f,20,0,90)],y=[{x:-s/2,y:-h/2-f},{x:s/2,y:-h/2-f},...nt(s/2,-h/2,f,20,-90,0),{x:s/2+f,y:-f},...nt(s/2+2*f,-f,f,20,-180,-270),...nt(s/2+2*f,f,f,20,-90,-180),{x:s/2+f,y:h/2},...nt(s/2,h/2,f,20,0,90),{x:s/2,y:h/2+f},{x:-s/2,y:h/2+f}],x=l.A.svg(i),b=A(e,{fill:"none"});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=p(m).replace("Z",""),C=x.path(k,b),w=p(y),_=x.path(w,{...b}),v=i.insert("g",":first-child");return v.insert(()=>_,":first-child").attr("stroke-opacity",0),v.insert(()=>C,":first-child"),v.attr("class","text"),g&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",g),n&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${-f}, 0)`),o.attr("transform",`translate(${-s/2+(e.padding??0)/2-(a.x-(a.left??0))},${-h/2+(e.padding??0)/2-(a.y-(a.top??0))})`),u(e,v),e.intersect=function(t){return H.polygon(e,y,t)},i}function at(t,e,r,n=100,i=0,a=180){const o=[],s=i*Math.PI/180,l=(a*Math.PI/180-s)/(n-1);for(let c=0;c<n;c++){const n=s+c*l,i=t+r*Math.cos(n),a=e+r*Math.sin(n);o.push({x:-i,y:-a})}return o}async function ot(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=a.width+(e.padding??0),h=a.height+(e.padding??0),f=Math.max(5,.1*h),{cssStyles:g}=e,m=[...at(s/2,-h/2,f,30,-90,0),{x:-s/2-f,y:f},...at(s/2+2*f,-f,f,20,-180,-270),...at(s/2+2*f,f,f,20,-90,-180),{x:-s/2-f,y:-h/2},...at(s/2,h/2,f,20,0,90)],y=[...at(-s/2+f+f/2,-h/2,f,20,-90,-180),{x:s/2-f/2,y:f},...at(-s/2-f/2,-f,f,20,0,90),...at(-s/2-f/2,f,f,20,-90,0),{x:s/2-f/2,y:-f},...at(-s/2+f+f/2,h/2,f,30,-180,-270)],x=[{x:s/2,y:-h/2-f},{x:-s/2,y:-h/2-f},...at(s/2,-h/2,f,20,-90,0),{x:-s/2-f,y:-f},...at(s/2+2*f,-f,f,20,-180,-270),...at(s/2+2*f,f,f,20,-90,-180),{x:-s/2-f,y:h/2},...at(s/2,h/2,f,20,0,90),{x:-s/2,y:h/2+f},{x:s/2-f-f/2,y:h/2+f},...at(-s/2+f+f/2,-h/2,f,20,-90,-180),{x:s/2-f/2,y:f},...at(-s/2-f/2,-f,f,20,0,90),...at(-s/2-f/2,f,f,20,-90,0),{x:s/2-f/2,y:-f},...at(-s/2+f+f/2,h/2,f,30,-180,-270)],b=l.A.svg(i),k=A(e,{fill:"none"});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const C=p(m).replace("Z",""),w=b.path(C,k),_=p(y).replace("Z",""),v=b.path(_,k),T=p(x),M=b.path(T,{...k}),B=i.insert("g",":first-child");return B.insert(()=>M,":first-child").attr("stroke-opacity",0),B.insert(()=>w,":first-child"),B.insert(()=>v,":first-child"),B.attr("class","text"),g&&"handDrawn"!==e.look&&B.selectAll("path").attr("style",g),n&&"handDrawn"!==e.look&&B.selectAll("path").attr("style",n),B.attr("transform",`translate(${f-f/4}, 0)`),o.attr("transform",`translate(${-s/2+(e.padding??0)/2-(a.x-(a.left??0))},${-h/2+(e.padding??0)/2-(a.y-(a.top??0))})`),u(e,B),e.intersect=function(t){return H.polygon(e,x,t)},i}async function st(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=Math.max(80,1.25*(a.width+2*(e.padding??0)),e?.width??0),s=Math.max(20,a.height+2*(e.padding??0),e?.height??0),h=s/2,{cssStyles:f}=e,m=l.A.svg(i),y=A(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const x=o-h,b=s/4,k=[{x:x,y:0},{x:b,y:0},{x:0,y:s/2},{x:b,y:s},{x:x,y:s},...g(-x,-s/2,h,50,270,90)],C=p(k),w=m.path(C,y),_=i.insert(()=>w,":first-child");return _.attr("class","basic label-container"),f&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",f),n&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",n),_.attr("transform",`translate(${-o/2}, ${-s/2})`),u(e,_),e.intersect=function(t){return H.polygon(e,k,t)},i}(0,o.K2)(U,"anchor"),(0,o.K2)(Y,"generateArcPoints"),(0,o.K2)(G,"bowTieRect"),(0,o.K2)(V,"insertPolygonShape"),(0,o.K2)(Z,"card"),(0,o.K2)(X,"choice"),(0,o.K2)(Q,"circle"),(0,o.K2)(J,"createLine"),(0,o.K2)(tt,"crossedCircle"),(0,o.K2)(et,"generateCirclePoints"),(0,o.K2)(rt,"curlyBraceLeft"),(0,o.K2)(nt,"generateCirclePoints"),(0,o.K2)(it,"curlyBraceRight"),(0,o.K2)(at,"generateCirclePoints"),(0,o.K2)(ot,"curlyBraces"),(0,o.K2)(st,"curvedTrapezoid");var lt=(0,o.K2)((t,e,r,n,i,a)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,"l0,"+-n].join(" "),"createCylinderPathD"),ct=(0,o.K2)((t,e,r,n,i,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,"l0,"+-n].join(" "),"createOuterCylinderPathD"),ht=(0,o.K2)((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function ut(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:o,label:s}=await c(t,e,d(e)),h=Math.max(o.width+e.padding,e.width??0),p=h/2,f=p/(2.5+h/50),g=Math.max(o.height+f+e.padding,e.height??0);let m;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=ct(0,0,h,g,p,f),n=ht(0,f,h,g,p,f),a=t.path(r,A(e,{})),o=t.path(n,A(e,{fill:"none"}));m=i.insert(()=>o,":first-child"),m=i.insert(()=>a,":first-child"),m.attr("class","basic label-container"),y&&m.attr("style",y)}else{const t=lt(0,0,h,g,p,f);m=i.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,a.KL)(y)).attr("style",n)}return m.attr("label-offset-y",f),m.attr("transform",`translate(${-h/2}, ${-(g/2+f)})`),u(e,m),s.attr("transform",`translate(${-o.width/2-(o.x-(o.left??0))}, ${-o.height/2+(e.padding??0)/1.5-(o.y-(o.top??0))})`),e.intersect=function(t){const r=H.rect(e,t),n=r.x-(e.x??0);if(0!=p&&(Math.abs(n)<(e.width??0)/2||Math.abs(n)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-f)){let i=f*f*(1-n*n/(p*p));i>0&&(i=Math.sqrt(i)),i=f-i,t.y-(e.y??0)>0&&(i=-i),r.y+=i}return r},i}async function dt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=a.width+e.padding,h=a.height+e.padding,p=.2*h,f=-s/2,g=-h/2-p/2,{cssStyles:m}=e,y=l.A.svg(i),x=A(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=[{x:f,y:g+p},{x:-f,y:g+p},{x:-f,y:-g},{x:f,y:-g},{x:f,y:g},{x:-f,y:g},{x:-f,y:g+p}],k=y.polygon(b.map(t=>[t.x,t.y]),x),C=i.insert(()=>k,":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),n&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",n),o.attr("transform",`translate(${f+(e.padding??0)/2-(a.x-(a.left??0))}, ${g+p+(e.padding??0)/2-(a.y-(a.top??0))})`),u(e,C),e.intersect=function(t){return H.rect(e,t)},i}async function pt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:s,halfPadding:h}=await c(t,e,d(e)),p=s.width/2+h+5,f=s.width/2+h;let g;const{cssStyles:m}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{roughness:.2,strokeWidth:2.5}),n=A(e,{roughness:.2,strokeWidth:1.5}),o=t.circle(0,0,2*p,r),s=t.circle(0,0,2*f,n);g=i.insert("g",":first-child"),g.attr("class",(0,a.KL)(e.cssClasses)).attr("style",(0,a.KL)(m)),g.node()?.appendChild(o),g.node()?.appendChild(s)}else{g=i.insert("g",":first-child");const t=g.insert("circle",":first-child"),e=g.insert("circle");g.attr("class","basic label-container").attr("style",n),t.attr("class","outer-circle").attr("style",n).attr("r",p).attr("cx",0).attr("cy",0),e.attr("class","inner-circle").attr("style",n).attr("r",f).attr("cx",0).attr("cy",0)}return u(e,g),e.intersect=function(t){return o.Rm.info("DoubleCircle intersect",e,p,t),H.circle(e,p,t)},i}function ft(t,e,{config:{themeVariables:r}}){const{labelStyles:n,nodeStyles:i}=S(e);e.label="",e.labelStyle=n;const a=t.insert("g").attr("class",d(e)).attr("id",e.domId??e.id),{cssStyles:s}=e,c=l.A.svg(a),{nodeBorder:h}=r,p=A(e,{fillStyle:"solid"});"handDrawn"!==e.look&&(p.roughness=0);const f=c.circle(0,0,14,p),g=a.insert(()=>f,":first-child");return g.selectAll("path").attr("style",`fill: ${h} !important;`),s&&s.length>0&&"handDrawn"!==e.look&&g.selectAll("path").attr("style",s),i&&"handDrawn"!==e.look&&g.selectAll("path").attr("style",i),u(e,g),e.intersect=function(t){o.Rm.info("filledCircle intersect",e,{radius:7,point:t});return H.circle(e,7,t)},a}async function gt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:s}=await c(t,e,d(e)),h=a.width+(e.padding??0),f=h+a.height,g=h+a.height,m=[{x:0,y:-f},{x:g,y:-f},{x:g/2,y:0}],{cssStyles:y}=e,x=l.A.svg(i),b=A(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=p(m),C=x.path(k,b),w=i.insert(()=>C,":first-child").attr("transform",`translate(${-f/2}, ${f/2})`);return y&&"handDrawn"!==e.look&&w.selectChildren("path").attr("style",y),n&&"handDrawn"!==e.look&&w.selectChildren("path").attr("style",n),e.width=h,e.height=f,u(e,w),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-f/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(t){return o.Rm.info("Triangle intersect",e,m,t),H.polygon(e,m,t)},i}function mt(t,e,{dir:r,config:{state:n,themeVariables:i}}){const{nodeStyles:a}=S(e);e.label="";const o=t.insert("g").attr("class",d(e)).attr("id",e.domId??e.id),{cssStyles:s}=e;let c=Math.max(70,e?.width??0),h=Math.max(10,e?.height??0);"LR"===r&&(c=Math.max(10,e?.width??0),h=Math.max(70,e?.height??0));const p=-1*c/2,f=-1*h/2,g=l.A.svg(o),m=A(e,{stroke:i.lineColor,fill:i.lineColor});"handDrawn"!==e.look&&(m.roughness=0,m.fillStyle="solid");const y=g.rectangle(p,f,c,h,m),x=o.insert(()=>y,":first-child");s&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",s),a&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",a),u(e,x);const b=n?.padding??0;return e.width&&e.height&&(e.width+=b/2||0,e.height+=b/2||0),e.intersect=function(t){return H.rect(e,t)},o}async function yt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),s=Math.max(80,a.width+2*(e.padding??0),e?.width??0),h=Math.max(50,a.height+2*(e.padding??0),e?.height??0),f=h/2,{cssStyles:m}=e,y=l.A.svg(i),x=A(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=[{x:-s/2,y:-h/2},{x:s/2-f,y:-h/2},...g(-s/2+f,0,f,50,90,270),{x:s/2-f,y:h/2},{x:-s/2,y:h/2}],k=p(b),C=y.path(k,x),w=i.insert(()=>C,":first-child");return w.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&w.selectChildren("path").attr("style",m),n&&"handDrawn"!==e.look&&w.selectChildren("path").attr("style",n),u(e,w),e.intersect=function(t){o.Rm.info("Pill intersect",e,{radius:f,point:t});return H.polygon(e,b,t)},i}(0,o.K2)(ut,"cylinder"),(0,o.K2)(dt,"dividedRectangle"),(0,o.K2)(pt,"doublecircle"),(0,o.K2)(ft,"filledCircle"),(0,o.K2)(gt,"flippedTriangle"),(0,o.K2)(mt,"forkJoin"),(0,o.K2)(yt,"halfRoundedRectangle");var xt=(0,o.K2)((t,e,r,n,i)=>[`M${t+i},${e}`,`L${t+r-i},${e}`,`L${t+r},${e-n/2}`,`L${t+r-i},${e-n}`,`L${t+i},${e-n}`,`L${t},${e-n/2}`,"Z"].join(" "),"createHexagonPathD");async function bt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=a.height+e.padding,s=o/4,h=a.width+2*s+e.padding,p=[{x:s,y:0},{x:h-s,y:0},{x:h,y:-o/2},{x:h-s,y:-o},{x:s,y:-o},{x:0,y:-o/2}];let f;const{cssStyles:g}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=xt(0,0,h,o,s),a=t.path(n,r);f=i.insert(()=>a,":first-child").attr("transform",`translate(${-h/2}, ${o/2})`),g&&f.attr("style",g)}else f=V(i,h,o,p);return n&&f.attr("style",n),e.width=h,e.height=o,u(e,f),e.intersect=function(t){return H.polygon(e,p,t)},i}async function kt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.label="",e.labelStyle=r;const{shapeSvg:i}=await c(t,e,d(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:h}=e,f=l.A.svg(i),g=A(e,{});"handDrawn"!==e.look&&(g.roughness=0,g.fillStyle="solid");const m=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],y=p(m),x=f.path(y,g),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),h&&"handDrawn"!==e.look&&b.selectChildren("path").attr("style",h),n&&"handDrawn"!==e.look&&b.selectChildren("path").attr("style",n),b.attr("transform",`translate(${-a/2}, ${-s/2})`),u(e,b),e.intersect=function(t){o.Rm.info("Pill intersect",e,{points:m});return H.polygon(e,m,t)},i}async function Ct(t,e,{config:{themeVariables:r,flowchart:n}}){const{labelStyles:a}=S(e);e.labelStyle=a;const s=e.assetHeight??48,h=e.assetWidth??48,d=Math.max(s,h),p=n?.wrappingWidth;e.width=Math.max(d,p??0);const{shapeSvg:f,bbox:g,label:m}=await c(t,e,"icon-shape default"),y="t"===e.pos,x=d,b=d,{nodeBorder:k}=r,{stylesMap:C}=w(e),_=-b/2,v=-x/2,T=e.label?8:0,M=l.A.svg(f),B=A(e,{stroke:"none",fill:"none"});"handDrawn"!==e.look&&(B.roughness=0,B.fillStyle="solid");const L=M.rectangle(_,v,b,x,B),F=Math.max(b,g.width),$=x+g.height+T,E=M.rectangle(-F/2,-$/2,F,$,{...B,fill:"transparent",stroke:"none"}),D=f.insert(()=>L,":first-child"),N=f.insert(()=>E);if(e.icon){const t=f.append("g");t.html(`<g>${await(0,i.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}</g>`);const r=t.node().getBBox(),n=r.width,a=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-n/2-o},${y?g.height/2+T/2-a/2-s:-g.height/2-T/2-a/2-s})`),t.attr("style",`color: ${C.get("stroke")??k};`)}return m.attr("transform",`translate(${-g.width/2-(g.x-(g.left??0))},${y?-$/2:$/2-g.height})`),D.attr("transform",`translate(0,${y?g.height/2+T/2:-g.height/2-T/2})`),u(e,N),e.intersect=function(t){if(o.Rm.info("iconSquare intersect",e,t),!e.label)return H.rect(e,t);const r=e.x??0,n=e.y??0,i=e.height??0;let a=[];a=y?[{x:r-g.width/2,y:n-i/2},{x:r+g.width/2,y:n-i/2},{x:r+g.width/2,y:n-i/2+g.height+T},{x:r+b/2,y:n-i/2+g.height+T},{x:r+b/2,y:n+i/2},{x:r-b/2,y:n+i/2},{x:r-b/2,y:n-i/2+g.height+T},{x:r-g.width/2,y:n-i/2+g.height+T}]:[{x:r-b/2,y:n-i/2},{x:r+b/2,y:n-i/2},{x:r+b/2,y:n-i/2+x},{x:r+g.width/2,y:n-i/2+x},{x:r+g.width/2/2,y:n+i/2},{x:r-g.width/2,y:n+i/2},{x:r-g.width/2,y:n-i/2+x},{x:r-b/2,y:n-i/2+x}];return H.polygon(e,a,t)},f}async function wt(t,e,{config:{themeVariables:r,flowchart:n}}){const{labelStyles:a}=S(e);e.labelStyle=a;const s=e.assetHeight??48,h=e.assetWidth??48,d=Math.max(s,h),p=n?.wrappingWidth;e.width=Math.max(d,p??0);const{shapeSvg:f,bbox:g,label:m}=await c(t,e,"icon-shape default"),y=e.label?8:0,x="t"===e.pos,{nodeBorder:b,mainBkg:k}=r,{stylesMap:C}=w(e),_=l.A.svg(f),v=A(e,{});"handDrawn"!==e.look&&(v.roughness=0,v.fillStyle="solid");const T=C.get("fill");v.stroke=T??k;const M=f.append("g");e.icon&&M.html(`<g>${await(0,i.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}</g>`);const B=M.node().getBBox(),L=B.width,F=B.height,$=B.x,E=B.y,D=Math.max(L,F)*Math.SQRT2+40,N=_.circle(0,0,D,v),O=Math.max(D,g.width),R=D+g.height+y,I=_.rectangle(-O/2,-R/2,O,R,{...v,fill:"transparent",stroke:"none"}),j=f.insert(()=>N,":first-child"),z=f.insert(()=>I);return M.attr("transform",`translate(${-L/2-$},${x?g.height/2+y/2-F/2-E:-g.height/2-y/2-F/2-E})`),M.attr("style",`color: ${C.get("stroke")??b};`),m.attr("transform",`translate(${-g.width/2-(g.x-(g.left??0))},${x?-R/2:R/2-g.height})`),j.attr("transform",`translate(0,${x?g.height/2+y/2:-g.height/2-y/2})`),u(e,z),e.intersect=function(t){o.Rm.info("iconSquare intersect",e,t);return H.rect(e,t)},f}async function _t(t,e,{config:{themeVariables:r,flowchart:n}}){const{labelStyles:a}=S(e);e.labelStyle=a;const s=e.assetHeight??48,h=e.assetWidth??48,d=Math.max(s,h),p=n?.wrappingWidth;e.width=Math.max(d,p??0);const{shapeSvg:f,bbox:g,halfPadding:m,label:y}=await c(t,e,"icon-shape default"),x="t"===e.pos,b=d+2*m,C=d+2*m,{nodeBorder:_,mainBkg:v}=r,{stylesMap:T}=w(e),M=-C/2,B=-b/2,L=e.label?8:0,F=l.A.svg(f),$=A(e,{});"handDrawn"!==e.look&&($.roughness=0,$.fillStyle="solid");const E=T.get("fill");$.stroke=E??v;const D=F.path(k(M,B,C,b,5),$),N=Math.max(C,g.width),O=b+g.height+L,R=F.rectangle(-N/2,-O/2,N,O,{...$,fill:"transparent",stroke:"none"}),I=f.insert(()=>D,":first-child").attr("class","icon-shape2"),j=f.insert(()=>R);if(e.icon){const t=f.append("g");t.html(`<g>${await(0,i.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}</g>`);const r=t.node().getBBox(),n=r.width,a=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-n/2-o},${x?g.height/2+L/2-a/2-s:-g.height/2-L/2-a/2-s})`),t.attr("style",`color: ${T.get("stroke")??_};`)}return y.attr("transform",`translate(${-g.width/2-(g.x-(g.left??0))},${x?-O/2:O/2-g.height})`),I.attr("transform",`translate(0,${x?g.height/2+L/2:-g.height/2-L/2})`),u(e,j),e.intersect=function(t){if(o.Rm.info("iconSquare intersect",e,t),!e.label)return H.rect(e,t);const r=e.x??0,n=e.y??0,i=e.height??0;let a=[];a=x?[{x:r-g.width/2,y:n-i/2},{x:r+g.width/2,y:n-i/2},{x:r+g.width/2,y:n-i/2+g.height+L},{x:r+C/2,y:n-i/2+g.height+L},{x:r+C/2,y:n+i/2},{x:r-C/2,y:n+i/2},{x:r-C/2,y:n-i/2+g.height+L},{x:r-g.width/2,y:n-i/2+g.height+L}]:[{x:r-C/2,y:n-i/2},{x:r+C/2,y:n-i/2},{x:r+C/2,y:n-i/2+b},{x:r+g.width/2,y:n-i/2+b},{x:r+g.width/2/2,y:n+i/2},{x:r-g.width/2,y:n+i/2},{x:r-g.width/2,y:n-i/2+b},{x:r-C/2,y:n-i/2+b}];return H.polygon(e,a,t)},f}async function vt(t,e,{config:{themeVariables:r,flowchart:n}}){const{labelStyles:a}=S(e);e.labelStyle=a;const s=e.assetHeight??48,h=e.assetWidth??48,d=Math.max(s,h),p=n?.wrappingWidth;e.width=Math.max(d,p??0);const{shapeSvg:f,bbox:g,halfPadding:m,label:y}=await c(t,e,"icon-shape default"),x="t"===e.pos,b=d+2*m,C=d+2*m,{nodeBorder:_,mainBkg:v}=r,{stylesMap:T}=w(e),M=-C/2,B=-b/2,L=e.label?8:0,F=l.A.svg(f),$=A(e,{});"handDrawn"!==e.look&&($.roughness=0,$.fillStyle="solid");const E=T.get("fill");$.stroke=E??v;const D=F.path(k(M,B,C,b,.1),$),N=Math.max(C,g.width),O=b+g.height+L,R=F.rectangle(-N/2,-O/2,N,O,{...$,fill:"transparent",stroke:"none"}),I=f.insert(()=>D,":first-child"),j=f.insert(()=>R);if(e.icon){const t=f.append("g");t.html(`<g>${await(0,i.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}</g>`);const r=t.node().getBBox(),n=r.width,a=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-n/2-o},${x?g.height/2+L/2-a/2-s:-g.height/2-L/2-a/2-s})`),t.attr("style",`color: ${T.get("stroke")??_};`)}return y.attr("transform",`translate(${-g.width/2-(g.x-(g.left??0))},${x?-O/2:O/2-g.height})`),I.attr("transform",`translate(0,${x?g.height/2+L/2:-g.height/2-L/2})`),u(e,j),e.intersect=function(t){if(o.Rm.info("iconSquare intersect",e,t),!e.label)return H.rect(e,t);const r=e.x??0,n=e.y??0,i=e.height??0;let a=[];a=x?[{x:r-g.width/2,y:n-i/2},{x:r+g.width/2,y:n-i/2},{x:r+g.width/2,y:n-i/2+g.height+L},{x:r+C/2,y:n-i/2+g.height+L},{x:r+C/2,y:n+i/2},{x:r-C/2,y:n+i/2},{x:r-C/2,y:n-i/2+g.height+L},{x:r-g.width/2,y:n-i/2+g.height+L}]:[{x:r-C/2,y:n-i/2},{x:r+C/2,y:n-i/2},{x:r+C/2,y:n-i/2+b},{x:r+g.width/2,y:n-i/2+b},{x:r+g.width/2/2,y:n+i/2},{x:r-g.width/2,y:n+i/2},{x:r-g.width/2,y:n-i/2+b},{x:r-C/2,y:n-i/2+b}];return H.polygon(e,a,t)},f}async function St(t,e,{config:{flowchart:r}}){const n=new Image;n.src=e?.img??"",await n.decode();const i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));e.imageAspectRatio=i/a;const{labelStyles:s}=S(e);e.labelStyle=s;const h=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;const d=Math.max(e.label?h??0:0,e?.assetWidth??i),p="on"===e.constraint&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:d,f="on"===e.constraint?p/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(p,h??0);const{shapeSvg:g,bbox:m,label:y}=await c(t,e,"image-shape default"),x="t"===e.pos,b=-p/2,k=-f/2,C=e.label?8:0,w=l.A.svg(g),_=A(e,{});"handDrawn"!==e.look&&(_.roughness=0,_.fillStyle="solid");const v=w.rectangle(b,k,p,f,_),T=Math.max(p,m.width),M=f+m.height+C,B=w.rectangle(-T/2,-M/2,T,M,{..._,fill:"none",stroke:"none"}),L=g.insert(()=>v,":first-child"),F=g.insert(()=>B);if(e.img){const t=g.append("image");t.attr("href",e.img),t.attr("width",p),t.attr("height",f),t.attr("preserveAspectRatio","none"),t.attr("transform",`translate(${-p/2},${x?M/2-f:-M/2})`)}return y.attr("transform",`translate(${-m.width/2-(m.x-(m.left??0))},${x?-f/2-m.height/2-C/2:f/2-m.height/2+C/2})`),L.attr("transform",`translate(0,${x?m.height/2+C/2:-m.height/2-C/2})`),u(e,F),e.intersect=function(t){if(o.Rm.info("iconSquare intersect",e,t),!e.label)return H.rect(e,t);const r=e.x??0,n=e.y??0,i=e.height??0;let a=[];a=x?[{x:r-m.width/2,y:n-i/2},{x:r+m.width/2,y:n-i/2},{x:r+m.width/2,y:n-i/2+m.height+C},{x:r+p/2,y:n-i/2+m.height+C},{x:r+p/2,y:n+i/2},{x:r-p/2,y:n+i/2},{x:r-p/2,y:n-i/2+m.height+C},{x:r-m.width/2,y:n-i/2+m.height+C}]:[{x:r-p/2,y:n-i/2},{x:r+p/2,y:n-i/2},{x:r+p/2,y:n-i/2+f},{x:r+m.width/2,y:n-i/2+f},{x:r+m.width/2/2,y:n+i/2},{x:r-m.width/2,y:n+i/2},{x:r-m.width/2,y:n-i/2+f},{x:r-p/2,y:n-i/2+f}];return H.polygon(e,a,t)},g}async function At(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=Math.max(a.width+2*(e.padding??0),e?.width??0),s=Math.max(a.height+2*(e.padding??0),e?.height??0),h=[{x:0,y:0},{x:o,y:0},{x:o+3*s/6,y:-s},{x:-3*s/6,y:-s}];let f;const{cssStyles:g}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=p(h),a=t.path(n,r);f=i.insert(()=>a,":first-child").attr("transform",`translate(${-o/2}, ${s/2})`),g&&f.attr("style",g)}else f=V(i,o,s,h);return n&&f.attr("style",n),e.width=o,e.height=s,u(e,f),e.intersect=function(t){return H.polygon(e,h,t)},i}async function Tt(t,e,r){const{labelStyles:n,nodeStyles:i}=S(e);e.labelStyle=n;const{shapeSvg:o,bbox:s}=await c(t,e,d(e)),h=Math.max(s.width+2*r.labelPaddingX,e?.width||0),p=Math.max(s.height+2*r.labelPaddingY,e?.height||0),f=-h/2,g=-p/2;let m,{rx:y,ry:x}=e;const{cssStyles:b}=e;if(r?.rx&&r.ry&&(y=r.rx,x=r.ry),"handDrawn"===e.look){const t=l.A.svg(o),r=A(e,{}),n=y||x?t.path(k(f,g,h,p,y||0),r):t.rectangle(f,g,h,p,r);m=o.insert(()=>n,":first-child"),m.attr("class","basic label-container").attr("style",(0,a.KL)(b))}else m=o.insert("rect",":first-child"),m.attr("class","basic label-container").attr("style",i).attr("rx",(0,a.KL)(y)).attr("ry",(0,a.KL)(x)).attr("x",f).attr("y",g).attr("width",h).attr("height",p);return u(e,m),e.intersect=function(t){return H.rect(e,t)},o}async function Mt(t,e){const{shapeSvg:r,bbox:n,label:i}=await c(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-n.width/2-(n.x-(n.left??0))}, ${-n.height/2-(n.y-(n.top??0))})`),u(e,a),e.intersect=function(t){return H.rect(e,t)},r}async function Bt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=Math.max(a.width+(e.padding??0),e?.width??0),s=Math.max(a.height+(e.padding??0),e?.height??0),h=[{x:0,y:0},{x:o+3*s/6,y:0},{x:o,y:-s},{x:-3*s/6,y:-s}];let f;const{cssStyles:g}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=p(h),a=t.path(n,r);f=i.insert(()=>a,":first-child").attr("transform",`translate(${-o/2}, ${s/2})`),g&&f.attr("style",g)}else f=V(i,o,s,h);return n&&f.attr("style",n),e.width=o,e.height=s,u(e,f),e.intersect=function(t){return H.polygon(e,h,t)},i}async function Lt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=Math.max(a.width+(e.padding??0),e?.width??0),s=Math.max(a.height+(e.padding??0),e?.height??0),h=[{x:-3*s/6,y:0},{x:o,y:0},{x:o+3*s/6,y:-s},{x:0,y:-s}];let f;const{cssStyles:g}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=p(h),a=t.path(n,r);f=i.insert(()=>a,":first-child").attr("transform",`translate(${-o/2}, ${s/2})`),g&&f.attr("style",g)}else f=V(i,o,s,h);return n&&f.attr("style",n),e.width=o,e.height=s,u(e,f),e.intersect=function(t){return H.polygon(e,h,t)},i}function Ft(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.label="",e.labelStyle=r;const i=t.insert("g").attr("class",d(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),c=Math.max(35,e?.height??0),h=[{x:s,y:0},{x:0,y:c+3.5},{x:s-14,y:c+3.5},{x:0,y:2*c},{x:s,y:c-3.5},{x:14,y:c-3.5}],f=l.A.svg(i),g=A(e,{});"handDrawn"!==e.look&&(g.roughness=0,g.fillStyle="solid");const m=p(h),y=f.path(m,g),x=i.insert(()=>y,":first-child");return a&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",a),n&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",n),x.attr("transform",`translate(-${s/2},${-c})`),u(e,x),e.intersect=function(t){o.Rm.info("lightningBolt intersect",e,t);return H.polygon(e,h,t)},i}(0,o.K2)(bt,"hexagon"),(0,o.K2)(kt,"hourglass"),(0,o.K2)(Ct,"icon"),(0,o.K2)(wt,"iconCircle"),(0,o.K2)(_t,"iconRounded"),(0,o.K2)(vt,"iconSquare"),(0,o.K2)(St,"imageSquare"),(0,o.K2)(At,"inv_trapezoid"),(0,o.K2)(Tt,"drawRect"),(0,o.K2)(Mt,"labelRect"),(0,o.K2)(Bt,"lean_left"),(0,o.K2)(Lt,"lean_right"),(0,o.K2)(Ft,"lightningBolt");var $t=(0,o.K2)((t,e,r,n,i,a,o)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,"l0,"+-n,`M${t},${e+a+o}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),Et=(0,o.K2)((t,e,r,n,i,a,o)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,"l0,"+-n,`M${t},${e+a+o}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),Dt=(0,o.K2)((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function Nt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:o,label:s}=await c(t,e,d(e)),h=Math.max(o.width+(e.padding??0),e.width??0),p=h/2,f=p/(2.5+h/50),g=Math.max(o.height+f+(e.padding??0),e.height??0),m=.1*g;let y;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=Et(0,0,h,g,p,f,m),n=Dt(0,f,h,g,p,f),a=A(e,{}),o=t.path(r,a),s=t.path(n,a);i.insert(()=>s,":first-child").attr("class","line"),y=i.insert(()=>o,":first-child"),y.attr("class","basic label-container"),x&&y.attr("style",x)}else{const t=$t(0,0,h,g,p,f,m);y=i.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,a.KL)(x)).attr("style",n)}return y.attr("label-offset-y",f),y.attr("transform",`translate(${-h/2}, ${-(g/2+f)})`),u(e,y),s.attr("transform",`translate(${-o.width/2-(o.x-(o.left??0))}, ${-o.height/2+f-(o.y-(o.top??0))})`),e.intersect=function(t){const r=H.rect(e,t),n=r.x-(e.x??0);if(0!=p&&(Math.abs(n)<(e.width??0)/2||Math.abs(n)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-f)){let i=f*f*(1-n*n/(p*p));i>0&&(i=Math.sqrt(i)),i=f-i,t.y-(e.y??0)>0&&(i=-i),r.y+=i}return r},i}async function Ot(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=Math.max(a.width+2*(e.padding??0),e?.width??0),h=Math.max(a.height+2*(e.padding??0),e?.height??0),p=h/4,g=h+p,{cssStyles:m}=e,y=l.A.svg(i),x=A(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=[{x:-s/2-s/2*.1,y:-g/2},{x:-s/2-s/2*.1,y:g/2},...f(-s/2-s/2*.1,g/2,s/2+s/2*.1,g/2,p,.8),{x:s/2+s/2*.1,y:-g/2},{x:-s/2-s/2*.1,y:-g/2},{x:-s/2,y:-g/2},{x:-s/2,y:g/2*1.1},{x:-s/2,y:-g/2}],k=y.polygon(b.map(t=>[t.x,t.y]),x),C=i.insert(()=>k,":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),n&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(0,${-p/2})`),o.attr("transform",`translate(${-s/2+(e.padding??0)+s/2*.1/2-(a.x-(a.left??0))},${-h/2+(e.padding??0)-p/2-(a.y-(a.top??0))})`),u(e,C),e.intersect=function(t){return H.polygon(e,b,t)},i}async function Rt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=Math.max(a.width+2*(e.padding??0),e?.width??0),h=Math.max(a.height+2*(e.padding??0),e?.height??0),f=-s/2,g=-h/2,{cssStyles:m}=e,y=l.A.svg(i),x=A(e,{}),b=[{x:f-5,y:g+5},{x:f-5,y:g+h+5},{x:f+s-5,y:g+h+5},{x:f+s-5,y:g+h},{x:f+s,y:g+h},{x:f+s,y:g+h-5},{x:f+s+5,y:g+h-5},{x:f+s+5,y:g-5},{x:f+5,y:g-5},{x:f+5,y:g},{x:f,y:g},{x:f,y:g+5}],k=[{x:f,y:g+5},{x:f+s-5,y:g+5},{x:f+s-5,y:g+h},{x:f+s,y:g+h},{x:f+s,y:g},{x:f,y:g}];"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const C=p(b),w=y.path(C,x),_=p(k),v=y.path(_,{...x,fill:"none"}),T=i.insert(()=>v,":first-child");return T.insert(()=>w,":first-child"),T.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",m),n&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",n),o.attr("transform",`translate(${-a.width/2-5-(a.x-(a.left??0))}, ${-a.height/2+5-(a.y-(a.top??0))})`),u(e,T),e.intersect=function(t){return H.polygon(e,b,t)},i}async function It(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=Math.max(a.width+2*(e.padding??0),e?.width??0),h=Math.max(a.height+2*(e.padding??0),e?.height??0),g=h/4,m=h+g,y=-s/2,x=-m/2,{cssStyles:b}=e,k=f(y-5,x+m+5,y+s-5,x+m+5,g,.8),C=k?.[k.length-1],w=[{x:y-5,y:x+5},{x:y-5,y:x+m+5},...k,{x:y+s-5,y:C.y-5},{x:y+s,y:C.y-5},{x:y+s,y:C.y-10},{x:y+s+5,y:C.y-10},{x:y+s+5,y:x-5},{x:y+5,y:x-5},{x:y+5,y:x},{x:y,y:x},{x:y,y:x+5}],_=[{x:y,y:x+5},{x:y+s-5,y:x+5},{x:y+s-5,y:C.y-5},{x:y+s,y:C.y-5},{x:y+s,y:x},{x:y,y:x}],v=l.A.svg(i),T=A(e,{});"handDrawn"!==e.look&&(T.roughness=0,T.fillStyle="solid");const M=p(w),B=v.path(M,T),L=p(_),F=v.path(L,T),$=i.insert(()=>B,":first-child");return $.insert(()=>F),$.attr("class","basic label-container"),b&&"handDrawn"!==e.look&&$.selectAll("path").attr("style",b),n&&"handDrawn"!==e.look&&$.selectAll("path").attr("style",n),$.attr("transform",`translate(0,${-g/2})`),o.attr("transform",`translate(${-a.width/2-5-(a.x-(a.left??0))}, ${-a.height/2+5-g/2-(a.y-(a.top??0))})`),u(e,$),e.intersect=function(t){return H.polygon(e,w,t)},i}async function jt(t,e,{config:{themeVariables:r}}){const{labelStyles:n,nodeStyles:i}=S(e);e.labelStyle=n;e.useHtmlLabels||!1!==(0,o.zj)().flowchart?.htmlLabels||(e.centerLabel=!0);const{shapeSvg:a,bbox:s}=await c(t,e,d(e)),h=Math.max(s.width+2*(e.padding??0),e?.width??0),p=Math.max(s.height+2*(e.padding??0),e?.height??0),f=-h/2,g=-p/2,{cssStyles:m}=e,y=l.A.svg(a),x=A(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=y.rectangle(f,g,h,p,x),k=a.insert(()=>b,":first-child");return k.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&k.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&k.selectAll("path").attr("style",i),u(e,k),e.intersect=function(t){return H.rect(e,t)},a}(0,o.K2)(Nt,"linedCylinder"),(0,o.K2)(Ot,"linedWaveEdgedRect"),(0,o.K2)(Rt,"multiRect"),(0,o.K2)(It,"multiWaveEdgedRectangle"),(0,o.K2)(jt,"note");var zt=(0,o.K2)((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");async function Pt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),s=a.width+e.padding+(a.height+e.padding),h=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];let p;const{cssStyles:f}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=zt(0,0,s),a=t.path(n,r);p=i.insert(()=>a,":first-child").attr("transform",`translate(${-s/2}, ${s/2})`),f&&p.attr("style",f)}else p=V(i,s,s,h);return n&&p.attr("style",n),u(e,p),e.intersect=function(t){return o.Rm.debug("APA12 Intersect called SPLIT\npoint:",t,"\nnode:\n",e,"\nres:",H.polygon(e,h,t)),H.polygon(e,h,t)},i}async function Kt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=-Math.max(a.width+(e.padding??0),e?.width??0)/2,h=-Math.max(a.height+(e.padding??0),e?.height??0)/2,f=h/2,g=[{x:s+f,y:h},{x:s,y:0},{x:s+f,y:-h},{x:-s,y:-h},{x:-s,y:h}],{cssStyles:m}=e,y=l.A.svg(i),x=A(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=p(g),k=y.path(b,x),C=i.insert(()=>k,":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),n&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${-f/2},0)`),o.attr("transform",`translate(${-f/2-a.width/2-(a.x-(a.left??0))}, ${-a.height/2-(a.y-(a.top??0))})`),u(e,C),e.intersect=function(t){return H.polygon(e,g,t)},i}async function qt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);let i;e.labelStyle=r,i=e.cssClasses?"node "+e.cssClasses:"node default";const a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),c=a.insert("g"),h=a.insert("g").attr("class","label").attr("style",n),d=e.description,p=e.label,f=h.node().appendChild(await b(p,e.labelStyle,!0,!0));let g={width:0,height:0};if((0,o._3)((0,o.D7)()?.flowchart?.htmlLabels)){const t=f.children[0],e=(0,s.Ltv)(f);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}o.Rm.info("Text 2",d);const m=d||[],y=f.getBBox(),x=h.node().appendChild(await b(m.join?m.join("<br/>"):m,e.labelStyle,!0,!0)),C=x.children[0],w=(0,s.Ltv)(x);g=C.getBoundingClientRect(),w.attr("width",g.width),w.attr("height",g.height);const _=(e.padding||0)/2;(0,s.Ltv)(x).attr("transform","translate( "+(g.width>y.width?0:(y.width-g.width)/2)+", "+(y.height+_+5)+")"),(0,s.Ltv)(f).attr("transform","translate( "+(g.width<y.width?0:-(y.width-g.width)/2)+", 0)"),g=h.node().getBBox(),h.attr("transform","translate("+-g.width/2+", "+(-g.height/2-_+3)+")");const v=g.width+(e.padding||0),T=g.height+(e.padding||0),M=-g.width/2-_,B=-g.height/2-_;let L,F;if("handDrawn"===e.look){const t=l.A.svg(a),r=A(e,{}),n=t.path(k(M,B,v,T,e.rx||0),r),i=t.line(-g.width/2-_,-g.height/2-_+y.height+_,g.width/2+_,-g.height/2-_+y.height+_,r);F=a.insert(()=>(o.Rm.debug("Rough node insert CXC",n),i),":first-child"),L=a.insert(()=>(o.Rm.debug("Rough node insert CXC",n),n),":first-child")}else L=c.insert("rect",":first-child"),F=c.insert("line"),L.attr("class","outer title-state").attr("style",n).attr("x",-g.width/2-_).attr("y",-g.height/2-_).attr("width",g.width+(e.padding||0)).attr("height",g.height+(e.padding||0)),F.attr("class","divider").attr("x1",-g.width/2-_).attr("x2",g.width/2+_).attr("y1",-g.height/2-_+y.height+_).attr("y2",-g.height/2-_+y.height+_);return u(e,L),e.intersect=function(t){return H.rect(e,t)},a}async function Wt(t,e){return Tt(t,e,{rx:5,ry:5,classes:"",labelPaddingX:1*(e?.padding||0),labelPaddingY:1*(e?.padding||0)})}async function Ht(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:o,label:s}=await c(t,e,d(e)),h=e?.padding??0,p=Math.max(o.width+2*(e.padding??0),e?.width??0),f=Math.max(o.height+2*(e.padding??0),e?.height??0),g=-o.width/2-h,m=-o.height/2-h,{cssStyles:y}=e,x=l.A.svg(i),b=A(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:g,y:m},{x:g+p+8,y:m},{x:g+p+8,y:m+f},{x:g-8,y:m+f},{x:g-8,y:m},{x:g,y:m},{x:g,y:m+f}],C=x.polygon(k.map(t=>[t.x,t.y]),b),w=i.insert(()=>C,":first-child");return w.attr("class","basic label-container").attr("style",(0,a.KL)(y)),n&&"handDrawn"!==e.look&&w.selectAll("path").attr("style",n),y&&"handDrawn"!==e.look&&w.selectAll("path").attr("style",n),s.attr("transform",`translate(${-p/2+4+(e.padding??0)-(o.x-(o.left??0))},${-f/2+(e.padding??0)-(o.y-(o.top??0))})`),u(e,w),e.intersect=function(t){return H.rect(e,t)},i}async function Ut(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=Math.max(a.width+2*(e.padding??0),e?.width??0),h=Math.max(a.height+2*(e.padding??0),e?.height??0),f=-s/2,g=-h/2,{cssStyles:m}=e,y=l.A.svg(i),x=A(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=[{x:f,y:g},{x:f,y:g+h},{x:f+s,y:g+h},{x:f+s,y:g-h/2}],k=p(b),C=y.path(k,x),w=i.insert(()=>C,":first-child");return w.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&w.selectChildren("path").attr("style",m),n&&"handDrawn"!==e.look&&w.selectChildren("path").attr("style",n),w.attr("transform",`translate(0, ${h/4})`),o.attr("transform",`translate(${-s/2+(e.padding??0)-(a.x-(a.left??0))}, ${-h/4+(e.padding??0)-(a.y-(a.top??0))})`),u(e,w),e.intersect=function(t){return H.polygon(e,b,t)},i}async function Yt(t,e){return Tt(t,e,{rx:0,ry:0,classes:"",labelPaddingX:2*(e?.padding||0),labelPaddingY:1*(e?.padding||0)})}async function Gt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:o}=await c(t,e,d(e)),s=o.height+e.padding,h=o.width+s/4+e.padding;let p;const{cssStyles:f}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=k(-h/2,-s/2,h,s,s/2),o=t.path(n,r);p=i.insert(()=>o,":first-child"),p.attr("class","basic label-container").attr("style",(0,a.KL)(f))}else p=i.insert("rect",":first-child"),p.attr("class","basic label-container").attr("style",n).attr("rx",s/2).attr("ry",s/2).attr("x",-h/2).attr("y",-s/2).attr("width",h).attr("height",s);return u(e,p),e.intersect=function(t){return H.rect(e,t)},i}async function Vt(t,e){return Tt(t,e,{rx:5,ry:5,classes:"flowchart-node"})}function Zt(t,e,{config:{themeVariables:r}}){const{labelStyles:n,nodeStyles:i}=S(e);e.labelStyle=n;const{cssStyles:a}=e,{lineColor:o,stateBorder:s,nodeBorder:c}=r,h=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),d=l.A.svg(h),p=A(e,{});"handDrawn"!==e.look&&(p.roughness=0,p.fillStyle="solid");const f=d.circle(0,0,14,{...p,stroke:o,strokeWidth:2}),g=s??c,m=d.circle(0,0,5,{...p,fill:g,stroke:g,strokeWidth:2,fillStyle:"solid"}),y=h.insert(()=>f,":first-child");return y.insert(()=>m),a&&y.selectAll("path").attr("style",a),i&&y.selectAll("path").attr("style",i),u(e,y),e.intersect=function(t){return H.circle(e,7,t)},h}function Xt(t,e,{config:{themeVariables:r}}){const{lineColor:n}=r,i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let a;if("handDrawn"===e.look){const t=l.A.svg(i).circle(0,0,14,C(n));a=i.insert(()=>t),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else a=i.insert("circle",":first-child"),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return u(e,a),e.intersect=function(t){return H.circle(e,7,t)},i}async function Qt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:o}=await c(t,e,d(e)),s=(e?.padding||0)/2,h=o.width+e.padding,p=o.height+e.padding,f=-o.width/2-s,g=-o.height/2-s,m=[{x:0,y:0},{x:h,y:0},{x:h,y:-p},{x:0,y:-p},{x:0,y:0},{x:-8,y:0},{x:h+8,y:0},{x:h+8,y:-p},{x:-8,y:-p},{x:-8,y:0}];if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=t.rectangle(f-8,g,h+16,p,r),o=t.line(f,g,f,g+p,r),s=t.line(f+h,g,f+h,g+p,r);i.insert(()=>o,":first-child"),i.insert(()=>s,":first-child");const c=i.insert(()=>n,":first-child"),{cssStyles:d}=e;c.attr("class","basic label-container").attr("style",(0,a.KL)(d)),u(e,c)}else{const t=V(i,h,p,m);n&&t.attr("style",n),u(e,t)}return e.intersect=function(t){return H.polygon(e,m,t)},i}async function Jt(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=Math.max(a.width+2*(e.padding??0),e?.width??0),s=Math.max(a.height+2*(e.padding??0),e?.height??0),h=-o/2,f=-s/2,g=.2*s,m=.2*s,{cssStyles:y}=e,x=l.A.svg(i),b=A(e,{}),k=[{x:h-g/2,y:f},{x:h+o+g/2,y:f},{x:h+o+g/2,y:f+s},{x:h-g/2,y:f+s}],C=[{x:h+o-g/2,y:f+s},{x:h+o+g/2,y:f+s},{x:h+o+g/2,y:f+s-m}];"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const w=p(k),_=x.path(w,b),v=p(C),T=x.path(v,{...b,fillStyle:"solid"}),M=i.insert(()=>T,":first-child");return M.insert(()=>_,":first-child"),M.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",y),n&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",n),u(e,M),e.intersect=function(t){return H.polygon(e,k,t)},i}async function te(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=Math.max(a.width+2*(e.padding??0),e?.width??0),h=Math.max(a.height+2*(e.padding??0),e?.height??0),g=h/4,m=.2*s,y=.2*h,x=h+g,{cssStyles:b}=e,k=l.A.svg(i),C=A(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const w=[{x:-s/2-s/2*.1,y:x/2},...f(-s/2-s/2*.1,x/2,s/2+s/2*.1,x/2,g,.8),{x:s/2+s/2*.1,y:-x/2},{x:-s/2-s/2*.1,y:-x/2}],_=-s/2+s/2*.1,v=-x/2-.4*y,T=[{x:_+s-m,y:1.4*(v+h)},{x:_+s,y:v+h-y},{x:_+s,y:.9*(v+h)},...f(_+s,1.3*(v+h),_+s-m,1.5*(v+h),.03*-h,.5)],M=p(w),B=k.path(M,C),L=p(T),F=k.path(L,{...C,fillStyle:"solid"}),$=i.insert(()=>F,":first-child");return $.insert(()=>B,":first-child"),$.attr("class","basic label-container"),b&&"handDrawn"!==e.look&&$.selectAll("path").attr("style",b),n&&"handDrawn"!==e.look&&$.selectAll("path").attr("style",n),$.attr("transform",`translate(0,${-g/2})`),o.attr("transform",`translate(${-s/2+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-g/2-(a.y-(a.top??0))})`),u(e,$),e.intersect=function(t){return H.polygon(e,w,t)},i}async function ee(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=Math.max(a.width+e.padding,e?.width||0),s=Math.max(a.height+e.padding,e?.height||0),l=-o/2,h=-s/2,p=i.insert("rect",":first-child");return p.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",l).attr("y",h).attr("width",o).attr("height",s),u(e,p),e.intersect=function(t){return H.rect(e,t)},i}(0,o.K2)(Pt,"question"),(0,o.K2)(Kt,"rect_left_inv_arrow"),(0,o.K2)(qt,"rectWithTitle"),(0,o.K2)(Wt,"roundedRect"),(0,o.K2)(Ht,"shadedProcess"),(0,o.K2)(Ut,"slopedRect"),(0,o.K2)(Yt,"squareRect"),(0,o.K2)(Gt,"stadium"),(0,o.K2)(Vt,"state"),(0,o.K2)(Zt,"stateEnd"),(0,o.K2)(Xt,"stateStart"),(0,o.K2)(Qt,"subroutine"),(0,o.K2)(Jt,"taggedRect"),(0,o.K2)(te,"taggedWaveEdgedRectangle"),(0,o.K2)(ee,"text");var re=(0,o.K2)((t,e,r,n,i,a)=>`M${t},${e}\n a${i},${a} 0,0,1 0,${-n}\n l${r},0\n a${i},${a} 0,0,1 0,${n}\n M${r},${-n}\n a${i},${a} 0,0,0 0,${n}\n l${-r},0`,"createCylinderPathD"),ne=(0,o.K2)((t,e,r,n,i,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),ie=(0,o.K2)((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD");async function ae(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:o,label:s,halfPadding:h}=await c(t,e,d(e)),p="neo"===e.look?2*h:h,f=o.height+p,g=f/2,m=g/(2.5+f/50),y=o.width+m+p,{cssStyles:x}=e;let b;if("handDrawn"===e.look){const t=l.A.svg(i),r=ne(0,0,y,f,m,g),n=ie(0,0,y,f,m,g),a=t.path(r,A(e,{})),o=t.path(n,A(e,{fill:"none"}));b=i.insert(()=>o,":first-child"),b=i.insert(()=>a,":first-child"),b.attr("class","basic label-container"),x&&b.attr("style",x)}else{const t=re(0,0,y,f,m,g);b=i.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,a.KL)(x)).attr("style",n),b.attr("class","basic label-container"),x&&b.selectAll("path").attr("style",x),n&&b.selectAll("path").attr("style",n)}return b.attr("label-offset-x",m),b.attr("transform",`translate(${-y/2}, ${f/2} )`),s.attr("transform",`translate(${-o.width/2-m-(o.x-(o.left??0))}, ${-o.height/2-(o.y-(o.top??0))})`),u(e,b),e.intersect=function(t){const r=H.rect(e,t),n=r.y-(e.y??0);if(0!=g&&(Math.abs(n)<(e.height??0)/2||Math.abs(n)==(e.height??0)/2&&Math.abs(r.x-(e.x??0))>(e.width??0)/2-m)){let i=m*m*(1-n*n/(g*g));0!=i&&(i=Math.sqrt(Math.abs(i))),i=m-i,t.x-(e.x??0)>0&&(i=-i),r.x+=i}return r},i}async function oe(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=a.width+e.padding,s=a.height+e.padding,h=[{x:-3*s/6,y:0},{x:o+3*s/6,y:0},{x:o,y:-s},{x:0,y:-s}];let f;const{cssStyles:g}=e;if("handDrawn"===e.look){const t=l.A.svg(i),r=A(e,{}),n=p(h),a=t.path(n,r);f=i.insert(()=>a,":first-child").attr("transform",`translate(${-o/2}, ${s/2})`),g&&f.attr("style",g)}else f=V(i,o,s,h);return n&&f.attr("style",n),e.width=o,e.height=s,u(e,f),e.intersect=function(t){return H.polygon(e,h,t)},i}async function se(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=Math.max(60,a.width+2*(e.padding??0),e?.width??0),s=Math.max(20,a.height+2*(e.padding??0),e?.height??0),{cssStyles:h}=e,f=l.A.svg(i),g=A(e,{});"handDrawn"!==e.look&&(g.roughness=0,g.fillStyle="solid");const m=[{x:-o/2*.8,y:-s/2},{x:o/2*.8,y:-s/2},{x:o/2,y:-s/2*.6},{x:o/2,y:s/2},{x:-o/2,y:s/2},{x:-o/2,y:-s/2*.6}],y=p(m),x=f.path(y,g),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),h&&"handDrawn"!==e.look&&b.selectChildren("path").attr("style",h),n&&"handDrawn"!==e.look&&b.selectChildren("path").attr("style",n),u(e,b),e.intersect=function(t){return H.polygon(e,m,t)},i}async function le(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:s}=await c(t,e,d(e)),h=(0,o._3)((0,o.D7)().flowchart?.htmlLabels),f=a.width+(e.padding??0),g=f+a.height,m=f+a.height,y=[{x:0,y:0},{x:m,y:0},{x:m/2,y:-g}],{cssStyles:x}=e,b=l.A.svg(i),k=A(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const C=p(y),w=b.path(C,k),_=i.insert(()=>w,":first-child").attr("transform",`translate(${-g/2}, ${g/2})`);return x&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",x),n&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",n),e.width=f,e.height=g,u(e,_),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${g/2-(a.height+(e.padding??0)/(h?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(t){return o.Rm.info("Triangle intersect",e,y,t),H.polygon(e,y,t)},i}async function ce(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=Math.max(a.width+2*(e.padding??0),e?.width??0),h=Math.max(a.height+2*(e.padding??0),e?.height??0),g=h/8,m=h+g,{cssStyles:y}=e,x=70-s,b=x>0?x/2:0,k=l.A.svg(i),C=A(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const w=[{x:-s/2-b,y:m/2},...f(-s/2-b,m/2,s/2+b,m/2,g,.8),{x:s/2+b,y:-m/2},{x:-s/2-b,y:-m/2}],_=p(w),v=k.path(_,C),T=i.insert(()=>v,":first-child");return T.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",y),n&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",n),T.attr("transform",`translate(0,${-g/2})`),o.attr("transform",`translate(${-s/2+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-g-(a.y-(a.top??0))})`),u(e,T),e.intersect=function(t){return H.polygon(e,w,t)},i}async function he(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a}=await c(t,e,d(e)),o=Math.max(a.width+2*(e.padding??0),e?.width??0),s=Math.max(a.height+2*(e.padding??0),e?.height??0),h=o/s;let g=o,m=s;g>m*h?m=g/h:g=m*h,g=Math.max(g,100),m=Math.max(m,50);const y=Math.min(.2*m,m/4),x=m+2*y,{cssStyles:b}=e,k=l.A.svg(i),C=A(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const w=[{x:-g/2,y:x/2},...f(-g/2,x/2,g/2,x/2,y,1),{x:g/2,y:-x/2},...f(g/2,-x/2,-g/2,-x/2,y,-1)],_=p(w),v=k.path(_,C),T=i.insert(()=>v,":first-child");return T.attr("class","basic label-container"),b&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",b),n&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",n),u(e,T),e.intersect=function(t){return H.polygon(e,w,t)},i}async function ue(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const{shapeSvg:i,bbox:a,label:o}=await c(t,e,d(e)),s=Math.max(a.width+2*(e.padding??0),e?.width??0),h=Math.max(a.height+2*(e.padding??0),e?.height??0),p=-s/2,f=-h/2,{cssStyles:g}=e,m=l.A.svg(i),y=A(e,{}),x=[{x:p-5,y:f-5},{x:p-5,y:f+h},{x:p+s,y:f+h},{x:p+s,y:f-5}],b=`M${p-5},${f-5} L${p+s},${f-5} L${p+s},${f+h} L${p-5},${f+h} L${p-5},${f-5}\n M${p-5},${f} L${p+s},${f}\n M${p},${f-5} L${p},${f+h}`;"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const k=m.path(b,y),C=i.insert(()=>k,":first-child");return C.attr("transform","translate(2.5, 2.5)"),C.attr("class","basic label-container"),g&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",g),n&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",n),o.attr("transform",`translate(${-a.width/2+2.5-(a.x-(a.left??0))}, ${-a.height/2+2.5-(a.y-(a.top??0))})`),u(e,C),e.intersect=function(t){return H.polygon(e,x,t)},i}async function de(t,e){const r=e;if(r.alias&&(e.label=r.alias),"handDrawn"===e.look){const{themeVariables:r}=(0,o.zj)(),{background:n}=r,i={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${n}`]};await de(t,i)}const n=(0,o.zj)();e.useHtmlLabels=n.htmlLabels;let i=n.er?.diagramPadding??10,c=n.er?.entityPadding??6;const{cssStyles:h}=e,{labelStyles:p,nodeStyles:f}=S(e);if(0===r.attributes.length&&e.label){const r={rx:0,ry:0,labelPaddingX:i,labelPaddingY:1.5*i,classes:""};(0,a.Un)(e.label,n)+2*r.labelPaddingX<n.er.minEntityWidth&&(e.width=n.er.minEntityWidth);const s=await Tt(t,e,r);if(!(0,o._3)(n.htmlLabels)){const t=s.select("text"),e=t.node()?.getBBox();t.attr("transform",`translate(${-e.width/2}, 0)`)}return s}n.htmlLabels||(i*=1.25,c*=1.25);let g=d(e);g||(g="node default");const m=t.insert("g").attr("class",g).attr("id",e.domId||e.id),y=await pe(m,e.label??"",n,0,0,["name"],p);y.height+=c;let x=0;const b=[],k=[];let C=0,w=0,_=0,v=0,T=!0,M=!0;for(const a of r.attributes){const t=await pe(m,a.type,n,0,x,["attribute-type"],p);C=Math.max(C,t.width+i);const e=await pe(m,a.name,n,0,x,["attribute-name"],p);w=Math.max(w,e.width+i);const r=await pe(m,a.keys.join(),n,0,x,["attribute-keys"],p);_=Math.max(_,r.width+i);const o=await pe(m,a.comment,n,0,x,["attribute-comment"],p);v=Math.max(v,o.width+i);const s=Math.max(t.height,e.height,r.height,o.height)+c;k.push({yOffset:x,rowHeight:s}),x+=s}let B=4;_<=i&&(T=!1,_=0,B--),v<=i&&(M=!1,v=0,B--);const L=m.node().getBBox();if(y.width+2*i-(C+w+_+v)>0){const t=y.width+2*i-(C+w+_+v);C+=t/B,w+=t/B,_>0&&(_+=t/B),v>0&&(v+=t/B)}const F=C+w+_+v,$=l.A.svg(m),E=A(e,{});"handDrawn"!==e.look&&(E.roughness=0,E.fillStyle="solid");let D=0;k.length>0&&(D=k.reduce((t,e)=>t+(e?.rowHeight??0),0));const N=Math.max(L.width+2*i,e?.width||0,F),O=Math.max((D??0)+y.height,e?.height||0),R=-N/2,I=-O/2;m.selectAll("g:not(:first-child)").each((t,e,r)=>{const n=(0,s.Ltv)(r[e]),a=n.attr("transform");let o=0,l=0;if(a){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(a);t&&(o=parseFloat(t[1]),l=parseFloat(t[2]),n.attr("class").includes("attribute-name")?o+=C:n.attr("class").includes("attribute-keys")?o+=C+w:n.attr("class").includes("attribute-comment")&&(o+=C+w+_))}n.attr("transform",`translate(${R+i/2+o}, ${l+I+y.height+c/2})`)}),m.select(".name").attr("transform","translate("+-y.width/2+", "+(I+c/2)+")");const j=$.rectangle(R,I,N,O,E),z=m.insert(()=>j,":first-child").attr("style",h.join("")),{themeVariables:P}=(0,o.zj)(),{rowEven:K,rowOdd:q,nodeBorder:W}=P;b.push(0);for(const[a,o]of k.entries()){const t=(a+1)%2==0&&0!==o.yOffset,e=$.rectangle(R,y.height+I+o?.yOffset,N,o?.rowHeight,{...E,fill:t?K:q,stroke:W});m.insert(()=>e,"g.label").attr("style",h.join("")).attr("class","row-rect-"+(t?"even":"odd"))}let U=$.line(R,y.height+I,N+R,y.height+I,E);m.insert(()=>U).attr("class","divider"),U=$.line(C+R,y.height+I,C+R,O+I,E),m.insert(()=>U).attr("class","divider"),T&&(U=$.line(C+w+R,y.height+I,C+w+R,O+I,E),m.insert(()=>U).attr("class","divider")),M&&(U=$.line(C+w+_+R,y.height+I,C+w+_+R,O+I,E),m.insert(()=>U).attr("class","divider"));for(const a of b)U=$.line(R,y.height+I+a,N+R,y.height+I+a,E),m.insert(()=>U).attr("class","divider");if(u(e,z),f&&"handDrawn"!==e.look){const t=f.split(";"),e=t?.filter(t=>t.includes("stroke"))?.map(t=>`${t}`).join("; ");m.selectAll("path").attr("style",e??""),m.selectAll(".row-rect-even path").attr("style",f)}return e.intersect=function(t){return H.rect(e,t)},m}async function pe(t,e,r,n=0,l=0,c=[],h=""){const u=t.insert("g").attr("class",`label ${c.join(" ")}`).attr("transform",`translate(${n}, ${l})`).attr("style",h);e!==(0,o.QO)(e)&&(e=(e=(0,o.QO)(e)).replaceAll("<","<").replaceAll(">",">"));const d=u.node().appendChild(await(0,i.GZ)(u,e,{width:(0,a.Un)(e,r)+100,style:h,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let t=d.children[0];for(t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">");t.childNodes[0];)t=t.childNodes[0],t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">")}let p=d.getBBox();if((0,o._3)(r.htmlLabels)){const t=d.children[0];t.style.textAlign="start";const e=(0,s.Ltv)(d);p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}return p}async function fe(t,e,r,n,i=r.class.padding??12){const a=n?0:3,o=t.insert("g").attr("class",d(e)).attr("id",e.domId||e.id);let s=null,l=null,c=null,h=null,u=0,p=0,f=0;if(s=o.insert("g").attr("class","annotation-group text"),e.annotations.length>0){const t=e.annotations[0];await ge(s,{text:`\xab${t}\xbb`},0);u=s.node().getBBox().height}l=o.insert("g").attr("class","label-group text"),await ge(l,e,0,["font-weight: bolder"]);const g=l.node().getBBox();p=g.height,c=o.insert("g").attr("class","members-group text");let m=0;for(const d of e.members){m+=await ge(c,d,m,[d.parseClassifier()])+a}f=c.node().getBBox().height,f<=0&&(f=i/2),h=o.insert("g").attr("class","methods-group text");let y=0;for(const d of e.methods){y+=await ge(h,d,y,[d.parseClassifier()])+a}let x=o.node().getBBox();if(null!==s){const t=s.node().getBBox();s.attr("transform",`translate(${-t.width/2})`)}return l.attr("transform",`translate(${-g.width/2}, ${u})`),x=o.node().getBBox(),c.attr("transform",`translate(0, ${u+p+2*i})`),x=o.node().getBBox(),h.attr("transform",`translate(0, ${u+p+(f?f+4*i:2*i)})`),x=o.node().getBBox(),{shapeSvg:o,bbox:x}}async function ge(t,e,r,n=[]){const l=t.insert("g").attr("class","label").attr("style",n.join("; ")),c=(0,o.zj)();let h="useHtmlLabels"in e?e.useHtmlLabels:(0,o._3)(c.htmlLabels)??!0,u="";u="text"in e?e.text:e.label,!h&&u.startsWith("\\")&&(u=u.substring(1)),(0,o.Wi)(u)&&(h=!0);const d=await(0,i.GZ)(l,(0,o.oB)((0,a.Sm)(u)),{width:(0,a.Un)(u,c)+50,classes:"markdown-node-label",useHtmlLabels:h},c);let p,f=1;if(h){const t=d.children[0],e=(0,s.Ltv)(d);f=t.innerHTML.split("<br>").length,t.innerHTML.includes("</math>")&&(f+=t.innerHTML.split("<mrow>").length-1);const r=t.getElementsByTagName("img");if(r){const t=""===u.replace(/<img[^>]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function n(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=c.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,r=5,n=parseInt(t,10)*r+"px";e.style.minWidth=n,e.style.maxWidth=n}else e.style.width="100%";r(e)}(0,o.K2)(n,"setupImage"),setTimeout(()=>{e.complete&&n()}),e.addEventListener("error",n),e.addEventListener("load",n)})))}p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}else{n.includes("font-weight: bolder")&&(0,s.Ltv)(d).selectAll("tspan").attr("font-weight",""),f=d.children.length;const t=d.children[0];if(""===d.textContent||d.textContent.includes(">")){t.textContent=u[0]+u.substring(1).replaceAll(">",">").replaceAll("<","<").trim();" "===u[1]&&(t.textContent=t.textContent[0]+" "+t.textContent.substring(1))}"undefined"===t.textContent&&(t.textContent=""),p=d.getBBox()}return l.attr("transform","translate(0,"+(-p.height/(2*f)+r)+")"),p.height}async function me(t,e){const r=(0,o.D7)(),n=r.class.padding??12,i=n,a=e.useHtmlLabels??(0,o._3)(r.htmlLabels)??!0,c=e;c.annotations=c.annotations??[],c.members=c.members??[],c.methods=c.methods??[];const{shapeSvg:h,bbox:d}=await fe(t,e,r,a,i),{labelStyles:p,nodeStyles:f}=S(e);e.labelStyle=p,e.cssStyles=c.styles||"";const g=c.styles?.join(";")||f||"";e.cssStyles||(e.cssStyles=g.replaceAll("!important","").split(";"));const m=0===c.members.length&&0===c.methods.length&&!r.class?.hideEmptyMembersBox,y=l.A.svg(h),x=A(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=d.width;let k=d.height;0===c.members.length&&0===c.methods.length?k+=i:c.members.length>0&&0===c.methods.length&&(k+=2*i);const C=-b/2,w=-k/2,_=y.rectangle(C-n,w-n-(m?n:0===c.members.length&&0===c.methods.length?-n/2:0),b+2*n,k+2*n+(m?2*n:0===c.members.length&&0===c.methods.length?-n:0),x),v=h.insert(()=>_,":first-child");v.attr("class","basic label-container");const T=v.node().getBBox();h.selectAll(".text").each((t,e,r)=>{const i=(0,s.Ltv)(r[e]),o=i.attr("transform");let l=0;if(o){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(o);t&&(l=parseFloat(t[2]))}let u=l+w+n-(m?n:0===c.members.length&&0===c.methods.length?-n/2:0);a||(u-=4);let d=C;(i.attr("class").includes("label-group")||i.attr("class").includes("annotation-group"))&&(d=-i.node()?.getBBox().width/2||0,h.selectAll("text").each(function(t,e,r){"middle"===window.getComputedStyle(r[e]).textAnchor&&(d=0)})),i.attr("transform",`translate(${d}, ${u})`)});const M=h.select(".annotation-group").node().getBBox().height-(m?n/2:0)||0,B=h.select(".label-group").node().getBBox().height-(m?n/2:0)||0,L=h.select(".members-group").node().getBBox().height-(m?n/2:0)||0;if(c.members.length>0||c.methods.length>0||m){const t=y.line(T.x,M+B+w+n,T.x+T.width,M+B+w+n,x);h.insert(()=>t).attr("class","divider").attr("style",g)}if(m||c.members.length>0||c.methods.length>0){const t=y.line(T.x,M+B+L+w+2*i+n,T.x+T.width,M+B+L+w+n+2*i,x);h.insert(()=>t).attr("class","divider").attr("style",g)}if("handDrawn"!==c.look&&h.selectAll("path").attr("style",g),v.select(":nth-child(2)").attr("style",g),h.selectAll(".divider").select("path").attr("style",g),e.labelStyle?h.selectAll("span").attr("style",e.labelStyle):h.selectAll("span").attr("style",g),!a){const t=RegExp(/color\s*:\s*([^;]*)/),e=t.exec(g);if(e){const t=e[0].replace("color","fill");h.selectAll("tspan").attr("style",t)}else if(p){const e=t.exec(p);if(e){const t=e[0].replace("color","fill");h.selectAll("tspan").attr("style",t)}}}return u(e,v),e.intersect=function(t){return H.rect(e,t)},h}async function ye(t,e){const{labelStyles:r,nodeStyles:n}=S(e);e.labelStyle=r;const i=e,a=e,o="verifyMethod"in e,c=d(e),h=t.insert("g").attr("class",c).attr("id",e.domId??e.id);let p;p=o?await xe(h,`<<${i.type}>>`,0,e.labelStyle):await xe(h,"<<Element>>",0,e.labelStyle);let f=p;const g=await xe(h,i.name,f,e.labelStyle+"; font-weight: bold;");if(f+=g+20,o){f+=await xe(h,""+(i.requirementId?`id: ${i.requirementId}`:""),f,e.labelStyle);f+=await xe(h,""+(i.text?`Text: ${i.text}`:""),f,e.labelStyle);f+=await xe(h,""+(i.risk?`Risk: ${i.risk}`:""),f,e.labelStyle),await xe(h,""+(i.verifyMethod?`Verification: ${i.verifyMethod}`:""),f,e.labelStyle)}else{f+=await xe(h,""+(a.type?`Type: ${a.type}`:""),f,e.labelStyle),await xe(h,""+(a.docRef?`Doc Ref: ${a.docRef}`:""),f,e.labelStyle)}const m=(h.node()?.getBBox().width??200)+20,y=(h.node()?.getBBox().height??200)+20,x=-m/2,b=-y/2,k=l.A.svg(h),C=A(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const w=k.rectangle(x,b,m,y,C),_=h.insert(()=>w,":first-child");if(_.attr("class","basic label-container").attr("style",n),h.selectAll(".label").each((t,e,r)=>{const n=(0,s.Ltv)(r[e]),i=n.attr("transform");let a=0,o=0;if(i){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(i);t&&(a=parseFloat(t[1]),o=parseFloat(t[2]))}const l=o-y/2;let c=x+10;0!==e&&1!==e||(c=a),n.attr("transform",`translate(${c}, ${l+20})`)}),f>p+g+20){const t=k.line(x,b+p+g+20,x+m,b+p+g+20,C);h.insert(()=>t).attr("style",n)}return u(e,_),e.intersect=function(t){return H.rect(e,t)},h}async function xe(t,e,r,n=""){if(""===e)return 0;const l=t.insert("g").attr("class","label").attr("style",n),c=(0,o.D7)(),h=c.htmlLabels??!0,u=await(0,i.GZ)(l,(0,o.oB)((0,a.Sm)(e)),{width:(0,a.Un)(e,c)+50,classes:"markdown-node-label",useHtmlLabels:h,style:n},c);let d;if(h){const t=u.children[0],e=(0,s.Ltv)(u);d=t.getBoundingClientRect(),e.attr("width",d.width),e.attr("height",d.height)}else{const t=u.children[0];for(const e of t.children)e.textContent=e.textContent.replaceAll(">",">").replaceAll("<","<"),n&&e.setAttribute("style",n);d=u.getBBox(),d.height+=6}return l.attr("transform",`translate(${-d.width/2},${-d.height/2+r})`),d.height}(0,o.K2)(ae,"tiltedCylinder"),(0,o.K2)(oe,"trapezoid"),(0,o.K2)(se,"trapezoidalPentagon"),(0,o.K2)(le,"triangle"),(0,o.K2)(ce,"waveEdgedRectangle"),(0,o.K2)(he,"waveRectangle"),(0,o.K2)(ue,"windowPane"),(0,o.K2)(de,"erBox"),(0,o.K2)(pe,"addText"),(0,o.K2)(fe,"textHelper"),(0,o.K2)(ge,"addText"),(0,o.K2)(me,"classBox"),(0,o.K2)(ye,"requirementBox"),(0,o.K2)(xe,"addText");var be=(0,o.K2)(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");async function ke(t,e,{config:r}){const{labelStyles:n,nodeStyles:i}=S(e);e.labelStyle=n||"";const a=e.width;e.width=(e.width??200)-10;const{shapeSvg:o,bbox:s,label:p}=await c(t,e,d(e)),f=e.padding||10;let g,m="";"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(m=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),g=o.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",m).attr("target","_blank"));const y={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1};let x,b;({label:x,bbox:b}=g?await h(g,"ticket"in e&&e.ticket||"",y):await h(o,"ticket"in e&&e.ticket||"",y));const{label:C,bbox:w}=await h(o,"assigned"in e&&e.assigned||"",y);e.width=a;const _=e?.width||0,v=Math.max(b.height,w.height)/2,T=Math.max(s.height+20,e?.height||0)+v,M=-_/2,B=-T/2;let L;p.attr("transform","translate("+(f-_/2)+", "+(-v-s.height/2)+")"),x.attr("transform","translate("+(f-_/2)+", "+(-v+s.height/2)+")"),C.attr("transform","translate("+(f+_/2-w.width-20)+", "+(-v+s.height/2)+")");const{rx:F,ry:$}=e,{cssStyles:E}=e;if("handDrawn"===e.look){const t=l.A.svg(o),r=A(e,{}),n=F||$?t.path(k(M,B,_,T,F||0),r):t.rectangle(M,B,_,T,r);L=o.insert(()=>n,":first-child"),L.attr("class","basic label-container").attr("style",E||null)}else{L=o.insert("rect",":first-child"),L.attr("class","basic label-container __APA__").attr("style",i).attr("rx",F??5).attr("ry",$??5).attr("x",M).attr("y",B).attr("width",_).attr("height",T);const t="priority"in e&&e.priority;if(t){const e=o.append("line"),r=M+2,n=B+Math.floor((F??0)/2),i=B+T-Math.floor((F??0)/2);e.attr("x1",r).attr("y1",n).attr("x2",r).attr("y2",i).attr("stroke-width","4").attr("stroke",be(t))}}return u(e,L),e.height=T,e.intersect=function(t){return H.rect(e,t)},o}(0,o.K2)(ke,"kanbanItem");var Ce=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Yt},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Wt},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Gt},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Qt},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:ut},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:Q},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Pt},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:bt},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:Lt},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:Bt},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:oe},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:At},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:pt},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:ee},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:Z},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Ht},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Xt},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Zt},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:mt},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:kt},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:rt},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:it},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:ot},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:Ft},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:ce},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:yt},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ae},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:Nt},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:st},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:dt},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:le},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:ue},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:ft},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:se},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:gt},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:Ut},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:It},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:Rt},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:G},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:tt},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:te},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Jt},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:he},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Kt},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Ot}],we=(0,o.K2)(()=>{const t={state:Vt,choice:X,note:jt,rectWithTitle:qt,labelRect:Mt,iconSquare:vt,iconCircle:wt,icon:Ct,iconRounded:_t,imageSquare:St,anchor:U,kanbanItem:ke,classBox:me,erBox:de,requirementBox:ye},e=[...Object.entries(t),...Ce.flatMap(t=>[t.shortName,..."aliases"in t?t.aliases:[],..."internalAliases"in t?t.internalAliases:[]].map(e=>[e,t.handler]))];return Object.fromEntries(e)},"generateShapeMap")();function _e(t){return t in we}(0,o.K2)(_e,"isValidShape");var ve=new Map;async function Se(t,e,r){let n,i;"rect"===e.shape&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");const a=e.shape?we[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let o;"sandbox"===r.config.securityLevel?o="_top":e.linkTarget&&(o=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",o??null),i=await a(n,e,r)}else i=await a(t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),ve.set(e.id,n),e.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}(0,o.K2)(Se,"insertNode");var Ae=(0,o.K2)((t,e)=>{ve.set(e.id,t)},"setNodeElem"),Te=(0,o.K2)(()=>{ve.clear()},"clear"),Me=(0,o.K2)(t=>{const e=ve.get(t.id);o.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode")},63406:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var n=r(35745),i=r(16957),a=Object.prototype.hasOwnProperty;const o=function(t,e,r){var o=t[e];a.call(t,e)&&(0,i.A)(o,r)&&(void 0!==r||e in t)||(0,n.A)(t,e,r)}},65404:(t,e,r)=>{"use strict";r.d(e,{R:()=>o,x:()=>s});var n=r(36672);const i={},a=n.createContext(i);function o(t){const e=n.useContext(a);return n.useMemo(function(){return"function"==typeof t?t(e):{...e,...t}},[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:o(t.components),n.createElement(a.Provider,{value:e},t.children)}},66916:(t,e,r)=>{"use strict";r.d(e,{A:()=>h});const n=function(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n};var i=r(56267),a=r(95526),o=r(27163),s=r(31408),l=r(69065),c=Object.prototype.hasOwnProperty;const h=function(t,e){var r=(0,a.A)(t),h=!r&&(0,i.A)(t),u=!r&&!h&&(0,o.A)(t),d=!r&&!h&&!u&&(0,l.A)(t),p=r||h||u||d,f=p?n(t.length,String):[],g=f.length;for(var m in t)!e&&!c.call(t,m)||p&&("length"==m||u&&("offset"==m||"parent"==m)||d&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||(0,s.A)(m,g))||f.push(m);return f}},68676:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var n=r(46554),i=r(38819);const a=class{constructor(){this.type=i.Z.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=i.Z.ALL}is(t){return this.type===t}};const o=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=i.Z.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:r,l:i}=t;void 0===e&&(t.h=n.A.channel.rgb2hsl(t,"h")),void 0===r&&(t.s=n.A.channel.rgb2hsl(t,"s")),void 0===i&&(t.l=n.A.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:r,b:i}=t;void 0===e&&(t.r=n.A.channel.hsl2rgb(t,"r")),void 0===r&&(t.g=n.A.channel.hsl2rgb(t,"g")),void 0===i&&(t.b=n.A.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(i.Z.HSL)||void 0===e?(this._ensureHSL(),n.A.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(i.Z.HSL)||void 0===e?(this._ensureHSL(),n.A.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(i.Z.HSL)||void 0===e?(this._ensureHSL(),n.A.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(i.Z.RGB)||void 0===e?(this._ensureRGB(),n.A.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(i.Z.RGB)||void 0===e?(this._ensureRGB(),n.A.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(i.Z.RGB)||void 0===e?(this._ensureRGB(),n.A.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(i.Z.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(i.Z.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(i.Z.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(i.Z.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(i.Z.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(i.Z.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},69065:(t,e,r)=>{"use strict";r.d(e,{A:()=>u});var n=r(80565),i=r(47227),a=r(97427),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1;const s=function(t){return(0,a.A)(t)&&(0,i.A)(t.length)&&!!o[(0,n.A)(t)]};var l=r(5220),c=r(10130),h=c.A&&c.A.isTypedArray;const u=h?(0,l.A)(h):s},70370:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0,e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g,e.htmlCtrlEntityRegex=/&(newline|tab);/gi,e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,e.urlSchemeRegex=/^.+(:|:)/gim,e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,e.relativeFirstCharacters=[".","/"],e.BLANK_URL="about:blank"},70837:(t,e,r)=>{"use strict";r.d(e,{O:()=>n});var n=(0,r(27293).K2)(({flowchart:t})=>{const e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:e+r}},"getSubGraphTitleMargins")},71398:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});const n=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)};var i=Math.max;const a=function(t,e,r){return e=i(void 0===e?t.length-1:e,0),function(){for(var a=arguments,o=-1,s=i(a.length-e,0),l=Array(s);++o<s;)l[o]=a[e+o];o=-1;for(var c=Array(e+1);++o<e;)c[o]=a[o];return c[e]=r(l),n(t,this,c)}}},75856:(t,e,r)=>{"use strict";r.d(e,{A:()=>D});var n=r(56389),i=r(35745),a=r(16957);const o=function(t,e,r){(void 0!==r&&!(0,a.A)(t[e],r)||void 0===r&&!(e in t))&&(0,i.A)(t,e,r)};var s=r(88749),l=r(14779),c=r(39448),h=r(9554),u=r(77585),d=r(56267),p=r(95526),f=r(33998),g=r(27163),m=r(41863),y=r(49084),x=r(80565),b=r(79728),k=r(97427),C=Function.prototype,w=Object.prototype,_=C.toString,v=w.hasOwnProperty,S=_.call(Object);const A=function(t){if(!(0,k.A)(t)||"[object Object]"!=(0,x.A)(t))return!1;var e=(0,b.A)(t);if(null===e)return!0;var r=v.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&_.call(r)==S};var T=r(69065);const M=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var B=r(88168),L=r(96920);const F=function(t){return(0,B.A)(t,(0,L.A)(t))};const $=function(t,e,r,n,i,a,s){var x=M(t,r),b=M(e,r),k=s.get(b);if(k)o(t,r,k);else{var C=a?a(x,b,r+"",t,e,s):void 0,w=void 0===C;if(w){var _=(0,p.A)(b),v=!_&&(0,g.A)(b),S=!_&&!v&&(0,T.A)(b);C=b,_||v||S?(0,p.A)(x)?C=x:(0,f.A)(x)?C=(0,h.A)(x):v?(w=!1,C=(0,l.A)(b,!0)):S?(w=!1,C=(0,c.A)(b,!0)):C=[]:A(b)||(0,d.A)(b)?(C=x,(0,d.A)(x)?C=F(x):(0,y.A)(x)&&!(0,m.A)(x)||(C=(0,u.A)(b))):w=!1}w&&(s.set(b,C),i(C,b,n,a,s),s.delete(b)),o(t,r,C)}};const E=function t(e,r,i,a,l){e!==r&&(0,s.A)(r,function(s,c){if(l||(l=new n.A),(0,y.A)(s))$(e,r,c,i,t,a,l);else{var h=a?a(M(e,c),s,c+"",e,r,l):void 0;void 0===h&&(h=s),o(e,c,h)}},L.A)};const D=(0,r(47848).A)(function(t,e,r){E(t,e,r)})},77459:(t,e,r)=>{"use strict";r.d(e,{n:()=>n});var n={name:"mermaid",version:"11.7.0",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.0.4","@iconify/utils":"^2.1.33","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.11",dayjs:"^1.11.13",dompurify:"^3.2.5",katex:"^0.16.9",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^15.0.7",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.2","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",chokidar:"^4.0.3",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.0.2",jison:"^0.4.18","js-base64":"^3.7.7",jsdom:"^26.0.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.2",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.10","type-fest":"^4.35.0",typedoc:"^0.27.8","typedoc-plugin-markdown":"^4.4.2",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.0.2","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}},77585:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var n=r(49084),i=Object.create;const a=function(){function t(){}return function(e){if(!(0,n.A)(e))return{};if(i)return i(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();var o=r(79728),s=r(39458);const l=function(t){return"function"!=typeof t.constructor||(0,s.A)(t)?{}:a((0,o.A)(t))}},79728:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=(0,r(30150).A)(Object.getPrototypeOf,Object)},80565:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var n=r(55842),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=n.A?n.A.toStringTag:void 0;const l=function(t){var e=a.call(t,s),r=t[s];try{t[s]=void 0;var n=!0}catch(l){}var i=o.call(t);return n&&(e?t[s]=r:delete t[s]),i};var c=Object.prototype.toString;const h=function(t){return c.call(t)};var u=n.A?n.A.toStringTag:void 0;const d=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":u&&u in Object(t)?l(t):h(t)}},81896:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=r(11628);const i=(t,e)=>(0,n.A)(t,"l",-e)},83927:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=r(57454).A.Uint8Array},84738:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var n=r(39458);const i=(0,r(30150).A)(Object.keys,Object);var a=Object.prototype.hasOwnProperty;const o=function(t){if(!(0,n.A)(t))return i(t);var e=[];for(var r in Object(t))a.call(t,r)&&"constructor"!=r&&e.push(r);return e}},84982:(t,e,r)=>{"use strict";r.d(e,{IU:()=>m,Jo:()=>T,T_:()=>k,g0:()=>L,jP:()=>x});var n=r(43545),i=r(61598),a=r(70837),o=r(24199),s=r(47794),l=r(27293),c=r(61274),h=r(30726),u=(0,l.K2)((t,e,r,n,i,a)=>{e.arrowTypeStart&&p(t,"start",e.arrowTypeStart,r,n,i,a),e.arrowTypeEnd&&p(t,"end",e.arrowTypeEnd,r,n,i,a)},"addEdgeMarkers"),d={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},p=(0,l.K2)((t,e,r,n,i,a,o)=>{const s=d[r];if(!s)return void l.Rm.warn(`Unknown arrow type: ${r}`);const c=`${i}_${a}-${s.type}${"start"===e?"Start":"End"}`;if(o&&""!==o.trim()){const r=`${c}_${o.replace(/[^\dA-Za-z]/g,"_")}`;if(!document.getElementById(r)){const t=document.getElementById(c);if(t){const e=t.cloneNode(!0);e.id=r;e.querySelectorAll("path, circle, line").forEach(t=>{t.setAttribute("stroke",o),s.fill&&t.setAttribute("fill",o)}),t.parentNode?.appendChild(e)}}t.attr(`marker-${e}`,`url(${n}#${r})`)}else t.attr(`marker-${e}`,`url(${n}#${c})`)},"addEdgeMarker"),f=new Map,g=new Map,m=(0,l.K2)(()=>{f.clear(),g.clear()},"clear"),y=(0,l.K2)(t=>t?t.reduce((t,e)=>t+";"+e,""):"","getLabelStyles"),x=(0,l.K2)(async(t,e)=>{let r=(0,l._3)((0,l.D7)().flowchart.htmlLabels);const n=await(0,o.GZ)(t,e.label,{style:y(e.labelStyle),useHtmlLabels:r,addSvgBackground:!0,isNode:!1});l.Rm.info("abc82",e,e.labelType);const a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(n);let h,u=n.getBBox();if(r){const t=n.children[0],e=(0,c.Ltv)(n);u=t.getBoundingClientRect(),e.attr("width",u.width),e.attr("height",u.height)}if(s.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),f.set(e.id,a),e.width=u.width,e.height=u.height,e.startLabelLeft){const r=await(0,i.DA)(e.startLabelLeft,y(e.labelStyle)),n=t.insert("g").attr("class","edgeTerminals"),a=n.insert("g").attr("class","inner");h=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),g.get(e.id)||g.set(e.id,{}),g.get(e.id).startLeft=n,b(h,e.startLabelLeft)}if(e.startLabelRight){const r=await(0,i.DA)(e.startLabelRight,y(e.labelStyle)),n=t.insert("g").attr("class","edgeTerminals"),a=n.insert("g").attr("class","inner");h=n.node().appendChild(r),a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),g.get(e.id)||g.set(e.id,{}),g.get(e.id).startRight=n,b(h,e.startLabelRight)}if(e.endLabelLeft){const r=await(0,i.DA)(e.endLabelLeft,y(e.labelStyle)),n=t.insert("g").attr("class","edgeTerminals"),a=n.insert("g").attr("class","inner");h=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),n.node().appendChild(r),g.get(e.id)||g.set(e.id,{}),g.get(e.id).endLeft=n,b(h,e.endLabelLeft)}if(e.endLabelRight){const r=await(0,i.DA)(e.endLabelRight,y(e.labelStyle)),n=t.insert("g").attr("class","edgeTerminals"),a=n.insert("g").attr("class","inner");h=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),n.node().appendChild(r),g.get(e.id)||g.set(e.id,{}),g.get(e.id).endRight=n,b(h,e.endLabelRight)}return n},"insertEdgeLabel");function b(t,e){(0,l.D7)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,l.K2)(b,"setTerminalWidth");var k=(0,l.K2)((t,e)=>{l.Rm.debug("Moving label abc88 ",t.id,t.label,f.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath;const n=(0,l.D7)(),{subGraphTitleTotalMargin:i}=(0,a.O)(n);if(t.label){const n=f.get(t.id);let a=t.x,o=t.y;if(r){const n=s._K.calcLabelPosition(r);l.Rm.debug("Moving label "+t.label+" from (",a,",",o,") to (",n.x,",",n.y,") abc88"),e.updatedPath&&(a=n.x,o=n.y)}n.attr("transform",`translate(${a}, ${o+i/2})`)}if(t.startLabelLeft){const e=g.get(t.id).startLeft;let n=t.x,i=t.y;if(r){const e=s._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);n=e.x,i=e.y}e.attr("transform",`translate(${n}, ${i})`)}if(t.startLabelRight){const e=g.get(t.id).startRight;let n=t.x,i=t.y;if(r){const e=s._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);n=e.x,i=e.y}e.attr("transform",`translate(${n}, ${i})`)}if(t.endLabelLeft){const e=g.get(t.id).endLeft;let n=t.x,i=t.y;if(r){const e=s._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);n=e.x,i=e.y}e.attr("transform",`translate(${n}, ${i})`)}if(t.endLabelRight){const e=g.get(t.id).endRight;let n=t.x,i=t.y;if(r){const e=s._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);n=e.x,i=e.y}e.attr("transform",`translate(${n}, ${i})`)}},"positionEdgeLabel"),C=(0,l.K2)((t,e)=>{const r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),o=t.width/2,s=t.height/2;return i>=o||a>=s},"outsideNode"),w=(0,l.K2)((t,e,r)=>{l.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const n=t.x,i=t.y,a=Math.abs(n-r.x),o=t.width/2;let s=r.x<e.x?o-a:o+a;const c=t.height/2,h=Math.abs(e.y-r.y),u=Math.abs(e.x-r.x);if(Math.abs(i-e.y)*o>Math.abs(n-e.x)*c){let t=r.y<e.y?e.y-c-i:i-c-e.y;s=u*t/h;const n={x:r.x<e.x?r.x+s:r.x-u+s,y:r.y<e.y?r.y+h-t:r.y-h+t};return 0===s&&(n.x=e.x,n.y=e.y),0===u&&(n.x=e.x),0===h&&(n.y=e.y),l.Rm.debug(`abc89 top/bottom calc, Q ${h}, q ${t}, R ${u}, r ${s}`,n),n}{s=r.x<e.x?e.x-o-n:n-o-e.x;let t=h*s/u,i=r.x<e.x?r.x+u-s:r.x-u+s,a=r.y<e.y?r.y+t:r.y-t;return l.Rm.debug(`sides calc abc89, Q ${h}, q ${t}, R ${u}, r ${s}`,{_x:i,_y:a}),0===s&&(i=e.x,a=e.y),0===u&&(i=e.x),0===h&&(a=e.y),{x:i,y:a}}},"intersection"),_=(0,l.K2)((t,e)=>{l.Rm.warn("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(t=>{if(l.Rm.info("abc88 checking point",t,e),C(e,t)||i)l.Rm.warn("abc88 outside",t,n),n=t,i||r.push(t);else{const a=w(e,n,t);l.Rm.debug("abc88 inside",t,n,a),l.Rm.debug("abc88 intersection",a,e);let o=!1;r.forEach(t=>{o=o||t.x===a.x&&t.y===a.y}),r.some(t=>t.x===a.x&&t.y===a.y)?l.Rm.warn("abc88 no intersect",a,r):r.push(a),i=!0}}),l.Rm.debug("returning points",r),r},"cutPathAtIntersect");function v(t){const e=[],r=[];for(let n=1;n<t.length-1;n++){const i=t[n-1],a=t[n],o=t[n+1];(i.x===a.x&&a.y===o.y&&Math.abs(a.x-o.x)>5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===o.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-o.y)>5)&&(e.push(a),r.push(n))}return{cornerPoints:e,cornerPointPositions:r}}(0,l.K2)(v,"extractCornerPoints");var S=(0,l.K2)(function(t,e,r){const n=e.x-t.x,i=e.y-t.y,a=r/Math.sqrt(n*n+i*i);return{x:e.x-a*n,y:e.y-a*i}},"findAdjacentPoint"),A=(0,l.K2)(function(t){const{cornerPointPositions:e}=v(t),r=[];for(let n=0;n<t.length;n++)if(e.includes(n)){const e=t[n-1],i=t[n+1],a=t[n],o=S(e,a,5),s=S(i,a,5),c=s.x-o.x,h=s.y-o.y;r.push(o);const u=2*Math.sqrt(2);let d={x:a.x,y:a.y};if(Math.abs(i.x-e.x)>10&&Math.abs(i.y-e.y)>=10){l.Rm.debug("Corner point fixing",Math.abs(i.x-e.x),Math.abs(i.y-e.y));const t=5;d=a.x===o.x?{x:c<0?o.x-t+u:o.x+t-u,y:h<0?o.y-u:o.y+u}:{x:c<0?o.x-u:o.x+u,y:h<0?o.y-t+u:o.y+t-u}}else l.Rm.debug("Corner point skipping fixing",Math.abs(i.x-e.x),Math.abs(i.y-e.y));r.push(d,s)}else r.push(t[n]);return r},"fixCorners"),T=(0,l.K2)(function(t,e,r,a,o,s,d){const{handDrawnSeed:p}=(0,l.D7)();let f=e.points,g=!1;const m=o;var y=s;const x=[];for(const n in e.cssCompiledStyles)(0,i.KX)(n)||x.push(e.cssCompiledStyles[n]);y.intersect&&m.intersect&&(f=f.slice(1,e.points.length-1),f.unshift(m.intersect(f[0])),l.Rm.debug("Last point APA12",e.start,"--\x3e",e.end,f[f.length-1],y,y.intersect(f[f.length-1])),f.push(y.intersect(f[f.length-1]))),e.toCluster&&(l.Rm.info("to cluster abc88",r.get(e.toCluster)),f=_(e.points,r.get(e.toCluster).node),g=!0),e.fromCluster&&(l.Rm.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(f,null,2)),f=_(f.reverse(),r.get(e.fromCluster).node).reverse(),g=!0);let b=f.filter(t=>!Number.isNaN(t.y));b=A(b);let k=c.qrM;switch(k=c.lUB,e.curve){case"linear":k=c.lUB;break;case"basis":default:k=c.qrM;break;case"cardinal":k=c.y8u;break;case"bumpX":k=c.Wi0;break;case"bumpY":k=c.PGM;break;case"catmullRom":k=c.oDi;break;case"monotoneX":k=c.nVG;break;case"monotoneY":k=c.uxU;break;case"natural":k=c.Xf2;break;case"step":k=c.GZz;break;case"stepAfter":k=c.UPb;break;case"stepBefore":k=c.dyv}const{x:C,y:w}=(0,n.R)(e),v=(0,c.n8j)().x(C).y(w).curve(k);let S,T;switch(e.thickness){case"normal":default:S="edge-thickness-normal";break;case"thick":S="edge-thickness-thick";break;case"invisible":S="edge-thickness-invisible"}switch(e.pattern){case"solid":default:S+=" edge-pattern-solid";break;case"dotted":S+=" edge-pattern-dotted";break;case"dashed":S+=" edge-pattern-dashed"}let M=v(b);const B=Array.isArray(e.style)?e.style:e.style?[e.style]:[];let L=B.find(t=>t?.startsWith("stroke:"));if("handDrawn"===e.look){const r=h.A.svg(t);Object.assign([],b);const n=r.path(M,{roughness:.3,seed:p});S+=" transition",T=(0,c.Ltv)(n).select("path").attr("id",e.id).attr("class"," "+S+(e.classes?" "+e.classes:"")).attr("style",B?B.reduce((t,e)=>t+";"+e,""):"");let i=T.attr("d");T.attr("d",i),t.node().appendChild(T.node())}else{const r=x.join(";"),n=B?B.reduce((t,e)=>t+e+";",""):"";let i="";e.animate&&(i=" edge-animation-fast"),e.animation&&(i=" edge-animation-"+e.animation);const a=r?r+";"+n+";":n;T=t.append("path").attr("d",M).attr("id",e.id).attr("class"," "+S+(e.classes?" "+e.classes:"")+(i??"")).attr("style",a),L=a.match(/stroke:([^;]+)/)?.[1]}let F="";((0,l.D7)().flowchart.arrowMarkerAbsolute||(0,l.D7)().state.arrowMarkerAbsolute)&&(F=(0,l.ID)(!0)),l.Rm.info("arrowTypeStart",e.arrowTypeStart),l.Rm.info("arrowTypeEnd",e.arrowTypeEnd),u(T,e,F,d,a,L);let $={};return g&&($.updatedPath=f),$.originalPath=e.points,$},"insertEdge"),M=(0,l.K2)((t,e,r,n)=>{e.forEach(e=>{B[e](t,r,n)})},"insertMarkers"),B={extension:(0,l.K2)((t,e,r)=>{l.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),composition:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),aggregation:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),dependency:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lollipop:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),point:(0,l.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),circle:(0,l.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cross:(0,l.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),barb:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),only_one:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),zero_or_one:(0,l.K2)((t,e,r)=>{const n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),one_or_more:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),zero_or_more:(0,l.K2)((t,e,r)=>{const n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),requirement_arrow:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d","M0,0\n L20,10\n M20,10\n L0,20")},"requirement_arrow"),requirement_contains:(0,l.K2)((t,e,r)=>{const n=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains")},L=M},86793:(t,e,r)=>{"use strict";function n(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=Array.from("string"==typeof t?[t]:t);n[n.length-1]=n[n.length-1].replace(/\r?\n([\t ]*)$/,"");var i=n.reduce(function(t,e){var r=e.match(/\n([\t ]+|(?!\s).)/g);return r?t.concat(r.map(function(t){var e,r;return null!==(r=null===(e=t.match(/[\t ]/g))||void 0===e?void 0:e.length)&&void 0!==r?r:0})):t},[]);if(i.length){var a=new RegExp("\n[\t ]{"+Math.min.apply(Math,i)+"}","g");n=n.map(function(t){return t.replace(a,"\n")})}n[0]=n[0].replace(/^\r?\n/,"");var o=n[0];return e.forEach(function(t,e){var r=o.match(/(?:^|\n)( *)$/),i=r?r[1]:"",a=t;"string"==typeof t&&t.includes("\n")&&(a=String(t).split("\n").map(function(t,e){return 0===e?t:""+i+t}).join("\n")),o+=a+n[e+1]}),o}r.d(e,{T:()=>n})},86986:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(53443),i=r(57454);const a=(0,n.A)(i.A,"Map")},88168:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(63406),i=r(35745);const a=function(t,e,r,a){var o=!r;r||(r={});for(var s=-1,l=e.length;++s<l;){var c=e[s],h=a?a(r[c],t[c],c,r,t):void 0;void 0===h&&(h=t[c]),o?(0,i.A)(r,c,h):(0,n.A)(r,c,h)}return r}},88749:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t){return function(e,r,n){for(var i=-1,a=Object(e),o=n(e),s=o.length;s--;){var l=o[t?s:++i];if(!1===r(a[l],l,a))break}return e}}()},89732:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});const n=function(){this.__data__=[],this.size=0};var i=r(16957);const a=function(t,e){for(var r=t.length;r--;)if((0,i.A)(t[r][0],e))return r;return-1};var o=Array.prototype.splice;const s=function(t){var e=this.__data__,r=a(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)};const l=function(t){var e=this.__data__,r=a(e,t);return r<0?void 0:e[r][1]};const c=function(t){return a(this.__data__,t)>-1};const h=function(t,e){var r=this.__data__,n=a(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}u.prototype.clear=n,u.prototype.delete=s,u.prototype.get=l,u.prototype.has=c,u.prototype.set=h;const d=u},90372:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});var n=r(53443);const i=function(){try{var t=(0,n.A)(Object,"defineProperty");return t({},"",{}),t}catch(e){}}()},90570:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var n=r(84738),i=r(44254),a=r(56267),o=r(95526),s=r(42849),l=r(27163),c=r(39458),h=r(69065),u=Object.prototype.hasOwnProperty;const d=function(t){if(null==t)return!0;if((0,s.A)(t)&&((0,o.A)(t)||"string"==typeof t||"function"==typeof t.splice||(0,l.A)(t)||(0,h.A)(t)||(0,a.A)(t)))return!t.length;var e=(0,i.A)(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if((0,c.A)(t))return!(0,n.A)(t).length;for(var r in t)if(u.call(t,r))return!1;return!0}},93622:(t,e,r)=>{"use strict";r.d(e,{A:()=>g});var n=r(36672),i=r(74834);function a(t){const e=t.map(t=>({...t,parentIndex:-1,children:[]})),r=Array(7).fill(-1);e.forEach((t,e)=>{const n=r.slice(2,t.level);t.parentIndex=Math.max(...n),r[t.level]=e});const n=[];return e.forEach(t=>{const{parentIndex:r,...i}=t;r>=0?e[r].children.push(i):n.push(i)}),n}function o({toc:t,minHeadingLevel:e,maxHeadingLevel:r}){return t.flatMap(t=>{const n=o({toc:t.children,minHeadingLevel:e,maxHeadingLevel:r});return function(t){return t.level>=e&&t.level<=r}(t)?[{...t,children:n}]:n})}function s(t){const e=t.getBoundingClientRect();return e.top===e.bottom?s(t.parentNode):e}function l(t,{anchorTopOffset:e}){const r=t.find(t=>s(t).top>=e);if(r){return function(t){return t.top>0&&t.bottom<window.innerHeight/2}(s(r))?r:t[t.indexOf(r)-1]??null}return t[t.length-1]??null}function c(){const t=(0,n.useRef)(0),{navbar:{hideOnScroll:e}}=(0,i.p)();return(0,n.useEffect)(()=>{t.current=e?0:document.querySelector(".navbar").clientHeight},[e]),t}function h(t){const e=(0,n.useRef)(void 0),r=c();(0,n.useEffect)(()=>{if(!t)return()=>{};const{linkClassName:n,linkActiveClassName:i,minHeadingLevel:a,maxHeadingLevel:o}=t;function s(){const t=function(t){return Array.from(document.getElementsByClassName(t))}(n),s=function({minHeadingLevel:t,maxHeadingLevel:e}){const r=[];for(let n=t;n<=e;n+=1)r.push(`h${n}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:a,maxHeadingLevel:o}),c=l(s,{anchorTopOffset:r.current}),h=t.find(t=>c&&c.id===function(t){return decodeURIComponent(t.href.substring(t.href.indexOf("#")+1))}(t));t.forEach(t=>{!function(t,r){r?(e.current&&e.current!==t&&e.current.classList.remove(i),t.classList.add(i),e.current=t):t.classList.remove(i)}(t,t===h)})}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}},[t,r])}var u=r(28827),d=r(23420);function p({toc:t,className:e,linkClassName:r,isChild:n}){return t.length?(0,d.jsx)("ul",{className:n?void 0:e,children:t.map(t=>(0,d.jsxs)("li",{children:[(0,d.jsx)(u.A,{to:`#${t.id}`,className:r??void 0,dangerouslySetInnerHTML:{__html:t.value}}),(0,d.jsx)(p,{isChild:!0,toc:t.children,className:e,linkClassName:r})]},t.id))}):null}const f=n.memo(p);function g({toc:t,className:e="table-of-contents table-of-contents__left-border",linkClassName:r="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:l,maxHeadingLevel:c,...u}){const p=(0,i.p)(),g=l??p.tableOfContents.minHeadingLevel,m=c??p.tableOfContents.maxHeadingLevel,y=function({toc:t,minHeadingLevel:e,maxHeadingLevel:r}){return(0,n.useMemo)(()=>o({toc:a(t),minHeadingLevel:e,maxHeadingLevel:r}),[t,e,r])}({toc:t,minHeadingLevel:g,maxHeadingLevel:m});return h((0,n.useMemo)(()=>{if(r&&s)return{linkClassName:r,linkActiveClassName:s,minHeadingLevel:g,maxHeadingLevel:m}},[r,s,g,m])),(0,d.jsx)(f,{toc:y,className:e,linkClassName:r,...u})}},95379:(t,e,r)=>{"use strict";r.d(e,{D:()=>a});var n=r(27293),i=r(61274),a=(0,n.K2)(t=>{const{securityLevel:e}=(0,n.D7)();let r=(0,i.Ltv)("body");if("sandbox"===e){const e=(0,i.Ltv)(`#i${t}`),n=e.node()?.contentDocument??document;r=(0,i.Ltv)(n.body)}return r.select(`#${t}`)},"selectSvgElement")},95526:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=Array.isArray},95992:(t,e,r)=>{"use strict";r.d(e,{A:()=>c});r(36672);var n=r(13526),i=r(93622);const a={tableOfContents:"tableOfContents_baz9",docItemContainer:"docItemContainer_jSd8"};var o=r(23420);const s="table-of-contents__link toc-highlight",l="table-of-contents__link--active";function c({className:t,...e}){return(0,o.jsx)("div",{className:(0,n.A)(a.tableOfContents,"thin-scrollbar",t),children:(0,o.jsx)(i.A,{...e,linkClassName:s,linkActiveClassName:l})})}},96920:(t,e,r)=>{"use strict";r.d(e,{A:()=>h});var n=r(66916),i=r(49084),a=r(39458);const o=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e};var s=Object.prototype.hasOwnProperty;const l=function(t){if(!(0,i.A)(t))return o(t);var e=(0,a.A)(t),r=[];for(var n in t)("constructor"!=n||!e&&s.call(t,n))&&r.push(n);return r};var c=r(42849);const h=function(t){return(0,c.A)(t)?(0,n.A)(t,!0):l(t)}},97427:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const n=function(t){return null!=t&&"object"==typeof t}}}]); \ No newline at end of file diff --git a/assets/js/3332.03236ca3.js.LICENSE.txt b/assets/js/3332.03236ca3.js.LICENSE.txt new file mode 100644 index 0000000000..6e97ec6e05 --- /dev/null +++ b/assets/js/3332.03236ca3.js.LICENSE.txt @@ -0,0 +1 @@ +/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */ diff --git a/assets/js/341c85ac.bf75e08d.js b/assets/js/341c85ac.bf75e08d.js new file mode 100644 index 0000000000..b6df2db805 --- /dev/null +++ b/assets/js/341c85ac.bf75e08d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9479],{22281:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.12.1/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/inherited_dependency.md","tags":[],"version":"0.12.1","frontMatter":{"id":"inherited_dependency","slug":"/rules/inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.1/rules/must_be_api"},"next":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/redundant_dependency"}}');var s=d(23420),i=d(65404);const o={id:"inherited_dependency",slug:"/rules/inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},c=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleB"}),", and ",(0,s.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,s.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,s.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,s.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,s.jsx)(n.code,{children:":moduleA"})," -> ",(0,s.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>o,x:()=>c});var t=d(36672);const s={},i=t.createContext(s);function o(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/341f4c6e.7089d269.js b/assets/js/341f4c6e.7089d269.js new file mode 100644 index 0000000000..82df28fc3d --- /dev/null +++ b/assets/js/341f4c6e.7089d269.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5143],{65404:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>a});var t=o(36672);const r={},i=t.createContext(r);function s(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(i.Provider,{value:n},e.children)}},84633:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.12.2/rules/compiler/use_anvil_factory_generation.md","sourceDirName":"rules/compiler","slug":"/rules/use_anvil_factory_generation","permalink":"/ModuleCheck/docs/0.12.2/rules/use_anvil_factory_generation","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/compiler/use_anvil_factory_generation.md","tags":[],"version":"0.12.2","frontMatter":{"id":"use_anvil_factory_generation","slug":"/rules/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","sidebar_label":"Could Use Anvil Factory Generation"},"sidebar":"Docs","previous":{"title":"Project Depth","permalink":"/ModuleCheck/docs/0.12.2/rules/project_depth"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_processor"}}');var r=o(23420),i=o(65404);const s={id:"use_anvil_factory_generation",slug:"/rules/use_anvil_factory_generation",title:"Could Use Anvil Factory Generation",sidebar_label:"Could Use Anvil Factory Generation"},a=void 0,l={},c=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or\nSubcomponents, and it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/35179155.c63741dd.js b/assets/js/35179155.c63741dd.js new file mode 100644 index 0000000000..be2521e501 --- /dev/null +++ b/assets/js/35179155.c63741dd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4151],{57534:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.12.4/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/inherited_dependency.md","tags":[],"version":"0.12.4","frontMatter":{"id":"inherited_dependency","slug":"/rules/inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.4/rules/must_be_api"},"next":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/redundant_dependency"}}');var s=d(23420),i=d(65404);const o={id:"inherited_dependency",slug:"/rules/inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},c=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleB"}),", and ",(0,s.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,s.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,s.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,s.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,s.jsx)(n.code,{children:":moduleA"})," -> ",(0,s.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>o,x:()=>c});var t=d(36672);const s={},i=t.createContext(s);function o(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3566.c9d98388.js b/assets/js/3566.c9d98388.js new file mode 100644 index 0000000000..d655db5639 --- /dev/null +++ b/assets/js/3566.c9d98388.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3566],{13566:(e,c,a)=>{a.d(c,{createRadarServices:()=>k.f});var k=a(24828);a(34939)}}]); \ No newline at end of file diff --git a/assets/js/368eb302.357b41fd.js b/assets/js/368eb302.357b41fd.js new file mode 100644 index 0000000000..5fbac0cae5 --- /dev/null +++ b/assets/js/368eb302.357b41fd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3914],{65404:(e,n,l)=>{l.d(n,{R:()=>d,x:()=>i});var s=l(36672);const r={},t=s.createContext(r);function d(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(t.Provider,{value:n},e.children)}},75305:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","source":"@site/versioned_docs/version-0.12.2/rules/project_depth.md","sourceDirName":"rules","slug":"/rules/project_depth","permalink":"/ModuleCheck/docs/0.12.2/rules/project_depth","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/project_depth.md","tags":[],"version":"0.12.2","frontMatter":{"id":"project_depth","slug":"/rules/project_depth","title":"Project Depth","sidebar_label":"Project Depth"},"sidebar":"Docs","previous":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/overshot_dependency"},"next":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/0.12.2/rules/use_anvil_factory_generation"}}');var r=l(23420),t=l(65404);const d={id:"project_depth",slug:"/rules/project_depth",title:"Project Depth",sidebar_label:"Project Depth"},i=void 0,c={},o=[{value:"Dependencies and Build Concurrency",id:"dependencies-and-build-concurrency",level:3},{value:"Depth",id:"depth",level:3}];function h(e){const n={a:"a",code:"code",em:"em",h3:"h3",hr:"hr",li:"li",mermaid:"mermaid",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"TL;DR - Low depth values mean faster builds and better all-around scalability."}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["It's often useful to think of module dependencies as a directed tree\nor ",(0,r.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Directed_acyclic_graph",children:"directed acyclic graph"}),". If a module is a\nnode, then each module dependency is a child node, and the dependencies of those dependencies are\ngrand-child nodes."]}),"\n",(0,r.jsxs)(n.p,{children:["This is especially useful when thinking about ",(0,r.jsx)(n.strong,{children:"build performance"}),", because the parent-child\nrelationship is clear: ",(0,r.jsx)(n.em,{children:"child nodes must build before parent nodes"}),"."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(:app):::depth2\n\n screen1(:screen-1):::depth1\n screen2(:screen-2):::depth1\n\n lib1(:lib-1):::depth0\n lib2(:lib-2):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n\n screen1 --\x3e lib1\n screen1 --\x3e lib2\n screen2 --\x3e lib2"}),"\n",(0,r.jsx)(n.p,{children:"In the above example,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," must be built before ",(0,r.jsx)(n.code,{children:":screen-1"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-2"})," must be build before ",(0,r.jsx)(n.code,{children:":screen-2"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":screen-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," must be built before ",(0,r.jsx)(n.code,{children:":app"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build\nbefore their parents."}),"\n",(0,r.jsx)(n.h3,{id:"dependencies-and-build-concurrency",children:"Dependencies and Build Concurrency"}),"\n",(0,r.jsx)(n.p,{children:"Individual module builds are always done single-threaded, but multiple modules may build in parallel\nso long as no module in the set depends upon another module in that set. In the above graph,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":scren-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of parallel module builds is determined by the structure of the dependency graph\nand the number of available processor cores on the machine which is performing the build."}),"\n",(0,r.jsx)(n.h3,{id:"depth",children:"Depth"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Depth"})," refers to the maximum number of edges between a module and each of its leaf nodes in the\nproject dependency graph."]}),"\n",(0,r.jsx)(n.p,{children:"Low depth values indicate a shallow or flat project structure with loose (or no) coupling between\nmodules. In a full build, these projects scale well with hardware upgrades because they're able to\nbuild all those independent modules in parallel."}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n subgraph sg [A shallow graph]\n direction TB\n\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 2):::depth2\n\n screen1(depth: 1):::depth1\n screen2(depth: 1):::depth1\n screen3(depth: 1):::depth1\n screen4(depth: 1):::depth1\n\n lib1(depth: 0):::depth0\n lib2(depth: 0):::depth0\n lib3(depth: 0):::depth0\n lib4(depth: 0):::depth0\n lib5(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e lib1\n screen1 --\x3e lib4\n\n screen2 --\x3e lib1\n screen2 --\x3e lib3\n screen2 --\x3e lib4\n\n screen3 --\x3e lib2\n screen3 --\x3e lib3\n screen3 --\x3e lib4\n\n screen4 --\x3e lib3\n screen4 --\x3e lib5\n\n end\n\n style sg opacity:0.0\n"}),"\n",(0,r.jsxs)(n.p,{children:['On the other hand, "deep" projects do not offer many opportunities for parallelization. They have\nproject dependencies which must be built ',(0,r.jsx)(n.em,{children:"sequentially"}),". They also perform poorly in incremental\nbuilds, because a single change to even a mid-level module invalidates cached builds for half of the\nproject."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n style sg opacity:0.0\n subgraph sg [A deep graph]\n direction TB\n\n classDef depth6 fill:#800,stroke:#000,color:#FFF\n classDef depth5 fill:#A50,stroke:#000,color:#FFF\n classDef depth4 fill:#C0B,stroke:#000,color:#000\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 6):::depth6\n\n screen1(depth: 5):::depth5\n screen2(depth: 5):::depth5\n\n screen3(depth: 4):::depth4\n screen4(depth: 4):::depth4\n\n lib1(depth: 3):::depth3\n lib2(depth: 3):::depth3\n\n lib3(depth: 2):::depth2\n lib4(depth: 2):::depth2\n\n lib5(depth: 1):::depth1\n\n lib6(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e screen3\n screen1 --\x3e screen4\n\n screen2 --\x3e screen4\n\n screen3 --\x3e lib1\n screen3 --\x3e lib2\n\n screen4 --\x3e lib1\n screen4 --\x3e lib4\n\n lib1 --\x3e lib3\n lib1 --\x3e lib4\n\n lib2 --\x3e lib3\n\n lib3 --\x3e lib5\n lib4 --\x3e lib5\n\n lib5 --\x3e lib6\n\n end\n"})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/3819.36313666.js b/assets/js/3819.36313666.js new file mode 100644 index 0000000000..065ba6e90b --- /dev/null +++ b/assets/js/3819.36313666.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3819],{33819:(t,e,s)=>{s.d(e,{diagram:()=>E});var i=s(53776),n=s(11889),r=s(97576),a=s(57442),u=(s(84982),s(43545),s(61598)),o=(s(70837),s(24199),s(47794)),l=s(27293),c=s(61274),h=s(80124),d=s(30941),p=class{constructor(){this.vertexCounter=0,this.config=(0,l.D7)(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=l.SV,this.setAccDescription=l.EI,this.setDiagramTitle=l.ke,this.getAccTitle=l.iN,this.getAccDescription=l.m7,this.getDiagramTitle=l.ab,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{(0,l.K2)(this,"FlowDB")}sanitizeText(t){return l.Y2.sanitizeText(t,this.config)}lookUpDomId(t){for(const e of this.vertices.values())if(e.id===t)return e.domId;return t}addVertex(t,e,s,i,r,a,o={},c){if(!t||0===t.trim().length)return;let h;if(void 0!==c){let t;t=c.includes("\n")?c+"\n":"{\n"+c+"\n}",h=(0,n.H)(t,{schema:n.r})}const d=this.edges.find(e=>e.id===t);if(d){const t=h;return void 0!==t?.animate&&(d.animate=t.animate),void(void 0!==t?.animation&&(d.animation=t.animation))}let p,g=this.vertices.get(t);if(void 0===g&&(g={id:t,labelType:"text",domId:"flowchart-"+t+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(t,g)),this.vertexCounter++,void 0!==e?(this.config=(0,l.D7)(),p=this.sanitizeText(e.text.trim()),g.labelType=e.type,p.startsWith('"')&&p.endsWith('"')&&(p=p.substring(1,p.length-1)),g.text=p):void 0===g.text&&(g.text=t),void 0!==s&&(g.type=s),null!=i&&i.forEach(t=>{g.styles.push(t)}),null!=r&&r.forEach(t=>{g.classes.push(t)}),void 0!==a&&(g.dir=a),void 0===g.props?g.props=o:void 0!==o&&Object.assign(g.props,o),void 0!==h){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!(0,u.aP)(h.shape))throw new Error(`No such shape: ${h.shape}.`);g.type=h?.shape}h?.label&&(g.text=h?.label),h?.icon&&(g.icon=h?.icon,h.label?.trim()||g.text!==t||(g.text="")),h?.form&&(g.form=h?.form),h?.pos&&(g.pos=h?.pos),h?.img&&(g.img=h?.img,h.label?.trim()||g.text!==t||(g.text="")),h?.constraint&&(g.constraint=h.constraint),h.w&&(g.assetWidth=Number(h.w)),h.h&&(g.assetHeight=Number(h.h))}}addSingleLink(t,e,s,i){const n={start:t,end:e,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};l.Rm.info("abc78 Got edge...",n);const r=s.text;if(void 0!==r&&(n.text=this.sanitizeText(r.text.trim()),n.text.startsWith('"')&&n.text.endsWith('"')&&(n.text=n.text.substring(1,n.text.length-1)),n.labelType=r.type),void 0!==s&&(n.type=s.type,n.stroke=s.stroke,n.length=s.length>10?10:s.length),i&&!this.edges.some(t=>t.id===i))n.id=i,n.isUserDefinedId=!0;else{const t=this.edges.filter(t=>t.start===n.start&&t.end===n.end);0===t.length?n.id=(0,o.rY)(n.start,n.end,{counter:0,prefix:"L"}):n.id=(0,o.rY)(n.start,n.end,{counter:t.length+1,prefix:"L"})}if(!(this.edges.length<(this.config.maxEdges??500)))throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.\n\nInitialize mermaid with maxEdges set to a higher number to allow more edges.\nYou cannot set this config via configuration inside the diagram as it is a secure config.\nYou have to call mermaid.initialize.`);l.Rm.info("Pushing edge..."),this.edges.push(n)}isLinkData(t){return null!==t&&"object"==typeof t&&"id"in t&&"string"==typeof t.id}addLink(t,e,s){const i=this.isLinkData(s)?s.id.replace("@",""):void 0;l.Rm.info("addLink",t,e,i);for(const n of t)for(const r of e){const a=n===t[t.length-1],u=r===e[0];a&&u?this.addSingleLink(n,r,s,i):this.addSingleLink(n,r,s,void 0)}}updateLinkInterpolate(t,e){t.forEach(t=>{"default"===t?this.edges.defaultInterpolate=e:this.edges[t].interpolate=e})}updateLink(t,e){t.forEach(t=>{if("number"==typeof t&&t>=this.edges.length)throw new Error(`The index ${t} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);"default"===t?this.edges.defaultStyle=e:(this.edges[t].style=e,(this.edges[t]?.style?.length??0)>0&&!this.edges[t]?.style?.some(t=>t?.startsWith("fill"))&&this.edges[t]?.style?.push("fill:none"))})}addClass(t,e){const s=e.join().replace(/\\,/g,"\xa7\xa7\xa7").replace(/,/g,";").replace(/\xa7\xa7\xa7/g,",").split(";");t.split(",").forEach(t=>{let e=this.classes.get(t);void 0===e&&(e={id:t,styles:[],textStyles:[]},this.classes.set(t,e)),null!=s&&s.forEach(t=>{if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)})})}setDirection(t){this.direction=t,/.*</.exec(this.direction)&&(this.direction="RL"),/.*\^/.exec(this.direction)&&(this.direction="BT"),/.*>/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),"TD"===this.direction&&(this.direction="TB")}setClass(t,e){for(const s of t.split(",")){const t=this.vertices.get(s);t&&t.classes.push(e);const i=this.edges.find(t=>t.id===s);i&&i.classes.push(e);const n=this.subGraphLookup.get(s);n&&n.classes.push(e)}}setTooltip(t,e){if(void 0!==e){e=this.sanitizeText(e);for(const s of t.split(","))this.tooltips.set("gen-1"===this.version?this.lookUpDomId(s):s,e)}}setClickFun(t,e,s){const i=this.lookUpDomId(t);if("loose"!==(0,l.D7)().securityLevel)return;if(void 0===e)return;let n=[];if("string"==typeof s){n=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<n.length;t++){let e=n[t].trim();e.startsWith('"')&&e.endsWith('"')&&(e=e.substr(1,e.length-2)),n[t]=e}}0===n.length&&n.push(t);const r=this.vertices.get(t);r&&(r.haveCallback=!0,this.funs.push(()=>{const t=document.querySelector(`[id="${i}"]`);null!==t&&t.addEventListener("click",()=>{o._K.runFunc(e,...n)},!1)}))}setLink(t,e,s){t.split(",").forEach(t=>{const i=this.vertices.get(t);void 0!==i&&(i.link=o._K.formatUrl(e,this.config),i.linkTarget=s)}),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,e,s){t.split(",").forEach(t=>{this.setClickFun(t,e,s)}),this.setClass(t,"clickable")}bindFunctions(t){this.funs.forEach(e=>{e(t)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){let e=(0,c.Ltv)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,c.Ltv)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,c.Ltv)(t).select("svg").selectAll("g.node").on("mouseover",t=>{const s=(0,c.Ltv)(t.currentTarget);if(null===s.attr("title"))return;const i=t.currentTarget?.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(s.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.bottom+"px"),e.html(e.html().replace(/<br\/>/g,"<br/>")),s.classed("hover",!0)}).on("mouseout",t=>{e.transition().duration(500).style("opacity",0);(0,c.Ltv)(t.currentTarget).classed("hover",!1)})}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=(0,l.D7)(),(0,l.IU)()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,e,s){let i=t.text.trim(),n=s.text;t===s&&/\s/.exec(s.text)&&(i=void 0);const r=(0,l.K2)(t=>{const e={boolean:{},number:{},string:{}},s=[];let i;return{nodeList:t.filter(function(t){const n=typeof t;return t.stmt&&"dir"===t.stmt?(i=t.value,!1):""!==t.trim()&&(n in e?!e[n].hasOwnProperty(t)&&(e[n][t]=!0):!s.includes(t)&&s.push(t))}),dir:i}},"uniq")(e.flat()),a=r.nodeList;let u=r.dir;const o=(0,l.D7)().flowchart??{};if(u=u??(o.inheritDir?this.getDirection()??(0,l.D7)().direction??void 0:void 0),"gen-1"===this.version)for(let l=0;l<a.length;l++)a[l]=this.lookUpDomId(a[l]);i=i??"subGraph"+this.subCount,n=n||"",n=this.sanitizeText(n),this.subCount=this.subCount+1;const c={id:i,nodes:a,title:n.trim(),classes:[],dir:u,labelType:s.type};return l.Rm.info("Adding",c.id,c.nodes,c.dir),c.nodes=this.makeUniq(c,this.subGraphs).nodes,this.subGraphs.push(c),this.subGraphLookup.set(i,c),i}getPosForId(t){for(const[e,s]of this.subGraphs.entries())if(s.id===t)return e;return-1}indexNodes2(t,e){const s=this.subGraphs[e].nodes;if(this.secCount=this.secCount+1,this.secCount>2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=e,this.subGraphs[e].id===t)return{result:!0,count:0};let i=0,n=1;for(;i<s.length;){const e=this.getPosForId(s[i]);if(e>=0){const s=this.indexNodes2(t,e);if(s.result)return{result:!0,count:n+s.count};n+=s.count}i+=1}return{result:!1,count:n}}getDepthFirstPos(t){return this.posCrossRef[t]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return!!this.firstGraphFlag&&(this.firstGraphFlag=!1,!0)}destructStartLink(t){let e=t.trim(),s="arrow_open";switch(e[0]){case"<":s="arrow_point",e=e.slice(1);break;case"x":s="arrow_cross",e=e.slice(1);break;case"o":s="arrow_circle",e=e.slice(1)}let i="normal";return e.includes("=")&&(i="thick"),e.includes(".")&&(i="dotted"),{type:s,stroke:i}}countChar(t,e){const s=e.length;let i=0;for(let n=0;n<s;++n)e[n]===t&&++i;return i}destructEndLink(t){const e=t.trim();let s=e.slice(0,-1),i="arrow_open";switch(e.slice(-1)){case"x":i="arrow_cross",e.startsWith("x")&&(i="double_"+i,s=s.slice(1));break;case">":i="arrow_point",e.startsWith("<")&&(i="double_"+i,s=s.slice(1));break;case"o":i="arrow_circle",e.startsWith("o")&&(i="double_"+i,s=s.slice(1))}let n="normal",r=s.length-1;s.startsWith("=")&&(n="thick"),s.startsWith("~")&&(n="invisible");const a=this.countChar(".",s);return a&&(n="dotted",r=a),{type:i,stroke:n,length:r}}destructLink(t,e){const s=this.destructEndLink(t);let i;if(e){if(i=this.destructStartLink(e),i.stroke!==s.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===i.type)i.type=s.type;else{if(i.type!==s.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return"double_arrow"===i.type&&(i.type="double_arrow_point"),i.length=s.length,i}return s}exists(t,e){for(const s of t)if(s.nodes.includes(e))return!0;return!1}makeUniq(t,e){const s=[];return t.nodes.forEach((i,n)=>{this.exists(e,i)||s.push(t.nodes[n])}),{nodes:s}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return"circle"===t.form?"iconCircle":"square"===t.form?"iconSquare":"rounded"===t.form?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,e){return t.find(t=>t.id===e)}destructEdgeType(t){let e="none",s="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":s=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":e=t.replace("double_",""),s=e}return{arrowTypeStart:e,arrowTypeEnd:s}}addNodeFromVertex(t,e,s,i,n,r){const a=s.get(t.id),u=i.get(t.id)??!1,o=this.findNode(e,t.id);if(o)o.cssStyles=t.styles,o.cssCompiledStyles=this.getCompiledStyles(t.classes),o.cssClasses=t.classes.join(" ");else{const s={id:t.id,label:t.text,labelStyle:"",parentId:a,padding:n.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:r,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};u?e.push({...s,isGroup:!0,shape:"rect"}):e.push({...s,isGroup:!1,shape:this.getTypeFromVertex(t)})}}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map(t=>t.trim())),t?.textStyles&&(e=[...e,...t.textStyles??[]].map(t=>t.trim()))}return e}getData(){const t=(0,l.D7)(),e=[],s=[],i=this.getSubGraphs(),n=new Map,r=new Map;for(let u=i.length-1;u>=0;u--){const t=i[u];t.nodes.length>0&&r.set(t.id,!0);for(const e of t.nodes)n.set(e,t.id)}for(let u=i.length-1;u>=0;u--){const s=i[u];e.push({id:s.id,label:s.title,labelStyle:"",parentId:n.get(s.id),padding:8,cssCompiledStyles:this.getCompiledStyles(s.classes),cssClasses:s.classes.join(" "),shape:"rect",dir:s.dir,isGroup:!0,look:t.look})}this.getVertices().forEach(s=>{this.addNodeFromVertex(s,e,n,r,t,t.look||"classic")});const a=this.getEdges();return a.forEach((e,i)=>{const{arrowTypeStart:n,arrowTypeEnd:r}=this.destructEdgeType(e.type),u=[...a.defaultStyle??[]];e.style&&u.push(...e.style);const l={id:(0,o.rY)(e.start,e.end,{counter:i,prefix:"L"},e.id),isUserDefinedId:e.isUserDefinedId,start:e.start,end:e.end,type:e.type??"normal",label:e.text,labelpos:"c",thickness:e.stroke,minlen:e.length,classes:"invisible"===e?.stroke?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":n,arrowTypeEnd:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":r,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(e.classes),labelStyle:u,style:u,pattern:e.stroke,look:t.look,animate:e.animate,animation:e.animation,curve:e.interpolate||this.edges.defaultInterpolate||t.flowchart?.curve};s.push(l)}),{nodes:e,edges:s,other:{},config:t}}defaultConfig(){return l.ME.flowchart}},g={getClasses:(0,l.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,l.K2)(async function(t,e,s,i){l.Rm.info("REF0:"),l.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:n,flowchart:u,layout:h}=(0,l.D7)();let d;"sandbox"===n&&(d=(0,c.Ltv)("#i"+e));const p="sandbox"===n?d.nodes()[0].contentDocument:document;l.Rm.debug("Before getData: ");const g=i.db.getData();l.Rm.debug("Data: ",g);const A=(0,r.A)(e,n),b=i.db.getDirection();g.type=i.type,g.layoutAlgorithm=(0,a.q7)(h),"dagre"===g.layoutAlgorithm&&"elk"===h&&l.Rm.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),g.direction=b,g.nodeSpacing=u?.nodeSpacing||50,g.rankSpacing=u?.rankSpacing||50,g.markers=["point","circle","cross"],g.diagramId=e,l.Rm.debug("REF1:",g),await(0,a.XX)(g,A);const y=g.config.flowchart?.diagramPadding??8;o._K.insertTitle(A,"flowchartTitleText",u?.titleTopMargin||0,i.db.getDiagramTitle()),(0,r.P)(A,y,"flowchart",u?.useMaxWidth||!1);for(const r of g.nodes){const t=(0,c.Ltv)(`#${e} [id="${r.id}"]`);if(!t||!r.link)continue;const s=p.createElementNS("http://www.w3.org/2000/svg","a");s.setAttributeNS("http://www.w3.org/2000/svg","class",r.cssClasses),s.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),"sandbox"===n?s.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):r.linkTarget&&s.setAttributeNS("http://www.w3.org/2000/svg","target",r.linkTarget);const i=t.insert(function(){return s},":first-child"),a=t.select(".label-container");a&&i.append(function(){return a.node()});const u=t.select(".label");u&&i.append(function(){return u.node()})}},"draw")},A=function(){var t=(0,l.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,4],s=[1,3],i=[1,5],n=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],r=[2,2],a=[1,13],u=[1,14],o=[1,15],c=[1,16],h=[1,23],d=[1,25],p=[1,26],g=[1,27],A=[1,49],b=[1,48],y=[1,29],k=[1,30],f=[1,31],m=[1,32],E=[1,33],D=[1,44],C=[1,46],x=[1,42],T=[1,47],S=[1,43],F=[1,50],_=[1,45],v=[1,51],B=[1,52],w=[1,34],L=[1,35],$=[1,36],I=[1,37],R=[1,57],N=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],P=[1,61],K=[1,60],G=[1,62],O=[8,9,11,75,77,78],V=[1,78],M=[1,91],U=[1,96],W=[1,95],Y=[1,92],j=[1,88],z=[1,94],X=[1,90],H=[1,97],q=[1,93],Q=[1,98],Z=[1,89],J=[8,9,10,11,40,75,77,78],tt=[8,9,10,11,40,46,75,77,78],et=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],st=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],it=[44,60,89,102,105,106,109,111,114,115,116],nt=[1,121],rt=[1,122],at=[1,124],ut=[1,123],ot=[44,60,62,74,89,102,105,106,109,111,114,115,116],lt=[1,133],ct=[1,147],ht=[1,148],dt=[1,149],pt=[1,150],gt=[1,135],At=[1,137],bt=[1,141],yt=[1,142],kt=[1,143],ft=[1,144],mt=[1,145],Et=[1,146],Dt=[1,151],Ct=[1,152],xt=[1,131],Tt=[1,132],St=[1,139],Ft=[1,134],_t=[1,138],vt=[1,136],Bt=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],wt=[1,154],Lt=[1,156],$t=[8,9,11],It=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],Rt=[1,176],Nt=[1,172],Pt=[1,173],Kt=[1,177],Gt=[1,174],Ot=[1,175],Vt=[77,116,119],Mt=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],Ut=[10,106],Wt=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Yt=[1,247],jt=[1,245],zt=[1,249],Xt=[1,243],Ht=[1,244],qt=[1,246],Qt=[1,248],Zt=[1,250],Jt=[1,268],te=[8,9,11,106],ee=[8,9,10,11,60,84,105,106,109,110,111,112],se={trace:(0,l.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:(0,l.K2)(function(t,e,s,i,n,r,a){var u=r.length-1;switch(n){case 2:case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 3:(!Array.isArray(r[u])||r[u].length>0)&&r[u-1].push(r[u]),this.$=r[u-1];break;case 4:case 183:case 44:case 54:case 76:case 181:this.$=r[u];break;case 11:i.setDirection("TB"),this.$="TB";break;case 12:i.setDirection(r[u-1]),this.$=r[u-1];break;case 27:this.$=r[u-1].nodes;break;case 33:this.$=i.addSubGraph(r[u-6],r[u-1],r[u-4]);break;case 34:this.$=i.addSubGraph(r[u-3],r[u-1],r[u-3]);break;case 35:this.$=i.addSubGraph(void 0,r[u-1],void 0);break;case 37:this.$=r[u].trim(),i.setAccTitle(this.$);break;case 38:case 39:this.$=r[u].trim(),i.setAccDescription(this.$);break;case 43:case 133:this.$=r[u-1]+r[u];break;case 45:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 46:i.addLink(r[u-2].stmt,r[u],r[u-1]),this.$={stmt:r[u],nodes:r[u].concat(r[u-2].nodes)};break;case 47:i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 48:this.$={stmt:r[u-1],nodes:r[u-1]};break;case 49:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),this.$={stmt:r[u-1],nodes:r[u-1],shapeData:r[u]};break;case 50:this.$={stmt:r[u],nodes:r[u]};break;case 51:case 128:case 130:this.$=[r[u]];break;case 52:i.addVertex(r[u-5][r[u-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u-4]),this.$=r[u-5].concat(r[u]);break;case 53:this.$=r[u-4].concat(r[u]);break;case 55:this.$=r[u-2],i.setClass(r[u-2],r[u]);break;case 56:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"square");break;case 57:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"doublecircle");break;case 58:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"circle");break;case 59:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"ellipse");break;case 60:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"stadium");break;case 61:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"subroutine");break;case 62:this.$=r[u-7],i.addVertex(r[u-7],r[u-1],"rect",void 0,void 0,void 0,Object.fromEntries([[r[u-5],r[u-3]]]));break;case 63:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"cylinder");break;case 64:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"round");break;case 65:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"diamond");break;case 66:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"hexagon");break;case 67:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"odd");break;case 68:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"trapezoid");break;case 69:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"inv_trapezoid");break;case 70:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_right");break;case 71:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_left");break;case 72:this.$=r[u],i.addVertex(r[u]);break;case 73:r[u-1].text=r[u],this.$=r[u-1];break;case 74:case 75:r[u-2].text=r[u-1],this.$=r[u-2];break;case 77:var o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1]};break;case 78:o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1],id:r[u-3]};break;case 79:case 86:case 101:case 103:this.$={text:r[u],type:"text"};break;case 80:case 87:case 102:this.$={text:r[u-1].text+""+r[u],type:r[u-1].type};break;case 81:case 88:this.$={text:r[u],type:"string"};break;case 82:case 89:case 104:this.$={text:r[u],type:"markdown"};break;case 83:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length};break;case 84:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length,id:r[u-1]};break;case 85:this.$=r[u-1];break;case 105:this.$=r[u-4],i.addClass(r[u-2],r[u]);break;case 106:this.$=r[u-4],i.setClass(r[u-2],r[u]);break;case 107:case 115:this.$=r[u-1],i.setClickEvent(r[u-1],r[u]);break;case 108:case 116:this.$=r[u-3],i.setClickEvent(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 109:this.$=r[u-2],i.setClickEvent(r[u-2],r[u-1],r[u]);break;case 110:this.$=r[u-4],i.setClickEvent(r[u-4],r[u-3],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 111:this.$=r[u-2],i.setLink(r[u-2],r[u]);break;case 112:this.$=r[u-4],i.setLink(r[u-4],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 113:this.$=r[u-4],i.setLink(r[u-4],r[u-2],r[u]);break;case 114:this.$=r[u-6],i.setLink(r[u-6],r[u-4],r[u]),i.setTooltip(r[u-6],r[u-2]);break;case 117:this.$=r[u-1],i.setLink(r[u-1],r[u]);break;case 118:this.$=r[u-3],i.setLink(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 119:this.$=r[u-3],i.setLink(r[u-3],r[u-2],r[u]);break;case 120:this.$=r[u-5],i.setLink(r[u-5],r[u-4],r[u]),i.setTooltip(r[u-5],r[u-2]);break;case 121:this.$=r[u-4],i.addVertex(r[u-2],void 0,void 0,r[u]);break;case 122:this.$=r[u-4],i.updateLink([r[u-2]],r[u]);break;case 123:this.$=r[u-4],i.updateLink(r[u-2],r[u]);break;case 124:this.$=r[u-8],i.updateLinkInterpolate([r[u-6]],r[u-2]),i.updateLink([r[u-6]],r[u]);break;case 125:this.$=r[u-8],i.updateLinkInterpolate(r[u-6],r[u-2]),i.updateLink(r[u-6],r[u]);break;case 126:this.$=r[u-6],i.updateLinkInterpolate([r[u-4]],r[u]);break;case 127:this.$=r[u-6],i.updateLinkInterpolate(r[u-4],r[u]);break;case 129:case 131:r[u-2].push(r[u]),this.$=r[u-2];break;case 182:case 184:this.$=r[u-1]+""+r[u];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"}}},"anonymous"),table:[{3:1,4:2,9:e,10:s,12:i},{1:[3]},t(n,r,{5:6}),{4:7,9:e,10:s,12:i},{4:8,9:e,10:s,12:i},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:a,9:u,10:o,11:c,20:17,22:18,23:19,24:20,25:21,26:22,27:h,33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},t(n,[2,9]),t(n,[2,10]),t(n,[2,11]),{8:[1,54],9:[1,55],10:R,15:53,18:56},t(N,[2,3]),t(N,[2,4]),t(N,[2,5]),t(N,[2,6]),t(N,[2,7]),t(N,[2,8]),{8:P,9:K,11:G,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:P,9:K,11:G,21:67},{8:P,9:K,11:G,21:68},{8:P,9:K,11:G,21:69},{8:P,9:K,11:G,21:70},{8:P,9:K,11:G,21:71},{8:P,9:K,10:[1,72],11:G,21:73},t(N,[2,36]),{35:[1,74]},{37:[1,75]},t(N,[2,39]),t(O,[2,50],{18:76,39:77,10:R,40:V}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:M,44:U,60:W,80:[1,86],89:Y,95:[1,83],97:[1,84],101:85,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},t(N,[2,185]),t(N,[2,186]),t(N,[2,187]),t(N,[2,188]),t(J,[2,51]),t(J,[2,54],{46:[1,99]}),t(tt,[2,72],{113:112,29:[1,100],44:A,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:b,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:D,102:C,105:x,106:T,109:S,111:F,114:_,115:v,116:B}),t(et,[2,181]),t(et,[2,142]),t(et,[2,143]),t(et,[2,144]),t(et,[2,145]),t(et,[2,146]),t(et,[2,147]),t(et,[2,148]),t(et,[2,149]),t(et,[2,150]),t(et,[2,151]),t(et,[2,152]),t(n,[2,12]),t(n,[2,18]),t(n,[2,19]),{9:[1,113]},t(st,[2,26],{18:114,10:R}),t(N,[2,27]),{42:115,43:38,44:A,45:39,47:40,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},t(N,[2,40]),t(N,[2,41]),t(N,[2,42]),t(it,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:nt,81:rt,116:at,119:ut},{75:[1,125],77:[1,126]},t(ot,[2,83]),t(N,[2,28]),t(N,[2,29]),t(N,[2,30]),t(N,[2,31]),t(N,[2,32]),{10:lt,12:ct,14:ht,27:dt,28:127,32:pt,44:gt,60:At,75:bt,80:[1,129],81:[1,130],83:140,84:yt,85:kt,86:ft,87:mt,88:Et,89:Dt,90:Ct,91:128,105:xt,109:Tt,111:St,114:Ft,115:_t,116:vt},t(Bt,r,{5:153}),t(N,[2,37]),t(N,[2,38]),t(O,[2,48],{44:wt}),t(O,[2,49],{18:155,10:R,40:Lt}),t(J,[2,44]),{44:A,47:157,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},{102:[1,158],103:159,105:[1,160]},{44:A,47:161,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},{44:A,47:162,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t($t,[2,115],{120:167,10:[1,166],14:M,44:U,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,117],{10:[1,168]}),t(It,[2,183]),t(It,[2,170]),t(It,[2,171]),t(It,[2,172]),t(It,[2,173]),t(It,[2,174]),t(It,[2,175]),t(It,[2,176]),t(It,[2,177]),t(It,[2,178]),t(It,[2,179]),t(It,[2,180]),{44:A,47:169,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},{30:170,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:178,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:180,50:[1,179],67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:181,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:182,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:183,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{109:[1,184]},{30:185,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:186,65:[1,187],67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:188,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:189,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:190,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},t(et,[2,182]),t(n,[2,20]),t(st,[2,25]),t(O,[2,46],{39:191,18:192,10:R,40:V}),t(it,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{77:[1,196],79:197,116:at,119:ut},t(Vt,[2,79]),t(Vt,[2,81]),t(Vt,[2,82]),t(Vt,[2,168]),t(Vt,[2,169]),{76:198,79:120,80:nt,81:rt,116:at,119:ut},t(ot,[2,84]),{8:P,9:K,10:lt,11:G,12:ct,14:ht,21:200,27:dt,29:[1,199],32:pt,44:gt,60:At,75:bt,83:140,84:yt,85:kt,86:ft,87:mt,88:Et,89:Dt,90:Ct,91:201,105:xt,109:Tt,111:St,114:Ft,115:_t,116:vt},t(Mt,[2,101]),t(Mt,[2,103]),t(Mt,[2,104]),t(Mt,[2,157]),t(Mt,[2,158]),t(Mt,[2,159]),t(Mt,[2,160]),t(Mt,[2,161]),t(Mt,[2,162]),t(Mt,[2,163]),t(Mt,[2,164]),t(Mt,[2,165]),t(Mt,[2,166]),t(Mt,[2,167]),t(Mt,[2,90]),t(Mt,[2,91]),t(Mt,[2,92]),t(Mt,[2,93]),t(Mt,[2,94]),t(Mt,[2,95]),t(Mt,[2,96]),t(Mt,[2,97]),t(Mt,[2,98]),t(Mt,[2,99]),t(Mt,[2,100]),{6:11,7:12,8:a,9:u,10:o,11:c,20:17,22:18,23:19,24:20,25:21,26:22,27:h,32:[1,202],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},{10:R,18:203},{44:[1,204]},t(J,[2,43]),{10:[1,205],44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:112,114:_,115:v,116:B},{10:[1,206]},{10:[1,207],106:[1,208]},t(Ut,[2,128]),{10:[1,209],44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:112,114:_,115:v,116:B},{10:[1,210],44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:112,114:_,115:v,116:B},{80:[1,211]},t($t,[2,109],{10:[1,212]}),t($t,[2,111],{10:[1,213]}),{80:[1,214]},t(It,[2,184]),{80:[1,215],98:[1,216]},t(J,[2,55],{113:112,44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,114:_,115:v,116:B}),{31:[1,217],67:Rt,82:218,116:Kt,117:Gt,118:Ot},t(Wt,[2,86]),t(Wt,[2,88]),t(Wt,[2,89]),t(Wt,[2,153]),t(Wt,[2,154]),t(Wt,[2,155]),t(Wt,[2,156]),{49:[1,219],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{30:220,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{51:[1,221],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{53:[1,222],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{55:[1,223],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{57:[1,224],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{60:[1,225]},{64:[1,226],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{66:[1,227],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{30:228,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{31:[1,229],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{67:Rt,69:[1,230],71:[1,231],82:218,116:Kt,117:Gt,118:Ot},{67:Rt,69:[1,233],71:[1,232],82:218,116:Kt,117:Gt,118:Ot},t(O,[2,45],{18:155,10:R,40:Lt}),t(O,[2,47],{44:wt}),t(it,[2,75]),t(it,[2,74]),{62:[1,234],67:Rt,82:218,116:Kt,117:Gt,118:Ot},t(it,[2,77]),t(Vt,[2,80]),{77:[1,235],79:197,116:at,119:ut},{30:236,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},t(Bt,r,{5:237}),t(Mt,[2,102]),t(N,[2,35]),{43:238,44:A,45:39,47:40,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},{10:R,18:239},{10:Yt,60:jt,84:zt,92:240,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:251,104:[1,252],105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:253,104:[1,254],105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{105:[1,255]},{10:Yt,60:jt,84:zt,92:256,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{44:A,47:257,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t($t,[2,116]),t($t,[2,118],{10:[1,261]}),t($t,[2,119]),t(tt,[2,56]),t(Wt,[2,87]),t(tt,[2,57]),{51:[1,262],67:Rt,82:218,116:Kt,117:Gt,118:Ot},t(tt,[2,64]),t(tt,[2,59]),t(tt,[2,60]),t(tt,[2,61]),{109:[1,263]},t(tt,[2,63]),t(tt,[2,65]),{66:[1,264],67:Rt,82:218,116:Kt,117:Gt,118:Ot},t(tt,[2,67]),t(tt,[2,68]),t(tt,[2,70]),t(tt,[2,69]),t(tt,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(it,[2,78]),{31:[1,265],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{6:11,7:12,8:a,9:u,10:o,11:c,20:17,22:18,23:19,24:20,25:21,26:22,27:h,32:[1,266],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},t(J,[2,53]),{43:267,44:A,45:39,47:40,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,121],{106:Jt}),t(te,[2,130],{108:269,10:Yt,60:jt,84:zt,105:Xt,109:Ht,110:qt,111:Qt,112:Zt}),t(ee,[2,132]),t(ee,[2,134]),t(ee,[2,135]),t(ee,[2,136]),t(ee,[2,137]),t(ee,[2,138]),t(ee,[2,139]),t(ee,[2,140]),t(ee,[2,141]),t($t,[2,122],{106:Jt}),{10:[1,270]},t($t,[2,123],{106:Jt}),{10:[1,271]},t(Ut,[2,129]),t($t,[2,105],{106:Jt}),t($t,[2,106],{113:112,44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,114:_,115:v,116:B}),t($t,[2,110]),t($t,[2,112],{10:[1,272]}),t($t,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:P,9:K,11:G,21:277},t(N,[2,34]),t(J,[2,52]),{10:Yt,60:jt,84:zt,105:Xt,107:278,108:242,109:Ht,110:qt,111:Qt,112:Zt},t(ee,[2,133]),{14:M,44:U,60:W,89:Y,101:279,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},{14:M,44:U,60:W,89:Y,101:280,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},{98:[1,281]},t($t,[2,120]),t(tt,[2,58]),{30:282,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},t(tt,[2,66]),t(Bt,r,{5:283}),t(te,[2,131],{108:269,10:Yt,60:jt,84:zt,105:Xt,109:Ht,110:qt,111:Qt,112:Zt}),t($t,[2,126],{120:167,10:[1,284],14:M,44:U,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,127],{120:167,10:[1,285],14:M,44:U,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,114]),{31:[1,286],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{6:11,7:12,8:a,9:u,10:o,11:c,20:17,22:18,23:19,24:20,25:21,26:22,27:h,32:[1,287],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},{10:Yt,60:jt,84:zt,92:288,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:289,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},t(tt,[2,62]),t(N,[2,33]),t($t,[2,124],{106:Jt}),t($t,[2,125],{106:Jt})],defaultActions:{},parseError:(0,l.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,l.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,u="",o=0,c=0,h=0,d=r.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(g.yy[A]=this.yy[A]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;r.push(b);var y=p.options&&p.options.ranges;function k(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,l.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,l.K2)(k,"lex");for(var f,m,E,D,C,x,T,S,F,_={};;){if(E=s[s.length-1],this.defaultActions[E]?D=this.defaultActions[E]:(null==f&&(f=k()),D=a[E]&&a[E][f]),void 0===D||!D.length||!D[0]){var v="";for(x in F=[],a[E])this.terminals_[x]&&x>2&&F.push("'"+this.terminals_[x]+"'");v=p.showPosition?"Parse error on line "+(o+1)+":\n"+p.showPosition()+"\nExpecting "+F.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(v,{text:p.match,token:this.terminals_[f]||f,line:p.yylineno,loc:b,expected:F})}if(D[0]instanceof Array&&D.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+f);switch(D[0]){case 1:s.push(f),n.push(p.yytext),r.push(p.yylloc),s.push(D[1]),f=null,m?(f=m,m=null):(c=p.yyleng,u=p.yytext,o=p.yylineno,b=p.yylloc,h>0&&h--);break;case 2:if(T=this.productions_[D[1]][1],_.$=n[n.length-T],_._$={first_line:r[r.length-(T||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(T||1)].first_column,last_column:r[r.length-1].last_column},y&&(_._$.range=[r[r.length-(T||1)].range[0],r[r.length-1].range[1]]),void 0!==(C=this.performAction.apply(_,[u,c,o,g.yy,D[1],n,r].concat(d))))return C;T&&(s=s.slice(0,-1*T*2),n=n.slice(0,-1*T),r=r.slice(0,-1*T)),s.push(this.productions_[D[1]][0]),n.push(_.$),r.push(_._$),S=a[s[s.length-2]][s[s.length-1]],s.push(S);break;case 3:return!0}}return!0},"parse")},ie=function(){return{EOF:1,parseError:(0,l.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,l.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,l.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,l.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,l.K2)(function(){return this._more=!0,this},"more"),reject:(0,l.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,l.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,l.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,l.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,l.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,l.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,l.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,l.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,l.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,l.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,l.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,l.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,l.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,l.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,l.K2)(function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:case 12:case 14:case 17:case 20:case 23:case 33:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),e.yytext="",40;case 8:return this.pushState("shapeDataStr"),40;case 9:return this.popState(),40;case 10:const s=/\n\s*/g;return e.yytext=e.yytext.replace(s,"<br/>"),40;case 11:return 40;case 13:this.begin("callbackname");break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 18:return 96;case 19:return"MD_STR";case 21:this.begin("md_string");break;case 22:return"STR";case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 34:return 88;case 35:case 36:case 37:return t.lex.firstGraph()&&this.begin("dir"),12;case 38:return 27;case 39:return 32;case 40:case 41:case 42:case 43:return 98;case 44:return this.popState(),13;case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:return this.popState(),14;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:case 102:return 111;case 62:return 46;case 63:return 60;case 64:case 103:return 44;case 65:return 8;case 66:return 106;case 67:case 101:return 115;case 68:case 71:case 74:return this.popState(),77;case 69:return this.pushState("edgeText"),75;case 70:case 73:case 76:return 119;case 72:return this.pushState("thickEdgeText"),75;case 75:return this.pushState("dottedEdgeText"),75;case 77:return 77;case 78:return this.popState(),53;case 79:case 115:return"TEXT";case 80:return this.pushState("ellipseText"),52;case 81:return this.popState(),55;case 82:return this.pushState("text"),54;case 83:return this.popState(),57;case 84:return this.pushState("text"),56;case 85:return 58;case 86:return this.pushState("text"),67;case 87:return this.popState(),64;case 88:return this.pushState("text"),63;case 89:return this.popState(),49;case 90:return this.pushState("text"),48;case 91:return this.popState(),69;case 92:return this.popState(),71;case 93:return 117;case 94:return this.pushState("trapText"),68;case 95:return this.pushState("trapText"),70;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;case 108:return this.pushState("text"),62;case 109:return this.popState(),51;case 110:return this.pushState("text"),50;case 111:return this.popState(),31;case 112:return this.pushState("text"),29;case 113:return this.popState(),66;case 114:return this.pushState("text"),65;case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}}}();function ne(){this.yy={}}return se.lexer=ie,(0,l.K2)(ne,"Parser"),ne.prototype=se,se.Parser=ne,new ne}();A.parser=A;var b=A,y=Object.assign({},b);y.parse=t=>{const e=t.replace(/}\s*\n/g,"}\n");return b.parse(e)};var k=y,f=(0,l.K2)((t,e)=>{const s=h.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return d.A(i,n,r,e)},"fade"),m=(0,l.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .label text,span {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .katex path {\n fill: #000;\n stroke: #000;\n stroke-width: 1px;\n }\n\n .rough-node .label,.node .label, .image-shape .label, .icon-shape .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n\n .root .anchor path {\n fill: ${t.lineColor} !important;\n stroke-width: 0;\n stroke: ${t.lineColor};\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${f(t.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n\n rect.text {\n fill: none;\n stroke-width: 0;\n }\n\n .icon-shape, .image-shape {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n padding: 2px;\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n ${(0,i.o)()}\n`,"getStyles"),E={parser:k,get db(){return new p},renderer:g,styles:m,init:(0,l.K2)(t=>{t.flowchart||(t.flowchart={}),t.layout&&(0,l.XV)({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,(0,l.XV)({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}},53776:(t,e,s)=>{s.d(e,{o:()=>i});var i=(0,s(27293).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},80124:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(46554),n=s(55385);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])},97576:(t,e,s)=>{s.d(e,{A:()=>r,P:()=>a});var i=s(27293),n=s(61274),r=(0,i.K2)((t,e)=>{let s;"sandbox"===e&&(s=(0,n.Ltv)("#i"+t));return("sandbox"===e?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${t}"]`)},"getDiagramElement"),a=(0,i.K2)((t,e,s,n)=>{t.attr("class",s);const{width:r,height:a,x:l,y:c}=u(t,e);(0,i.a$)(t,a,r,n);const h=o(l,c,r,a,e);t.attr("viewBox",h),i.Rm.debug(`viewBox configured: ${h} with padding: ${e}`)},"setupViewPortForSVG"),u=(0,i.K2)((t,e)=>{const s=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*e,height:s.height+2*e,x:s.x,y:s.y}},"calculateDimensionsWithPadding"),o=(0,i.K2)((t,e,s,i,n)=>`${t-n} ${e-n} ${s} ${i}`,"createViewBox")}}]); \ No newline at end of file diff --git a/assets/js/388f1aef.4435dd88.js b/assets/js/388f1aef.4435dd88.js new file mode 100644 index 0000000000..79b6413489 --- /dev/null +++ b/assets/js/388f1aef.4435dd88.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4955],{28859:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.12.5/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/inherited_dependency.md","tags":[],"version":"0.12.5","frontMatter":{"id":"inherited_dependency","slug":"/rules/inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/rules/must_be_api"},"next":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/rules/redundant_dependency"}}');var s=d(23420),i=d(65404);const o={id:"inherited_dependency",slug:"/rules/inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},c=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleB"}),", and ",(0,s.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,s.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,s.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,s.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,s.jsx)(n.code,{children:":moduleA"})," -> ",(0,s.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>o,x:()=>c});var t=d(36672);const s={},i=t.createContext(s);function o(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3abc021e.f63cc35f.js b/assets/js/3abc021e.f63cc35f.js new file mode 100644 index 0000000000..ce681981e2 --- /dev/null +++ b/assets/js/3abc021e.f63cc35f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6966],{51302:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>c,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"Dependencies","source":"@site/versioned_docs/version-0.12.1/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.12.1/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/quickstart.mdx","tags":[],"version":"0.12.1","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.1/configuration"}}');var a=r(23420),s=r(65404),l=r(65780),o=r(58118);const c={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},i=void 0,u={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,a.jsxs)(l.A,{children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven("https://oss.sonatype.org/content/repositories/snapshots/")\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.12.1"\n}\n'})})]}),(0,a.jsxs)(o.A,{value:"Groovy",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:'// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven {\n url "https://oss.sonatype.org/content/repositories/snapshots"\n }\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.12.1'\n}\n"})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,a.jsx)(n.p,{children:"all checks"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,a.jsx)(n.p,{children:"all checks with auto-correct"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"check sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,a.jsx)(n.p,{children:"apply sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"report depths of each module"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckDepths\n"})}),"\n",(0,a.jsx)(n.p,{children:"generate (module-only) dependency graphs"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckGraphs\n"})}),"\n",(0,a.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,a.jsxs)(n.p,{children:["See ",(0,a.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.1/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,a.jsxs)(l.A,{children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,a.jsx)(n.p,{children:"--or--"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,a.jsx)(o.A,{value:"Groovy",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},58118:(e,n,r)=>{r.d(n,{A:()=>l});r(36672);var t=r(13526);const a={tabItem:"tabItem_qogc"};var s=r(23420);function l({children:e,hidden:n,className:r}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,t.A)(a.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>o});var t=r(36672);const a={},s=t.createContext(a);function l(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),t.createElement(s.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>y});var t=r(36672),a=r(13526),s=r(10452),l=r(85291),o=r(10914),c=r(41201),i=r(40622),u=r(42925);function d(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:t}})=>({value:e,label:n,attributes:r,default:t}))}(r);return function(e){const n=(0,i.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,l.W6)(),a=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,c.aZ)(a),(0,t.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})},[a,r])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:a}=e,s=h(e),[l,c]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s})),[i,d]=g({queryString:r,groupId:a}),[m,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,a]=(0,u.Dv)(n);return[r,(0,t.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),b=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,o.A)(()=>{b&&c(b)},[b]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),f(e)},[d,f,s]),tabValues:s}}var f=r(74682);const b={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:t,tabValues:l}){const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),i=e=>{const n=e.currentTarget,a=o.indexOf(n),s=l[a].value;s!==r&&(c(n),t(s))},u=e=>{let n=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:t})=>(0,v.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:u,onClick:i,...t,className:(0,a.A)("tabs__item",b.tabItem,t?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const s=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===r);return e?(0,t.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:s.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,v.jsx)(x,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/3e41c308.24bd886f.js b/assets/js/3e41c308.24bd886f.js new file mode 100644 index 0000000000..78a498dbcf --- /dev/null +++ b/assets/js/3e41c308.24bd886f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8596],{35212:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in applying","source":"@site/versioned_docs/version-0.11.0/rules/kapt/unused_kapt_plugin.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/kapt/unused_kapt_plugin.md","tags":[],"version":"0.11.0","frontMatter":{"id":"unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.11.0/rules/kapt/custom_kapt_matchers"}}');var o=n(23420),u=n(65404);const r={id:"unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,a={},p=[];function c(e){const t={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(t.p,{children:["If there are no ",(0,o.jsx)(t.code,{children:"kapt"}),"/",(0,o.jsx)(t.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in applying\nthe ",(0,o.jsx)(t.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function l(e={}){const{wrapper:t}={...(0,u.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},65404:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>i});var s=n(36672);const o={},u=s.createContext(o);function r(e){const t=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3e68fbe7.9af0cab4.js b/assets/js/3e68fbe7.9af0cab4.js new file mode 100644 index 0000000000..7e64b4faa5 --- /dev/null +++ b/assets/js/3e68fbe7.9af0cab4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5241],{62027:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>d,toc:()=>i});const d=JSON.parse('{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.12.2/rules/unused_dependency.md","sourceDirName":"rules","slug":"/rules/unused_dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/unused_dependency.md","tags":[],"version":"0.12.2","frontMatter":{"id":"unused_dependency","slug":"/rules/unused_dependency","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.2/ci-workflow"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.2/rules/must_be_api"}}');var t=s(23420),u=s(65404);const o={id:"unused_dependency",slug:"/rules/unused_dependency",title:"Unused Dependency",sidebar_label:"Unused Dependency"},c=void 0,r={},i=[];function l(e){const n={p:"p",...(0,u.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,t.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>c});var d=s(36672);const t={},u=d.createContext(t);function o(e){const n=d.useContext(u);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),d.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3fb0a163.6b305344.js b/assets/js/3fb0a163.6b305344.js new file mode 100644 index 0000000000..5f7996ea01 --- /dev/null +++ b/assets/js/3fb0a163.6b305344.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9805],{58118:(e,t,n)=>{n.d(t,{A:()=>o});n(36672);var r=n(13526);const a={tabItem:"tabItem_qogc"};var s=n(23420);function o({children:e,hidden:t,className:n}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,n),hidden:t,children:e})}},65404:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>u});var r=n(36672);const a={},s=r.createContext(a);function o(e){const t=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:t},e.children)}},65780:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(36672),a=n(13526),s=n(10452),o=n(85291),u=n(10914),l=n(41201),i=n(40622),c=n(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function f(e){const{values:t,children:n}=e;return(0,r.useMemo)(()=>{const e=t??function(e){return d(e).map(({props:{value:e,label:t,attributes:n,default:r}})=>({value:e,label:t,attributes:n,default:r}))}(n);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[t,n])}function p({value:e,tabValues:t}){return t.some(t=>t.value===e)}function h({queryString:e=!1,groupId:t}){const n=(0,o.W6)(),a=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,l.aZ)(a),(0,r.useCallback)(e=>{if(!a)return;const t=new URLSearchParams(n.location.search);t.set(a,e),n.replace({...n.location,search:t.toString()})},[a,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,s=f(e),[o,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:s})),[i,d]=h({queryString:n,groupId:a}),[m,b]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,a]=(0,c.Dv)(t);return[n,(0,r.useCallback)(e=>{t&&a.set(e)},[t,a])]}({groupId:a}),g=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,u.A)(()=>{g&&l(g)},[g]);return{selectedValue:o,selectValue:(0,r.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,s]),tabValues:s}}var b=n(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var y=n(23420);function v({className:e,block:t,selectedValue:n,selectValue:r,tabValues:o}){const u=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),i=e=>{const t=e.currentTarget,a=u.indexOf(t),s=o[a].value;s!==n&&(l(t),r(s))},c=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},e),children:o.map(({value:e,label:t,attributes:r})=>(0,y.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{u.push(e)},onKeyDown:c,onClick:i,...r,className:(0,a.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function k({lazy:e,children:t,selectedValue:n}){const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===n);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:s.map((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function j(e){const t=m(e);return(0,y.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(k,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(t))}},98273:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.12.2/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.12.2/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/configuration.mdx","tags":[],"version":"0.12.2","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.12.2/"},"next":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.2/suppressing-findings"}}');var a=n(23420),s=n(65404),o=n(65780),u=n(58118);const l={id:"configuration",sidebar_label:"Configuration"},i=void 0,c={},d=[];function f(e){const t={code:"code",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(o.A,{children:[(0,a.jsx)(u.A,{value:"Kotlin",default:!0,children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'plugins {\n id("com.rickbusarow.module-check") version "0.12.2"\n}\n\nmoduleCheck {\n\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = setOf(":app")\n\n additionalCodeGenerators = listOf(\n modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n name = "My Processor",\n generatorMavenCoordinates = "my-project.codegen:processor",\n annotationNames = listOf(\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n )\n )\n )\n\n reports {\n checkstyle {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n}\n'})})}),(0,a.jsx)(u.A,{value:"Groovy",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'plugins {\n id \'com.rickbusarow.module-check\' version \'0.12.2\'\n}\n\nmoduleCheck {\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = [\':test:core-jvm\', \':test:core-android\']\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = [\':app\']\n\n additionalCodeGenerators = [\n new modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n \'My Processor\',\n \'my-project.codegen:processor\',\n [\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n ]\n )\n ]\n\n reports {\n checkstyle {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n it.enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n it.outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n\n}\n'})})})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}}}]); \ No newline at end of file diff --git a/assets/js/400cc4b7.f8b9ca7c.js b/assets/js/400cc4b7.f8b9ca7c.js new file mode 100644 index 0000000000..35d0c1ee67 --- /dev/null +++ b/assets/js/400cc4b7.f8b9ca7c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1472],{32652:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","source":"@site/versioned_docs/version-0.12.3/rules/compiler/unused_kapt_plugin.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/compiler/unused_kapt_plugin.md","tags":[],"version":"0.12.3","frontMatter":{"id":"unused_kapt_plugin","slug":"/rules/unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.3/rules/custom_kapt_matchers"}}');var o=t(23420),u=t(65404);const r={id:"unused_kapt_plugin",slug:"/rules/unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,l={},c=[];function p(e){const n={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(n.p,{children:["If there are no ",(0,o.jsx)(n.code,{children:"kapt"}),"/",(0,o.jsx)(n.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in\napplying the ",(0,o.jsx)(n.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function d(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>i});var s=t(36672);const o={},u=s.createContext(o);function r(e){const n=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4047c50f.c0b206fe.js b/assets/js/4047c50f.c0b206fe.js new file mode 100644 index 0000000000..ab7f90c462 --- /dev/null +++ b/assets/js/4047c50f.c0b206fe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9514],{65404:(e,n,o)=>{o.d(n,{R:()=>d,x:()=>r});var t=o(36672);const s={},i=t.createContext(s);function d(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),t.createElement(i.Provider,{value:n},e.children)}},72275:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>c,frontMatter:()=>d,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","source":"@site/versioned_docs/version-0.12.0/rules/android/unused_kotlin_android_extensions.md","sourceDirName":"rules/android","slug":"/rules/android/unused_kotlin_android_extensions","permalink":"/ModuleCheck/docs/0.12.0/rules/android/unused_kotlin_android_extensions","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/android/unused_kotlin_android_extensions.md","tags":[],"version":"0.12.0","frontMatter":{"id":"unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","sidebar_label":"Unused Kotlin Android Extensions"},"sidebar":"Docs","previous":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.0/rules/android/disable_viewbinding"}}');var s=o(23420),i=o(65404);const d={id:"unused_kotlin_android_extensions",title:"Unused Kotlin Android Extensions",sidebar_label:"Unused Kotlin Android Extensions"},r=void 0,u={},a=[];function l(e){const n={p:"p",...(0,i.R)(),...e.components};return(0,s.jsx)(n.p,{children:"Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any\nsynthetic imports or deprecated @Parcelize annotation"})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/assets/js/411bcc8b.06632b9e.js b/assets/js/411bcc8b.06632b9e.js new file mode 100644 index 0000000000..2612f912ca --- /dev/null +++ b/assets/js/411bcc8b.06632b9e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[91],{5170:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.12.4/rules/compiler/use_anvil_factory_generation.md","sourceDirName":"rules/compiler","slug":"/rules/use_anvil_factory_generation","permalink":"/ModuleCheck/docs/0.12.4/rules/use_anvil_factory_generation","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/compiler/use_anvil_factory_generation.md","tags":[],"version":"0.12.4","frontMatter":{"id":"use_anvil_factory_generation","slug":"/rules/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","sidebar_label":"Could Use Anvil Factory Generation"},"sidebar":"Docs","previous":{"title":"Project Depth","permalink":"/ModuleCheck/docs/0.12.4/rules/project_depth"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_processor"}}');var r=o(23420),i=o(65404);const s={id:"use_anvil_factory_generation",slug:"/rules/use_anvil_factory_generation",title:"Could Use Anvil Factory Generation",sidebar_label:"Could Use Anvil Factory Generation"},a=void 0,l={},c=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or\nSubcomponents, and it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},65404:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>a});var t=o(36672);const r={},i=t.createContext(r);function s(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/41b23040.971baa32.js b/assets/js/41b23040.971baa32.js new file mode 100644 index 0000000000..3646ac5e71 --- /dev/null +++ b/assets/js/41b23040.971baa32.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7559],{41563:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/next/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/next/configuration","docId":"configuration","unlisted":false},{"type":"link","label":"Suppressing Findings","href":"/ModuleCheck/docs/next/suppressing-findings","docId":"suppressing-findings","unlisted":false},{"type":"link","label":"CI Workflow","href":"/ModuleCheck/docs/next/ci-workflow","docId":"ci-workflow","unlisted":false},{"type":"category","label":"Rules","collapsed":false,"items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/next/rules/unused_dependency","docId":"rules/unused_dependency","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/next/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/next/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"type":"link","label":"Redundant Dependency","href":"/ModuleCheck/docs/next/rules/redundant_dependency","docId":"rules/redundant_dependency","unlisted":false},{"type":"link","label":"Overshot Dependency","href":"/ModuleCheck/docs/next/rules/overshot_dependency","docId":"rules/overshot_dependency","unlisted":false},{"type":"link","label":"Project Depth","href":"/ModuleCheck/docs/next/rules/project_depth","docId":"rules/project_depth","unlisted":false},{"type":"category","label":"Compiler","collapsed":false,"items":[{"type":"link","label":"Could Use Anvil Factory Generation","href":"/ModuleCheck/docs/next/rules/use_anvil_factory_generation","docId":"rules/compiler/use_anvil_factory_generation","unlisted":false},{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/next/rules/unused_kapt_processor","docId":"rules/compiler/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/next/rules/unused_kapt_plugin","docId":"rules/compiler/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/next/rules/custom_kapt_matchers","docId":"rules/compiler/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"type":"category","label":"Sorting","collapsed":false,"items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/next/rules/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/next/rules/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"type":"category","label":"Android","collapsed":false,"items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/next/rules/disable_android_resources","docId":"rules/android/disable_android_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/next/rules/disable_view_binding","docId":"rules/android/disable_view_binding","unlisted":false},{"type":"link","label":"Unused Kotlin Android Extensions","href":"/ModuleCheck/docs/next/rules/unused_kotlin_android_extensions","docId":"rules/android/unused_kotlin_android_extensions","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"ci-workflow":{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","sidebar":"Docs"},"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"Dependencies","sidebar":"Docs"},"rules/android/disable_android_resources":{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_view_binding":{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/android/unused_kotlin_android_extensions":{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","sidebar":"Docs"},"rules/compiler/custom_kapt_matchers":{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/compiler/unused_kapt_plugin":{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","sidebar":"Docs"},"rules/compiler/unused_kapt_processor":{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/compiler/use_anvil_factory_generation":{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/overshot_dependency":{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","sidebar":"Docs"},"rules/project_depth":{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","sidebar":"Docs"},"rules/redundant_dependency":{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused_dependency":{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"},"suppressing-findings":{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/41bca987.cbb68b80.js b/assets/js/41bca987.cbb68b80.js new file mode 100644 index 0000000000..96a4d0aeea --- /dev/null +++ b/assets/js/41bca987.cbb68b80.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5706],{65404:(e,n,d)=>{d.d(n,{R:()=>s,x:()=>i});var t=d(36672);const o={},c=t.createContext(o);function s(e){const n=t.useContext(c);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),t.createElement(c.Provider,{value:n},e.children)}},83252:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>i,default:()=>a,frontMatter:()=>s,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.12.0/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/inherited_dependency.md","tags":[],"version":"0.12.0","frontMatter":{"id":"inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.0/rules/must_be_api"},"next":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/redundant_dependency"}}');var o=d(23420),c=d(65404);const s={id:"inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},i=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,c.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleB"}),", and ",(0,o.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,o.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,o.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,o.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,o.jsx)(n.code,{children:":moduleA"})," -> ",(0,o.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/4326.ada317d4.js b/assets/js/4326.ada317d4.js new file mode 100644 index 0000000000..5e4128d94a --- /dev/null +++ b/assets/js/4326.ada317d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4326],{3602:(e,n,t)=>{t.d(n,{A:()=>c});var r=t(76095),o=t(42849),i=t(22859);const u=function(e){return function(n,t,u){var a=Object(n);if(!(0,o.A)(n)){var s=(0,r.A)(t,3);n=(0,i.A)(n),t=function(e){return s(a[e],e,a)}}var d=e(n,t,u);return d>-1?a[s?n[d]:d]:void 0}};var a=t(46482),s=t(81066),d=Math.max;const c=u(function(e,n,t){var o=null==e?0:e.length;if(!o)return-1;var i=null==t?0:(0,s.A)(t);return i<0&&(i=d(o+i,0)),(0,a.A)(e,(0,r.A)(n,3),i)})},5237:(e,n,t)=>{t.d(n,{A:()=>d});var r=t(34713),o=t(16957),i=t(16599),u=t(96920),a=Object.prototype,s=a.hasOwnProperty;const d=(0,r.A)(function(e,n){e=Object(e);var t=-1,r=n.length,d=r>2?n[2]:void 0;for(d&&(0,i.A)(n[0],n[1],d)&&(r=1);++t<r;)for(var c=n[t],h=(0,u.A)(c),f=-1,v=h.length;++f<v;){var l=h[f],g=e[l];(void 0===g||(0,o.A)(g,a[l])&&!s.call(e,l))&&(e[l]=c[l])}return e})},13884:(e,n,t)=>{t.d(n,{A:()=>o});var r=t(13027);const o=function(e,n,t){for(var o=-1,i=e.length;++o<i;){var u=e[o],a=n(u);if(null!=a&&(void 0===s?a==a&&!(0,r.A)(a):t(a,s)))var s=a,d=u}return d}},19641:(e,n,t)=>{t.d(n,{T:()=>w});var r=t(48203),o=t(41863),i=t(22859),u=t(89949),a=t(90570),s=t(83129),d=t(60707),c=t(49759),h=t(34713),f=t(80171),v=t(33998);const l=(0,h.A)(function(e){return(0,f.A)((0,c.A)(e,1,v.A,!0))});var g=t(6064),p=t(96800),A="\0";class w{constructor(e={}){this._isDirected=!Object.prototype.hasOwnProperty.call(e,"directed")||e.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(e,"multigraph")&&e.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(e,"compound")&&e.compound,this._label=void 0,this._defaultNodeLabelFn=r.A(void 0),this._defaultEdgeLabelFn=r.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[A]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return o.A(e)||(e=r.A(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return i.A(this._nodes)}sources(){var e=this;return u.A(this.nodes(),function(n){return a.A(e._in[n])})}sinks(){var e=this;return u.A(this.nodes(),function(n){return a.A(e._out[n])})}setNodes(e,n){var t=arguments,r=this;return s.A(e,function(e){t.length>1?r.setNode(e,n):r.setNode(e)}),this}setNode(e,n){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=n),this):(this._nodes[e]=arguments.length>1?n:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=A,this._children[e]={},this._children[A][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var n=e=>this.removeEdge(this._edgeObjs[e]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],s.A(this.children(e),e=>{this.setParent(e)}),delete this._children[e]),s.A(i.A(this._in[e]),n),delete this._in[e],delete this._preds[e],s.A(i.A(this._out[e]),n),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,n){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(d.A(n))n=A;else{for(var t=n+="";!d.A(t);t=this.parent(t))if(t===e)throw new Error("Setting "+n+" as parent of "+e+" would create a cycle");this.setNode(n)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=n,this._children[n][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var n=this._parent[e];if(n!==A)return n}}children(e){if(d.A(e)&&(e=A),this._isCompound){var n=this._children[e];if(n)return i.A(n)}else{if(e===A)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var n=this._preds[e];if(n)return i.A(n)}successors(e){var n=this._sucs[e];if(n)return i.A(n)}neighbors(e){var n=this.predecessors(e);if(n)return l(n,this.successors(e))}isLeaf(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length}filterNodes(e){var n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph());var t=this;s.A(this._nodes,function(t,r){e(r)&&n.setNode(r,t)}),s.A(this._edgeObjs,function(e){n.hasNode(e.v)&&n.hasNode(e.w)&&n.setEdge(e,t.edge(e))});var r={};function o(e){var i=t.parent(e);return void 0===i||n.hasNode(i)?(r[e]=i,i):i in r?r[i]:o(i)}return this._isCompound&&s.A(n.nodes(),function(e){n.setParent(e,o(e))}),n}setDefaultEdgeLabel(e){return o.A(e)||(e=r.A(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return g.A(this._edgeObjs)}setPath(e,n){var t=this,r=arguments;return p.A(e,function(e,o){return r.length>1?t.setEdge(e,o,n):t.setEdge(e,o),o}),this}setEdge(){var e,n,t,r,o=!1,i=arguments[0];"object"==typeof i&&null!==i&&"v"in i?(e=i.v,n=i.w,t=i.name,2===arguments.length&&(r=arguments[1],o=!0)):(e=i,n=arguments[1],t=arguments[3],arguments.length>2&&(r=arguments[2],o=!0)),e=""+e,n=""+n,d.A(t)||(t=""+t);var u=y(this._isDirected,e,n,t);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,u))return o&&(this._edgeLabels[u]=r),this;if(!d.A(t)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(n),this._edgeLabels[u]=o?r:this._defaultEdgeLabelFn(e,n,t);var a=function(e,n,t,r){var o=""+n,i=""+t;if(!e&&o>i){var u=o;o=i,i=u}var a={v:o,w:i};r&&(a.name=r);return a}(this._isDirected,e,n,t);return e=a.v,n=a.w,Object.freeze(a),this._edgeObjs[u]=a,b(this._preds[n],e),b(this._sucs[e],n),this._in[n][u]=a,this._out[e][u]=a,this._edgeCount++,this}edge(e,n,t){var r=1===arguments.length?_(this._isDirected,arguments[0]):y(this._isDirected,e,n,t);return this._edgeLabels[r]}hasEdge(e,n,t){var r=1===arguments.length?_(this._isDirected,arguments[0]):y(this._isDirected,e,n,t);return Object.prototype.hasOwnProperty.call(this._edgeLabels,r)}removeEdge(e,n,t){var r=1===arguments.length?_(this._isDirected,arguments[0]):y(this._isDirected,e,n,t),o=this._edgeObjs[r];return o&&(e=o.v,n=o.w,delete this._edgeLabels[r],delete this._edgeObjs[r],m(this._preds[n],e),m(this._sucs[e],n),delete this._in[n][r],delete this._out[e][r],this._edgeCount--),this}inEdges(e,n){var t=this._in[e];if(t){var r=g.A(t);return n?u.A(r,function(e){return e.v===n}):r}}outEdges(e,n){var t=this._out[e];if(t){var r=g.A(t);return n?u.A(r,function(e){return e.w===n}):r}}nodeEdges(e,n){var t=this.inEdges(e,n);if(t)return t.concat(this.outEdges(e,n))}}function b(e,n){e[n]?e[n]++:e[n]=1}function m(e,n){--e[n]||delete e[n]}function y(e,n,t,r){var o=""+n,i=""+t;if(!e&&o>i){var u=o;o=i,i=u}return o+"\x01"+i+"\x01"+(d.A(r)?"\0":r)}function _(e,n){return y(e,n.v,n.w,n.name)}w.prototype._nodeCount=0,w.prototype._edgeCount=0},22675:(e,n,t)=>{t.d(n,{A:()=>u});var r=t(13884),o=t(23855),i=t(56117);const u=function(e){return e&&e.length?(0,r.A)(e,i.A,o.A):void 0}},23855:(e,n,t)=>{t.d(n,{A:()=>r});const r=function(e,n){return e<n}},31361:(e,n,t)=>{t.d(n,{A:()=>i});var r=t(44753),o=t(42849);const i=function(e,n){var t=-1,i=(0,o.A)(e)?Array(e.length):[];return(0,r.A)(e,function(e,r,o){i[++t]=n(e,r,o)}),i}},48663:(e,n,t)=>{t.d(n,{A:()=>r});const r=function(e){var n=null==e?0:e.length;return n?e[n-1]:void 0}},50586:(e,n,t)=>{t.d(n,{A:()=>u});var r=t(80565),o=t(95526),i=t(97427);const u=function(e){return"string"==typeof e||!(0,o.A)(e)&&(0,i.A)(e)&&"[object String]"==(0,r.A)(e)}},52540:(e,n,t)=>{t.d(n,{A:()=>u});var r=Object.prototype.hasOwnProperty;const o=function(e,n){return null!=e&&r.call(e,n)};var i=t(96923);const u=function(e,n){return null!=e&&(0,i.A)(e,n,o)}},57420:(e,n,t)=>{t.d(n,{T:()=>r.T});var r=t(19641)},60129:(e,n,t)=>{t.d(n,{A:()=>o});var r=t(49759);const o=function(e){return(null==e?0:e.length)?(0,r.A)(e,1):[]}},71159:(e,n,t)=>{t.d(n,{A:()=>c});var r=t(80499),o=t(63406),i=t(60870),u=t(31408),a=t(49084),s=t(31528);const d=function(e,n,t,r){if(!(0,a.A)(e))return e;for(var d=-1,c=(n=(0,i.A)(n,e)).length,h=c-1,f=e;null!=f&&++d<c;){var v=(0,s.A)(n[d]),l=t;if("__proto__"===v||"constructor"===v||"prototype"===v)return e;if(d!=h){var g=f[v];void 0===(l=r?r(g,v,f):void 0)&&(l=(0,a.A)(g)?g:(0,u.A)(n[d+1])?[]:{})}(0,o.A)(f,v,l),f=f[v]}return e};const c=function(e,n,t){for(var o=-1,u=n.length,a={};++o<u;){var s=n[o],c=(0,r.A)(e,s);t(c,s)&&d(a,(0,i.A)(s,e),c)}return a}},72185:(e,n,t)=>{t.d(n,{A:()=>a});var r=t(22663),o=t(76095),i=t(31361),u=t(95526);const a=function(e,n){return((0,u.A)(e)?r.A:i.A)(e,(0,o.A)(n,3))}},74326:(e,n,t)=>{t.d(n,{Zp:()=>Rn});var r=t(83129),o=t(53261),i=0;const u=function(e){var n=++i;return(0,o.A)(e)+n};var a=t(48203),s=t(60129),d=t(72185),c=Math.ceil,h=Math.max;const f=function(e,n,t,r){for(var o=-1,i=h(c((n-e)/(t||1)),0),u=Array(i);i--;)u[r?i:++o]=e,e+=t;return u};var v=t(16599),l=t(97001);const g=function(e){return function(n,t,r){return r&&"number"!=typeof r&&(0,v.A)(n,t,r)&&(t=r=void 0),n=(0,l.A)(n),void 0===t?(t=n,n=0):t=(0,l.A)(t),r=void 0===r?n<t?1:-1:(0,l.A)(r),f(n,t,r,e)}}();var p=t(57420);class A{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,n=e._prev;if(n!==e)return w(n),n}enqueue(e){var n=this._sentinel;e._prev&&e._next&&w(e),e._next=n._next,n._next._prev=e,n._next=e,e._prev=n}toString(){for(var e=[],n=this._sentinel,t=n._prev;t!==n;)e.push(JSON.stringify(t,b)),t=t._prev;return"["+e.join(", ")+"]"}}function w(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function b(e,n){if("_next"!==e&&"_prev"!==e)return n}var m=a.A(1);function y(e,n){if(e.nodeCount()<=1)return[];var t=function(e,n){var t=new p.T,o=0,i=0;r.A(e.nodes(),function(e){t.setNode(e,{v:e,in:0,out:0})}),r.A(e.edges(),function(e){var r=t.edge(e.v,e.w)||0,u=n(e),a=r+u;t.setEdge(e.v,e.w,a),i=Math.max(i,t.node(e.v).out+=u),o=Math.max(o,t.node(e.w).in+=u)});var u=g(i+o+3).map(function(){return new A}),a=o+1;return r.A(t.nodes(),function(e){E(u,a,t.node(e))}),{graph:t,buckets:u,zeroIdx:a}}(e,n||m),o=function(e,n,t){var r,o=[],i=n[n.length-1],u=n[0];for(;e.nodeCount();){for(;r=u.dequeue();)_(e,n,t,r);for(;r=i.dequeue();)_(e,n,t,r);if(e.nodeCount())for(var a=n.length-2;a>0;--a)if(r=n[a].dequeue()){o=o.concat(_(e,n,t,r,!0));break}}return o}(t.graph,t.buckets,t.zeroIdx);return s.A(d.A(o,function(n){return e.outEdges(n.v,n.w)}))}function _(e,n,t,o,i){var u=i?[]:void 0;return r.A(e.inEdges(o.v),function(r){var o=e.edge(r),a=e.node(r.v);i&&u.push({v:r.v,w:r.w}),a.out-=o,E(n,t,a)}),r.A(e.outEdges(o.v),function(r){var o=e.edge(r),i=r.w,u=e.node(i);u.in-=o,E(n,t,u)}),e.removeNode(o.v),u}function E(e,n,t){t.out?t.in?e[t.out-t.in+n].enqueue(t):e[e.length-1].enqueue(t):e[0].enqueue(t)}function x(e){var n="greedy"===e.graph().acyclicer?y(e,function(e){return function(n){return e.edge(n).weight}}(e)):function(e){var n=[],t={},o={};function i(u){Object.prototype.hasOwnProperty.call(o,u)||(o[u]=!0,t[u]=!0,r.A(e.outEdges(u),function(e){Object.prototype.hasOwnProperty.call(t,e.w)?n.push(e):i(e.w)}),delete t[u])}return r.A(e.nodes(),i),n}(e);r.A(n,function(n){var t=e.edge(n);e.removeEdge(n),t.forwardName=n.name,t.reversed=!0,e.setEdge(n.w,n.v,t,u("rev"))})}var k=t(75856),O=t(71159),N=t(85973);const P=function(e,n){return(0,O.A)(e,n,function(n,t){return(0,N.A)(e,t)})};var j=t(71398),C=t(22470);const I=function(e){return(0,C.A)((0,j.A)(e,void 0,s.A),e+"")}(function(e,n){return null==e?{}:P(e,n)});var L=t(5237),T=t(13884);const M=function(e,n){return e>n};var R=t(56117);const F=function(e){return e&&e.length?(0,T.A)(e,R.A,M):void 0};var D=t(48663),S=t(35745),G=t(94578),V=t(76095);const B=function(e,n){var t={};return n=(0,V.A)(n,3),(0,G.A)(e,function(e,r,o){(0,S.A)(t,r,n(e,r,o))}),t};var q=t(60707),Y=t(22675),z=t(52540),$=t(57454);const J=function(){return $.A.Date.now()};function Z(e,n,t,r){var o;do{o=u(r)}while(e.hasNode(o));return t.dummy=n,e.setNode(o,t),o}function H(e){var n=new p.T({multigraph:e.isMultigraph()}).setGraph(e.graph());return r.A(e.nodes(),function(t){e.children(t).length||n.setNode(t,e.node(t))}),r.A(e.edges(),function(t){n.setEdge(t,e.edge(t))}),n}function K(e,n){var t,r,o=e.x,i=e.y,u=n.x-o,a=n.y-i,s=e.width/2,d=e.height/2;if(!u&&!a)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(a)*s>Math.abs(u)*d?(a<0&&(d=-d),t=d*u/a,r=d):(u<0&&(s=-s),t=s,r=s*a/u),{x:o+t,y:i+r}}function Q(e){var n=d.A(g(W(e)+1),function(){return[]});return r.A(e.nodes(),function(t){var r=e.node(t),o=r.rank;q.A(o)||(n[o][r.order]=t)}),n}function U(e,n,t,r){var o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),Z(e,"border",o,n)}function W(e){return F(d.A(e.nodes(),function(n){var t=e.node(n).rank;if(!q.A(t))return t}))}function X(e,n){var t=J();try{return n()}finally{console.log(e+" time: "+(J()-t)+"ms")}}function ee(e,n){return n()}function ne(e,n,t,r,o,i){var u={width:0,height:0,rank:i,borderType:n},a=o[n][i-1],s=Z(e,"border",u,t);o[n][i]=s,e.setParent(s,r),a&&e.setEdge(a,s,{weight:1})}function te(e){var n=e.graph().rankdir.toLowerCase();"bt"!==n&&"rl"!==n||function(e){r.A(e.nodes(),function(n){ie(e.node(n))}),r.A(e.edges(),function(n){var t=e.edge(n);r.A(t.points,ie),Object.prototype.hasOwnProperty.call(t,"y")&&ie(t)})}(e),"lr"!==n&&"rl"!==n||(!function(e){r.A(e.nodes(),function(n){ue(e.node(n))}),r.A(e.edges(),function(n){var t=e.edge(n);r.A(t.points,ue),Object.prototype.hasOwnProperty.call(t,"x")&&ue(t)})}(e),re(e))}function re(e){r.A(e.nodes(),function(n){oe(e.node(n))}),r.A(e.edges(),function(n){oe(e.edge(n))})}function oe(e){var n=e.width;e.width=e.height,e.height=n}function ie(e){e.y=-e.y}function ue(e){var n=e.x;e.x=e.y,e.y=n}function ae(e){e.graph().dummyChains=[],r.A(e.edges(),function(n){!function(e,n){var t=n.v,r=e.node(t).rank,o=n.w,i=e.node(o).rank,u=n.name,a=e.edge(n),s=a.labelRank;if(i===r+1)return;e.removeEdge(n);var d,c,h=void 0;for(c=0,++r;r<i;++c,++r)a.points=[],d=Z(e,"edge",h={width:0,height:0,edgeLabel:a,edgeObj:n,rank:r},"_d"),r===s&&(h.width=a.width,h.height=a.height,h.dummy="edge-label",h.labelpos=a.labelpos),e.setEdge(t,d,{weight:a.weight},u),0===c&&e.graph().dummyChains.push(d),t=d;e.setEdge(t,o,{weight:a.weight},u)}(e,n)})}var se=t(23855);const de=function(e,n){return e&&e.length?(0,T.A)(e,(0,V.A)(n,2),se.A):void 0};function ce(e){var n={};r.A(e.sources(),function t(r){var o=e.node(r);if(Object.prototype.hasOwnProperty.call(n,r))return o.rank;n[r]=!0;var i=Y.A(d.A(e.outEdges(r),function(n){return t(n.w)-e.edge(n).minlen}));return i!==Number.POSITIVE_INFINITY&&null!=i||(i=0),o.rank=i})}function he(e,n){return e.node(n.w).rank-e.node(n.v).rank-e.edge(n).minlen}function fe(e){var n,t,r=new p.T({directed:!1}),o=e.nodes()[0],i=e.nodeCount();for(r.setNode(o,{});ve(r,e)<i;)n=le(r,e),t=r.hasNode(n.v)?he(e,n):-he(e,n),ge(r,e,t);return r}function ve(e,n){return r.A(e.nodes(),function t(o){r.A(n.nodeEdges(o),function(r){var i=r.v,u=o===i?r.w:i;e.hasNode(u)||he(n,r)||(e.setNode(u,{}),e.setEdge(o,u,{}),t(u))})}),e.nodeCount()}function le(e,n){return de(n.edges(),function(t){if(e.hasNode(t.v)!==e.hasNode(t.w))return he(n,t)})}function ge(e,n,t){r.A(e.nodes(),function(e){n.node(e).rank+=t})}var pe=t(3602),Ae=t(89949);a.A(1);a.A(1);t(84738),t(44254),t(42849),t(50586);(0,t(43818).A)("length");RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var we="\\ud800-\\udfff",be="["+we+"]",me="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",ye="\\ud83c[\\udffb-\\udfff]",_e="[^"+we+"]",Ee="(?:\\ud83c[\\udde6-\\uddff]){2}",xe="[\\ud800-\\udbff][\\udc00-\\udfff]",ke="(?:"+me+"|"+ye+")"+"?",Oe="[\\ufe0e\\ufe0f]?",Ne=Oe+ke+("(?:\\u200d(?:"+[_e,Ee,xe].join("|")+")"+Oe+ke+")*"),Pe="(?:"+[_e+me+"?",me,Ee,xe,be].join("|")+")";RegExp(ye+"(?="+ye+")|"+Pe+Ne,"g");function je(){}je.prototype=new Error;var Ce=t(95526);function Ie(e,n,t){Ce.A(n)||(n=[n]);var o=(e.isDirected()?e.successors:e.neighbors).bind(e),i=[],u={};return r.A(n,function(n){if(!e.hasNode(n))throw new Error("Graph does not have node: "+n);Le(e,n,"post"===t,u,o,i)}),i}function Le(e,n,t,o,i,u){Object.prototype.hasOwnProperty.call(o,n)||(o[n]=!0,t||u.push(n),r.A(i(n),function(n){Le(e,n,t,o,i,u)}),t&&u.push(n))}t(19641);function Te(e){e=function(e){var n=(new p.T).setGraph(e.graph());return r.A(e.nodes(),function(t){n.setNode(t,e.node(t))}),r.A(e.edges(),function(t){var r=n.edge(t.v,t.w)||{weight:0,minlen:1},o=e.edge(t);n.setEdge(t.v,t.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})}),n}(e),ce(e);var n,t=fe(e);for(Fe(t),Me(t,e);n=Se(t);)Ve(t,e,n,Ge(t,e,n))}function Me(e,n){var t=function(e,n){return Ie(e,n,"post")}(e,e.nodes());t=t.slice(0,t.length-1),r.A(t,function(t){!function(e,n,t){var r=e.node(t),o=r.parent;e.edge(t,o).cutvalue=Re(e,n,t)}(e,n,t)})}function Re(e,n,t){var o=e.node(t).parent,i=!0,u=n.edge(t,o),a=0;return u||(i=!1,u=n.edge(o,t)),a=u.weight,r.A(n.nodeEdges(t),function(r){var u,s,d=r.v===t,c=d?r.w:r.v;if(c!==o){var h=d===i,f=n.edge(r).weight;if(a+=h?f:-f,u=t,s=c,e.hasEdge(u,s)){var v=e.edge(t,c).cutvalue;a+=h?-v:v}}}),a}function Fe(e,n){arguments.length<2&&(n=e.nodes()[0]),De(e,{},1,n)}function De(e,n,t,o,i){var u=t,a=e.node(o);return n[o]=!0,r.A(e.neighbors(o),function(r){Object.prototype.hasOwnProperty.call(n,r)||(t=De(e,n,t,r,o))}),a.low=u,a.lim=t++,i?a.parent=i:delete a.parent,t}function Se(e){return pe.A(e.edges(),function(n){return e.edge(n).cutvalue<0})}function Ge(e,n,t){var r=t.v,o=t.w;n.hasEdge(r,o)||(r=t.w,o=t.v);var i=e.node(r),u=e.node(o),a=i,s=!1;i.lim>u.lim&&(a=u,s=!0);var d=Ae.A(n.edges(),function(n){return s===Be(e,e.node(n.v),a)&&s!==Be(e,e.node(n.w),a)});return de(d,function(e){return he(n,e)})}function Ve(e,n,t,o){var i=t.v,u=t.w;e.removeEdge(i,u),e.setEdge(o.v,o.w,{}),Fe(e),Me(e,n),function(e,n){var t=pe.A(e.nodes(),function(e){return!n.node(e).parent}),o=function(e,n){return Ie(e,n,"pre")}(e,t);o=o.slice(1),r.A(o,function(t){var r=e.node(t).parent,o=n.edge(t,r),i=!1;o||(o=n.edge(r,t),i=!0),n.node(t).rank=n.node(r).rank+(i?o.minlen:-o.minlen)})}(e,n)}function Be(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}function qe(e){switch(e.graph().ranker){case"network-simplex":default:ze(e);break;case"tight-tree":!function(e){ce(e),fe(e)}(e);break;case"longest-path":Ye(e)}}Te.initLowLimValues=Fe,Te.initCutValues=Me,Te.calcCutValue=Re,Te.leaveEdge=Se,Te.enterEdge=Ge,Te.exchangeEdges=Ve;var Ye=ce;function ze(e){Te(e)}var $e=t(6064),Je=t(96800);function Ze(e){var n=Z(e,"root",{},"_root"),t=function(e){var n={};function t(o,i){var u=e.children(o);u&&u.length&&r.A(u,function(e){t(e,i+1)}),n[o]=i}return r.A(e.children(),function(e){t(e,1)}),n}(e),o=F($e.A(t))-1,i=2*o+1;e.graph().nestingRoot=n,r.A(e.edges(),function(n){e.edge(n).minlen*=i});var u=function(e){return Je.A(e.edges(),function(n,t){return n+e.edge(t).weight},0)}(e)+1;r.A(e.children(),function(r){He(e,n,i,u,o,t,r)}),e.graph().nodeRankFactor=i}function He(e,n,t,o,i,u,a){var s=e.children(a);if(s.length){var d=U(e,"_bt"),c=U(e,"_bb"),h=e.node(a);e.setParent(d,a),h.borderTop=d,e.setParent(c,a),h.borderBottom=c,r.A(s,function(r){He(e,n,t,o,i,u,r);var s=e.node(r),h=s.borderTop?s.borderTop:r,f=s.borderBottom?s.borderBottom:r,v=s.borderTop?o:2*o,l=h!==f?1:i-u[a]+1;e.setEdge(d,h,{weight:v,minlen:l,nestingEdge:!0}),e.setEdge(f,c,{weight:v,minlen:l,nestingEdge:!0})}),e.parent(a)||e.setEdge(n,d,{weight:0,minlen:i+u[a]})}else a!==n&&e.setEdge(n,a,{weight:0,minlen:t})}var Ke=t(98020);const Qe=function(e){return(0,Ke.A)(e,5)};function Ue(e,n,t){var o=function(e){var n;for(;e.hasNode(n=u("_root")););return n}(e),i=new p.T({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(n){return e.node(n)});return r.A(e.nodes(),function(u){var a=e.node(u),s=e.parent(u);(a.rank===n||a.minRank<=n&&n<=a.maxRank)&&(i.setNode(u),i.setParent(u,s||o),r.A(e[t](u),function(n){var t=n.v===u?n.w:n.v,r=i.edge(t,u),o=q.A(r)?0:r.weight;i.setEdge(t,u,{weight:e.edge(n).weight+o})}),Object.prototype.hasOwnProperty.call(a,"minRank")&&i.setNode(u,{borderLeft:a.borderLeft[n],borderRight:a.borderRight[n]}))}),i}var We=t(63406);const Xe=function(e,n,t){for(var r=-1,o=e.length,i=n.length,u={};++r<o;){var a=r<i?n[r]:void 0;t(u,e[r],a)}return u};const en=function(e,n){return Xe(e||[],n||[],We.A)};var nn=t(49759),tn=t(22663),rn=t(80499),on=t(31361);const un=function(e,n){var t=e.length;for(e.sort(n);t--;)e[t]=e[t].value;return e};var an=t(5220),sn=t(13027);const dn=function(e,n){if(e!==n){var t=void 0!==e,r=null===e,o=e==e,i=(0,sn.A)(e),u=void 0!==n,a=null===n,s=n==n,d=(0,sn.A)(n);if(!a&&!d&&!i&&e>n||i&&u&&s&&!a&&!d||r&&u&&s||!t&&s||!o)return 1;if(!r&&!i&&!d&&e<n||d&&t&&o&&!r&&!i||a&&t&&o||!u&&o||!s)return-1}return 0};const cn=function(e,n,t){for(var r=-1,o=e.criteria,i=n.criteria,u=o.length,a=t.length;++r<u;){var s=dn(o[r],i[r]);if(s)return r>=a?s:s*("desc"==t[r]?-1:1)}return e.index-n.index};const hn=function(e,n,t){n=n.length?(0,tn.A)(n,function(e){return(0,Ce.A)(e)?function(n){return(0,rn.A)(n,1===e.length?e[0]:e)}:e}):[R.A];var r=-1;n=(0,tn.A)(n,(0,an.A)(V.A));var o=(0,on.A)(e,function(e,t,o){return{criteria:(0,tn.A)(n,function(n){return n(e)}),index:++r,value:e}});return un(o,function(e,n){return cn(e,n,t)})};const fn=(0,t(34713).A)(function(e,n){if(null==e)return[];var t=n.length;return t>1&&(0,v.A)(e,n[0],n[1])?n=[]:t>2&&(0,v.A)(n[0],n[1],n[2])&&(n=[n[0]]),hn(e,(0,nn.A)(n,1),[])});function vn(e,n){for(var t=0,r=1;r<n.length;++r)t+=ln(e,n[r-1],n[r]);return t}function ln(e,n,t){for(var o=en(t,d.A(t,function(e,n){return n})),i=s.A(d.A(n,function(n){return fn(d.A(e.outEdges(n),function(n){return{pos:o[n.w],weight:e.edge(n).weight}}),"pos")})),u=1;u<t.length;)u<<=1;var a=2*u-1;u-=1;var c=d.A(new Array(a),function(){return 0}),h=0;return r.A(i.forEach(function(e){var n=e.pos+u;c[n]+=e.weight;for(var t=0;n>0;)n%2&&(t+=c[n+1]),c[n=n-1>>1]+=e.weight;h+=e.weight*t})),h}function gn(e,n){var t={};return r.A(e,function(e,n){var r=t[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:n};q.A(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)}),r.A(n.edges(),function(e){var n=t[e.v],r=t[e.w];q.A(n)||q.A(r)||(r.indegree++,n.out.push(t[e.w]))}),function(e){var n=[];function t(e){return function(n){n.merged||(q.A(n.barycenter)||q.A(e.barycenter)||n.barycenter>=e.barycenter)&&function(e,n){var t=0,r=0;e.weight&&(t+=e.barycenter*e.weight,r+=e.weight);n.weight&&(t+=n.barycenter*n.weight,r+=n.weight);e.vs=n.vs.concat(e.vs),e.barycenter=t/r,e.weight=r,e.i=Math.min(n.i,e.i),n.merged=!0}(e,n)}}function o(n){return function(t){t.in.push(n),0===--t.indegree&&e.push(t)}}for(;e.length;){var i=e.pop();n.push(i),r.A(i.in.reverse(),t(i)),r.A(i.out,o(i))}return d.A(Ae.A(n,function(e){return!e.merged}),function(e){return I(e,["vs","i","barycenter","weight"])})}(Ae.A(t,function(e){return!e.indegree}))}function pn(e,n){var t,o=function(e,n){var t={lhs:[],rhs:[]};return r.A(e,function(e){n(e)?t.lhs.push(e):t.rhs.push(e)}),t}(e,function(e){return Object.prototype.hasOwnProperty.call(e,"barycenter")}),i=o.lhs,u=fn(o.rhs,function(e){return-e.i}),a=[],d=0,c=0,h=0;i.sort((t=!!n,function(e,n){return e.barycenter<n.barycenter?-1:e.barycenter>n.barycenter?1:t?n.i-e.i:e.i-n.i})),h=An(a,u,h),r.A(i,function(e){h+=e.vs.length,a.push(e.vs),d+=e.barycenter*e.weight,c+=e.weight,h=An(a,u,h)});var f={vs:s.A(a)};return c&&(f.barycenter=d/c,f.weight=c),f}function An(e,n,t){for(var r;n.length&&(r=D.A(n)).i<=t;)n.pop(),e.push(r.vs),t++;return t}function wn(e,n,t,o){var i=e.children(n),u=e.node(n),a=u?u.borderLeft:void 0,c=u?u.borderRight:void 0,h={};a&&(i=Ae.A(i,function(e){return e!==a&&e!==c}));var f=function(e,n){return d.A(n,function(n){var t=e.inEdges(n);if(t.length){var r=Je.A(t,function(n,t){var r=e.edge(t),o=e.node(t.v);return{sum:n.sum+r.weight*o.order,weight:n.weight+r.weight}},{sum:0,weight:0});return{v:n,barycenter:r.sum/r.weight,weight:r.weight}}return{v:n}})}(e,i);r.A(f,function(n){if(e.children(n.v).length){var r=wn(e,n.v,t,o);h[n.v]=r,Object.prototype.hasOwnProperty.call(r,"barycenter")&&(i=n,u=r,q.A(i.barycenter)?(i.barycenter=u.barycenter,i.weight=u.weight):(i.barycenter=(i.barycenter*i.weight+u.barycenter*u.weight)/(i.weight+u.weight),i.weight+=u.weight))}var i,u});var v=gn(f,t);!function(e,n){r.A(e,function(e){e.vs=s.A(e.vs.map(function(e){return n[e]?n[e].vs:e}))})}(v,h);var l=pn(v,o);if(a&&(l.vs=s.A([a,l.vs,c]),e.predecessors(a).length)){var g=e.node(e.predecessors(a)[0]),p=e.node(e.predecessors(c)[0]);Object.prototype.hasOwnProperty.call(l,"barycenter")||(l.barycenter=0,l.weight=0),l.barycenter=(l.barycenter*l.weight+g.order+p.order)/(l.weight+2),l.weight+=2}return l}function bn(e){var n=W(e),t=mn(e,g(1,n+1),"inEdges"),o=mn(e,g(n-1,-1,-1),"outEdges"),i=function(e){var n={},t=Ae.A(e.nodes(),function(n){return!e.children(n).length}),o=F(d.A(t,function(n){return e.node(n).rank})),i=d.A(g(o+1),function(){return[]}),u=fn(t,function(n){return e.node(n).rank});return r.A(u,function t(o){if(!z.A(n,o)){n[o]=!0;var u=e.node(o);i[u.rank].push(o),r.A(e.successors(o),t)}}),i}(e);_n(e,i);for(var u,a=Number.POSITIVE_INFINITY,s=0,c=0;c<4;++s,++c){yn(s%2?t:o,s%4>=2);var h=vn(e,i=Q(e));h<a&&(c=0,u=Qe(i),a=h)}_n(e,u)}function mn(e,n,t){return d.A(n,function(n){return Ue(e,n,t)})}function yn(e,n){var t=new p.T;r.A(e,function(e){var o=e.graph().root,i=wn(e,o,t,n);r.A(i.vs,function(n,t){e.node(n).order=t}),function(e,n,t){var o,i={};r.A(t,function(t){for(var r,u,a=e.parent(t);a;){if((r=e.parent(a))?(u=i[r],i[r]=a):(u=o,o=a),u&&u!==a)return void n.setEdge(u,a);a=r}})}(e,t,i.vs)})}function _n(e,n){r.A(n,function(n){r.A(n,function(n,t){e.node(n).order=t})})}function En(e){var n=function(e){var n={},t=0;function o(i){var u=t;r.A(e.children(i),o),n[i]={low:u,lim:t++}}return r.A(e.children(),o),n}(e);r.A(e.graph().dummyChains,function(t){for(var r=e.node(t),o=r.edgeObj,i=function(e,n,t,r){var o,i,u=[],a=[],s=Math.min(n[t].low,n[r].low),d=Math.max(n[t].lim,n[r].lim);o=t;do{o=e.parent(o),u.push(o)}while(o&&(n[o].low>s||d>n[o].lim));i=o,o=r;for(;(o=e.parent(o))!==i;)a.push(o);return{path:u.concat(a.reverse()),lca:i}}(e,n,o.v,o.w),u=i.path,a=i.lca,s=0,d=u[s],c=!0;t!==o.w;){if(r=e.node(t),c){for(;(d=u[s])!==a&&e.node(d).maxRank<r.rank;)s++;d===a&&(c=!1)}if(!c){for(;s<u.length-1&&e.node(d=u[s+1]).minRank<=r.rank;)s++;d=u[s]}e.setParent(t,d),t=e.successors(t)[0]}})}var xn=t(86413);const kn=function(e,n){return e&&(0,G.A)(e,(0,xn.A)(n))};var On=t(88749),Nn=t(96920);const Pn=function(e,n){return null==e?e:(0,On.A)(e,(0,xn.A)(n),Nn.A)};function jn(e,n){var t={};return Je.A(n,function(n,o){var i=0,u=0,a=n.length,s=D.A(o);return r.A(o,function(n,d){var c=function(e,n){if(e.node(n).dummy)return pe.A(e.predecessors(n),function(n){return e.node(n).dummy})}(e,n),h=c?e.node(c).order:a;(c||n===s)&&(r.A(o.slice(u,d+1),function(n){r.A(e.predecessors(n),function(r){var o=e.node(r),u=o.order;!(u<i||h<u)||o.dummy&&e.node(n).dummy||Cn(t,r,n)})}),u=d+1,i=h)}),o}),t}function Cn(e,n,t){if(n>t){var r=n;n=t,t=r}var o=e[n];o||(e[n]=o={}),o[t]=!0}function In(e,n,t){if(n>t){var r=n;n=t,t=r}return!!e[n]&&Object.prototype.hasOwnProperty.call(e[n],t)}function Ln(e,n,t,o,i){var u={},a=function(e,n,t,o){var i=new p.T,u=e.graph(),a=function(e,n,t){return function(r,o,i){var u,a=r.node(o),s=r.node(i),d=0;if(d+=a.width/2,Object.prototype.hasOwnProperty.call(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":u=-a.width/2;break;case"r":u=a.width/2}if(u&&(d+=t?u:-u),u=0,d+=(a.dummy?n:e)/2,d+=(s.dummy?n:e)/2,d+=s.width/2,Object.prototype.hasOwnProperty.call(s,"labelpos"))switch(s.labelpos.toLowerCase()){case"l":u=s.width/2;break;case"r":u=-s.width/2}return u&&(d+=t?u:-u),u=0,d}}(u.nodesep,u.edgesep,o);return r.A(n,function(n){var o;r.A(n,function(n){var r=t[n];if(i.setNode(r),o){var u=t[o],s=i.edge(u,r);i.setEdge(u,r,Math.max(a(e,n,o),s||0))}o=n})}),i}(e,n,t,i),s=i?"borderLeft":"borderRight";function d(e,n){for(var t=a.nodes(),r=t.pop(),o={};r;)o[r]?e(r):(o[r]=!0,t.push(r),t=t.concat(n(r))),r=t.pop()}return d(function(e){u[e]=a.inEdges(e).reduce(function(e,n){return Math.max(e,u[n.v]+a.edge(n))},0)},a.predecessors.bind(a)),d(function(n){var t=a.outEdges(n).reduce(function(e,n){return Math.min(e,u[n.w]-a.edge(n))},Number.POSITIVE_INFINITY),r=e.node(n);t!==Number.POSITIVE_INFINITY&&r.borderType!==s&&(u[n]=Math.max(u[n],t))},a.successors.bind(a)),r.A(o,function(e){u[e]=u[t[e]]}),u}function Tn(e){var n,t=Q(e),o=k.A(jn(e,t),function(e,n){var t={};function o(n,o,i,u,a){var s;r.A(g(o,i),function(o){s=n[o],e.node(s).dummy&&r.A(e.predecessors(s),function(n){var r=e.node(n);r.dummy&&(r.order<u||r.order>a)&&Cn(t,n,s)})})}return Je.A(n,function(n,t){var i,u=-1,a=0;return r.A(t,function(r,s){if("border"===e.node(r).dummy){var d=e.predecessors(r);d.length&&(i=e.node(d[0]).order,o(t,a,s,u,i),a=s,u=i)}o(t,a,t.length,i,n.length)}),t}),t}(e,t)),i={};r.A(["u","d"],function(u){n="u"===u?t:$e.A(t).reverse(),r.A(["l","r"],function(t){"r"===t&&(n=d.A(n,function(e){return $e.A(e).reverse()}));var a=("u"===u?e.predecessors:e.successors).bind(e),s=function(e,n,t,o){var i={},u={},a={};return r.A(n,function(e){r.A(e,function(e,n){i[e]=e,u[e]=e,a[e]=n})}),r.A(n,function(e){var n=-1;r.A(e,function(e){var r=o(e);if(r.length){r=fn(r,function(e){return a[e]});for(var s=(r.length-1)/2,d=Math.floor(s),c=Math.ceil(s);d<=c;++d){var h=r[d];u[e]===e&&n<a[h]&&!In(t,e,h)&&(u[h]=e,u[e]=i[e]=i[h],n=a[h])}}})}),{root:i,align:u}}(0,n,o,a),c=Ln(e,n,s.root,s.align,"r"===t);"r"===t&&(c=B(c,function(e){return-e})),i[u+t]=c})});var u=function(e,n){return de($e.A(n),function(n){var t=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY;return Pn(n,function(n,o){var i=function(e,n){return e.node(n).width}(e,o)/2;t=Math.max(n+i,t),r=Math.min(n-i,r)}),t-r})}(e,i);return function(e,n){var t=$e.A(n),o=Y.A(t),i=F(t);r.A(["u","d"],function(t){r.A(["l","r"],function(r){var u,a=t+r,s=e[a];if(s!==n){var d=$e.A(s);(u="l"===r?o-Y.A(d):i-F(d))&&(e[a]=B(s,function(e){return e+u}))}})})}(i,u),function(e,n){return B(e.ul,function(t,r){if(n)return e[n.toLowerCase()][r];var o=fn(d.A(e,r));return(o[1]+o[2])/2})}(i,e.graph().align)}function Mn(e){(function(e){var n=Q(e),t=e.graph().ranksep,o=0;r.A(n,function(n){var i=F(d.A(n,function(n){return e.node(n).height}));r.A(n,function(n){e.node(n).y=o+i/2}),o+=i+t})})(e=H(e)),kn(Tn(e),function(n,t){e.node(t).x=n})}function Rn(e,n){var t=n&&n.debugTiming?X:ee;t("layout",()=>{var n=t(" buildLayoutGraph",()=>function(e){var n=new p.T({multigraph:!0,compound:!0}),t=$n(e.graph());return n.setGraph(k.A({},Dn,zn(t,Fn),I(t,Sn))),r.A(e.nodes(),function(t){var r=$n(e.node(t));n.setNode(t,L.A(zn(r,Gn),Vn)),n.setParent(t,e.parent(t))}),r.A(e.edges(),function(t){var r=$n(e.edge(t));n.setEdge(t,k.A({},qn,zn(r,Bn),I(r,Yn)))}),n}(e));t(" runLayout",()=>function(e,n){n(" makeSpaceForEdgeLabels",()=>function(e){var n=e.graph();n.ranksep/=2,r.A(e.edges(),function(t){var r=e.edge(t);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===n.rankdir||"BT"===n.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)})}(e)),n(" removeSelfEdges",()=>function(e){r.A(e.edges(),function(n){if(n.v===n.w){var t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}})}(e)),n(" acyclic",()=>x(e)),n(" nestingGraph.run",()=>Ze(e)),n(" rank",()=>qe(H(e))),n(" injectEdgeLabelProxies",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);if(t.width&&t.height){var r=e.node(n.v),o={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};Z(e,"edge-proxy",o,"_ep")}})}(e)),n(" removeEmptyRanks",()=>function(e){var n=Y.A(d.A(e.nodes(),function(n){return e.node(n).rank})),t=[];r.A(e.nodes(),function(r){var o=e.node(r).rank-n;t[o]||(t[o]=[]),t[o].push(r)});var o=0,i=e.graph().nodeRankFactor;r.A(t,function(n,t){q.A(n)&&t%i!==0?--o:o&&r.A(n,function(n){e.node(n).rank+=o})})}(e)),n(" nestingGraph.cleanup",()=>function(e){var n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,r.A(e.edges(),function(n){e.edge(n).nestingEdge&&e.removeEdge(n)})}(e)),n(" normalizeRanks",()=>function(e){var n=Y.A(d.A(e.nodes(),function(n){return e.node(n).rank}));r.A(e.nodes(),function(t){var r=e.node(t);z.A(r,"rank")&&(r.rank-=n)})}(e)),n(" assignRankMinMax",()=>function(e){var n=0;r.A(e.nodes(),function(t){var r=e.node(t);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,n=F(n,r.maxRank))}),e.graph().maxRank=n}(e)),n(" removeEdgeLabelProxies",()=>function(e){r.A(e.nodes(),function(n){var t=e.node(n);"edge-proxy"===t.dummy&&(e.edge(t.e).labelRank=t.rank,e.removeNode(n))})}(e)),n(" normalize.run",()=>ae(e)),n(" parentDummyChains",()=>En(e)),n(" addBorderSegments",()=>function(e){r.A(e.children(),function n(t){var o=e.children(t),i=e.node(t);if(o.length&&r.A(o,n),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var u=i.minRank,a=i.maxRank+1;u<a;++u)ne(e,"borderLeft","_bl",t,i,u),ne(e,"borderRight","_br",t,i,u)}})}(e)),n(" order",()=>bn(e)),n(" insertSelfEdges",()=>function(e){var n=Q(e);r.A(n,function(n){var t=0;r.A(n,function(n,o){var i=e.node(n);i.order=o+t,r.A(i.selfEdges,function(n){Z(e,"selfedge",{width:n.label.width,height:n.label.height,rank:i.rank,order:o+ ++t,e:n.e,label:n.label},"_se")}),delete i.selfEdges})})}(e)),n(" adjustCoordinateSystem",()=>function(e){var n=e.graph().rankdir.toLowerCase();"lr"!==n&&"rl"!==n||re(e)}(e)),n(" position",()=>Mn(e)),n(" positionSelfEdges",()=>function(e){r.A(e.nodes(),function(n){var t=e.node(n);if("selfedge"===t.dummy){var r=e.node(t.e.v),o=r.x+r.width/2,i=r.y,u=t.x-o,a=r.height/2;e.setEdge(t.e,t.label),e.removeNode(n),t.label.points=[{x:o+2*u/3,y:i-a},{x:o+5*u/6,y:i-a},{x:o+u,y:i},{x:o+5*u/6,y:i+a},{x:o+2*u/3,y:i+a}],t.label.x=t.x,t.label.y=t.y}})}(e)),n(" removeBorderNodes",()=>function(e){r.A(e.nodes(),function(n){if(e.children(n).length){var t=e.node(n),r=e.node(t.borderTop),o=e.node(t.borderBottom),i=e.node(D.A(t.borderLeft)),u=e.node(D.A(t.borderRight));t.width=Math.abs(u.x-i.x),t.height=Math.abs(o.y-r.y),t.x=i.x+t.width/2,t.y=r.y+t.height/2}}),r.A(e.nodes(),function(n){"border"===e.node(n).dummy&&e.removeNode(n)})}(e)),n(" normalize.undo",()=>function(e){r.A(e.graph().dummyChains,function(n){var t,r=e.node(n),o=r.edgeLabel;for(e.setEdge(r.edgeObj,o);r.dummy;)t=e.successors(n)[0],e.removeNode(n),o.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(o.x=r.x,o.y=r.y,o.width=r.width,o.height=r.height),n=t,r=e.node(n)})}(e)),n(" fixupEdgeLabelCoords",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);if(Object.prototype.hasOwnProperty.call(t,"x"))switch("l"!==t.labelpos&&"r"!==t.labelpos||(t.width-=t.labeloffset),t.labelpos){case"l":t.x-=t.width/2+t.labeloffset;break;case"r":t.x+=t.width/2+t.labeloffset}})}(e)),n(" undoCoordinateSystem",()=>te(e)),n(" translateGraph",()=>function(e){var n=Number.POSITIVE_INFINITY,t=0,o=Number.POSITIVE_INFINITY,i=0,u=e.graph(),a=u.marginx||0,s=u.marginy||0;function d(e){var r=e.x,u=e.y,a=e.width,s=e.height;n=Math.min(n,r-a/2),t=Math.max(t,r+a/2),o=Math.min(o,u-s/2),i=Math.max(i,u+s/2)}r.A(e.nodes(),function(n){d(e.node(n))}),r.A(e.edges(),function(n){var t=e.edge(n);Object.prototype.hasOwnProperty.call(t,"x")&&d(t)}),n-=a,o-=s,r.A(e.nodes(),function(t){var r=e.node(t);r.x-=n,r.y-=o}),r.A(e.edges(),function(t){var i=e.edge(t);r.A(i.points,function(e){e.x-=n,e.y-=o}),Object.prototype.hasOwnProperty.call(i,"x")&&(i.x-=n),Object.prototype.hasOwnProperty.call(i,"y")&&(i.y-=o)}),u.width=t-n+a,u.height=i-o+s}(e)),n(" assignNodeIntersects",()=>function(e){r.A(e.edges(),function(n){var t,r,o=e.edge(n),i=e.node(n.v),u=e.node(n.w);o.points?(t=o.points[0],r=o.points[o.points.length-1]):(o.points=[],t=u,r=i),o.points.unshift(K(i,t)),o.points.push(K(u,r))})}(e)),n(" reversePoints",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);t.reversed&&t.points.reverse()})}(e)),n(" acyclic.undo",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);if(t.reversed){e.removeEdge(n);var r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}})}(e))}(n,t)),t(" updateInputGraph",()=>function(e,n){r.A(e.nodes(),function(t){var r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,n.children(t).length&&(r.width=o.width,r.height=o.height))}),r.A(e.edges(),function(t){var r=e.edge(t),o=n.edge(t);r.points=o.points,Object.prototype.hasOwnProperty.call(o,"x")&&(r.x=o.x,r.y=o.y)}),e.graph().width=n.graph().width,e.graph().height=n.graph().height}(e,n))})}var Fn=["nodesep","edgesep","ranksep","marginx","marginy"],Dn={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Sn=["acyclicer","ranker","rankdir","align"],Gn=["width","height"],Vn={width:0,height:0},Bn=["minlen","weight","width","height","labeloffset"],qn={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Yn=["labelpos"];function zn(e,n){return B(I(e,n),Number)}function $n(e){var n={};return r.A(e,function(e,t){n[t.toLowerCase()]=e}),n}},81066:(e,n,t)=>{t.d(n,{A:()=>o});var r=t(97001);const o=function(e){var n=(0,r.A)(e),t=n%1;return n==n?t?n-t:n:0}},97001:(e,n,t)=>{t.d(n,{A:()=>g});var r=/\s/;const o=function(e){for(var n=e.length;n--&&r.test(e.charAt(n)););return n};var i=/^\s+/;const u=function(e){return e?e.slice(0,o(e)+1).replace(i,""):e};var a=t(49084),s=t(13027),d=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,h=/^0o[0-7]+$/i,f=parseInt;const v=function(e){if("number"==typeof e)return e;if((0,s.A)(e))return NaN;if((0,a.A)(e)){var n="function"==typeof e.valueOf?e.valueOf():e;e=(0,a.A)(n)?n+"":n}if("string"!=typeof e)return 0===e?e:+e;e=u(e);var t=c.test(e);return t||h.test(e)?f(e.slice(2),t?2:8):d.test(e)?NaN:+e};var l=1/0;const g=function(e){return e?(e=v(e))===l||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}}}]); \ No newline at end of file diff --git a/assets/js/4329fc3c.6bc2d8bb.js b/assets/js/4329fc3c.6bc2d8bb.js new file mode 100644 index 0000000000..9b946aab65 --- /dev/null +++ b/assets/js/4329fc3c.6bc2d8bb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[12],{42071:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>m,frontMatter:()=>c,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.12.5/rules/compiler/custom_kapt_matchers.md","sourceDirName":"rules/compiler","slug":"/rules/custom_kapt_matchers","permalink":"/ModuleCheck/docs/rules/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/compiler/custom_kapt_matchers.md","tags":[],"version":"0.12.5","frontMatter":{"id":"custom_kapt_matchers","slug":"/rules/custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/rules/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/rules/sort_dependencies"}}');var n=s(23420),r=s(65404);const c={id:"custom_kapt_matchers",slug:"/rules/custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},a=void 0,i={},l=[];function u(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,n.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},65404:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>a});var o=s(36672);const n={},r=o.createContext(n);function c(e){const t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:c(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4343.1d9bdd1e.js b/assets/js/4343.1d9bdd1e.js new file mode 100644 index 0000000000..0373e9046f --- /dev/null +++ b/assets/js/4343.1d9bdd1e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4343],{14343:(e,t,s)=>{s.d(t,{diagram:()=>m});var i=s(97576),n=s(57442),r=(s(84982),s(43545),s(61598),s(70837),s(24199),s(47794)),a=s(27293),l=function(){var e=(0,a.K2)(function(e,t,s,i){for(s=s||{},i=e.length;i--;s[e[i]]=t);return s},"o"),t=[1,3],s=[1,4],i=[1,5],n=[1,6],r=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],l=[1,22],c=[2,7],o=[1,26],h=[1,27],u=[1,28],y=[1,29],m=[1,33],d=[1,34],E=[1,35],p=[1,36],R=[1,37],f=[1,38],_=[1,24],g=[1,31],S=[1,32],I=[1,30],b=[1,39],T=[1,40],k=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],N=[1,61],q=[89,90],A=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],C=[27,29],v=[1,70],w=[1,71],x=[1,72],L=[1,73],D=[1,74],O=[1,75],$=[1,76],M=[1,83],F=[1,80],K=[1,84],P=[1,85],V=[1,86],U=[1,87],Y=[1,88],B=[1,89],Q=[1,90],H=[1,91],W=[1,92],j=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],G=[63,64],z=[1,101],X=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],J=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Z=[1,110],ee=[1,106],te=[1,107],se=[1,108],ie=[1,109],ne=[1,111],re=[1,116],ae=[1,117],le=[1,114],ce=[1,115],oe={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:(0,a.K2)(function(e,t,s,i,n,r,a){var l=r.length-1;switch(n){case 4:this.$=r[l].trim(),i.setAccTitle(this.$);break;case 5:case 6:this.$=r[l].trim(),i.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:i.setDirection("TB");break;case 18:i.setDirection("BT");break;case 19:i.setDirection("RL");break;case 20:i.setDirection("LR");break;case 21:i.addRequirement(r[l-3],r[l-4]);break;case 22:i.addRequirement(r[l-5],r[l-6]),i.setClass([r[l-5]],r[l-3]);break;case 23:i.setNewReqId(r[l-2]);break;case 24:i.setNewReqText(r[l-2]);break;case 25:i.setNewReqRisk(r[l-2]);break;case 26:i.setNewReqVerifyMethod(r[l-2]);break;case 29:this.$=i.RequirementType.REQUIREMENT;break;case 30:this.$=i.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=i.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=i.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=i.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=i.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=i.RiskLevel.LOW_RISK;break;case 36:this.$=i.RiskLevel.MED_RISK;break;case 37:this.$=i.RiskLevel.HIGH_RISK;break;case 38:this.$=i.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=i.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=i.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=i.VerifyType.VERIFY_TEST;break;case 42:i.addElement(r[l-3]);break;case 43:i.addElement(r[l-5]),i.setClass([r[l-5]],r[l-3]);break;case 44:i.setNewElementType(r[l-2]);break;case 45:i.setNewElementDocRef(r[l-2]);break;case 48:i.addRelationship(r[l-2],r[l],r[l-4]);break;case 49:i.addRelationship(r[l-2],r[l-4],r[l]);break;case 50:this.$=i.Relationships.CONTAINS;break;case 51:this.$=i.Relationships.COPIES;break;case 52:this.$=i.Relationships.DERIVES;break;case 53:this.$=i.Relationships.SATISFIES;break;case 54:this.$=i.Relationships.VERIFIES;break;case 55:this.$=i.Relationships.REFINES;break;case 56:this.$=i.Relationships.TRACES;break;case 57:this.$=r[l-2],i.defineClass(r[l-1],r[l]);break;case 58:i.setClass(r[l-1],r[l]);break;case 59:i.setClass([r[l-2]],r[l]);break;case 60:case 62:case 65:this.$=[r[l]];break;case 61:case 63:this.$=r[l-2].concat([r[l]]);break;case 64:this.$=r[l-2],i.setCssStyle(r[l-1],r[l]);break;case 66:r[l-2].push(r[l]),this.$=r[l-2];break;case 68:this.$=r[l-1]+r[l]}},"anonymous"),table:[{3:1,4:2,6:t,9:s,11:i,13:n},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:s,11:i,13:n},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(r,[2,6]),{3:12,4:2,6:t,9:s,11:i,13:n},{1:[2,2]},{4:17,5:l,7:13,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},e(r,[2,4]),e(r,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:l,7:42,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:l,7:43,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:l,7:44,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:l,7:45,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:l,7:46,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:l,7:47,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:l,7:48,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:l,7:49,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:l,7:50,8:c,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(k,[2,17]),e(k,[2,18]),e(k,[2,19]),e(k,[2,20]),{30:60,33:62,75:N,89:b,90:T},{30:63,33:62,75:N,89:b,90:T},{30:64,33:62,75:N,89:b,90:T},e(q,[2,29]),e(q,[2,30]),e(q,[2,31]),e(q,[2,32]),e(q,[2,33]),e(q,[2,34]),e(A,[2,81]),e(A,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(C,[2,79]),e(C,[2,80]),{27:[1,67],29:[1,68]},e(C,[2,85]),e(C,[2,86]),{62:69,65:v,66:w,67:x,68:L,69:D,70:O,71:$},{62:77,65:v,66:w,67:x,68:L,69:D,70:O,71:$},{30:78,33:62,75:N,89:b,90:T},{73:79,75:M,76:F,78:81,79:82,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W},e(j,[2,60]),e(j,[2,62]),{73:93,75:M,76:F,78:81,79:82,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W},{30:94,33:62,75:N,76:F,89:b,90:T},{5:[1,95]},{30:96,33:62,75:N,89:b,90:T},{5:[1,97]},{30:98,33:62,75:N,89:b,90:T},{63:[1,99]},e(G,[2,50]),e(G,[2,51]),e(G,[2,52]),e(G,[2,53]),e(G,[2,54]),e(G,[2,55]),e(G,[2,56]),{64:[1,100]},e(k,[2,59],{76:F}),e(k,[2,64],{76:z}),{33:103,75:[1,102],89:b,90:T},e(X,[2,65],{79:104,75:M,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W}),e(J,[2,67]),e(J,[2,69]),e(J,[2,70]),e(J,[2,71]),e(J,[2,72]),e(J,[2,73]),e(J,[2,74]),e(J,[2,75]),e(J,[2,76]),e(J,[2,77]),e(J,[2,78]),e(k,[2,57],{76:z}),e(k,[2,58],{76:F}),{5:Z,28:105,31:ee,34:te,36:se,38:ie,40:ne},{27:[1,112],76:F},{5:re,40:ae,56:113,57:le,59:ce},{27:[1,118],76:F},{33:119,89:b,90:T},{33:120,89:b,90:T},{75:M,78:121,79:82,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W},e(j,[2,61]),e(j,[2,63]),e(J,[2,68]),e(k,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Z,28:126,31:ee,34:te,36:se,38:ie,40:ne},e(k,[2,28]),{5:[1,127]},e(k,[2,42]),{32:[1,128]},{32:[1,129]},{5:re,40:ae,56:130,57:le,59:ce},e(k,[2,47]),{5:[1,131]},e(k,[2,48]),e(k,[2,49]),e(X,[2,66],{79:104,75:M,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W}),{33:132,89:b,90:T},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(k,[2,27]),{5:Z,28:145,31:ee,34:te,36:se,38:ie,40:ne},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(k,[2,46]),{5:re,40:ae,56:152,57:le,59:ce},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(k,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(k,[2,43]),{5:Z,28:159,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:160,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:161,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:162,31:ee,34:te,36:se,38:ie,40:ne},{5:re,40:ae,56:163,57:le,59:ce},{5:re,40:ae,56:164,57:le,59:ce},e(k,[2,23]),e(k,[2,24]),e(k,[2,25]),e(k,[2,26]),e(k,[2,44]),e(k,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:(0,a.K2)(function(e,t){if(!t.recoverable){var s=new Error(e);throw s.hash=t,s}this.trace(e)},"parseError"),parse:(0,a.K2)(function(e){var t=this,s=[0],i=[],n=[null],r=[],l=this.table,c="",o=0,h=0,u=0,y=r.slice.call(arguments,1),m=Object.create(this.lexer),d={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(d.yy[E]=this.yy[E]);m.setInput(e,d.yy),d.yy.lexer=m,d.yy.parser=this,void 0===m.yylloc&&(m.yylloc={});var p=m.yylloc;r.push(p);var R=m.options&&m.options.ranges;function f(){var e;return"number"!=typeof(e=i.pop()||m.lex()||1)&&(e instanceof Array&&(e=(i=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(e){s.length=s.length-2*e,n.length=n.length-e,r.length=r.length-e},"popStack"),(0,a.K2)(f,"lex");for(var _,g,S,I,b,T,k,N,q,A={};;){if(S=s[s.length-1],this.defaultActions[S]?I=this.defaultActions[S]:(null==_&&(_=f()),I=l[S]&&l[S][_]),void 0===I||!I.length||!I[0]){var C="";for(T in q=[],l[S])this.terminals_[T]&&T>2&&q.push("'"+this.terminals_[T]+"'");C=m.showPosition?"Parse error on line "+(o+1)+":\n"+m.showPosition()+"\nExpecting "+q.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:m.match,token:this.terminals_[_]||_,line:m.yylineno,loc:p,expected:q})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+_);switch(I[0]){case 1:s.push(_),n.push(m.yytext),r.push(m.yylloc),s.push(I[1]),_=null,g?(_=g,g=null):(h=m.yyleng,c=m.yytext,o=m.yylineno,p=m.yylloc,u>0&&u--);break;case 2:if(k=this.productions_[I[1]][1],A.$=n[n.length-k],A._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},R&&(A._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(A,[c,h,o,d.yy,I[1],n,r].concat(y))))return b;k&&(s=s.slice(0,-1*k*2),n=n.slice(0,-1*k),r=r.slice(0,-1*k)),s.push(this.productions_[I[1]][0]),n.push(A.$),r.push(A._$),N=l[s[s.length-2]][s[s.length-1]],s.push(N);break;case 3:return!0}}return!0},"parse")},he=function(){return{EOF:1,parseError:(0,a.K2)(function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},"parseError"),setInput:(0,a.K2)(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},"input"),unput:(0,a.K2)(function(e){var t=e.length,s=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(e){this.unput(this.match.slice(e))},"less"),pastInput:(0,a.K2)(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},"showPosition"),test_match:(0,a.K2)(function(e,t){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],s=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var e,t,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!t||s[0].length>t[0].length)){if(t=s,i=r,this.options.backtrack_lexer){if(!1!==(e=this.test_match(s,n[r])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,n[i]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var e=this.next();return e||this.lex()},"lex"),begin:(0,a.K2)(function(e){this.conditionStack.push(e)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(e){this.begin(e)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(e,t,s,i){switch(s){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 58:case 65:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:case 14:case 15:case 56:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;case 50:case 68:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 57:case 64:this.begin("string");break;case 59:return this.begin("style"),72;case 60:return this.begin("style"),74;case 61:return 61;case 62:return 64;case 63:return 63;case 66:return"qString";case 67:return t.yytext=t.yytext.trim(),89;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}}}();function ue(){this.yy={}}return oe.lexer=he,(0,a.K2)(ue,"Parser"),ue.prototype=oe,oe.Parser=ue,new ue}();l.parser=l;var c=l,o=class{constructor(){this.relations=[],this.latestRequirement=this.getInitialRequirement(),this.requirements=new Map,this.latestElement=this.getInitialElement(),this.elements=new Map,this.classes=new Map,this.direction="TB",this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},this.setAccTitle=a.SV,this.getAccTitle=a.iN,this.setAccDescription=a.EI,this.getAccDescription=a.m7,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.getConfig=(0,a.K2)(()=>(0,a.D7)().requirement,"getConfig"),this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,a.K2)(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,t){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:t,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){void 0!==this.latestRequirement&&(this.latestRequirement.requirementId=e)}setNewReqText(e){void 0!==this.latestRequirement&&(this.latestRequirement.text=e)}setNewReqRisk(e){void 0!==this.latestRequirement&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){void 0!==this.latestRequirement&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),a.Rm.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){void 0!==this.latestElement&&(this.latestElement.type=e)}setNewElementDocRef(e){void 0!==this.latestElement&&(this.latestElement.docRef=e)}addRelationship(e,t,s){this.relations.push({type:e,src:t,dst:s})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,(0,a.IU)()}setCssStyle(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(!t||!e)return;for(const s of t)s.includes(",")?e.cssStyles.push(...s.split(",")):e.cssStyles.push(s)}}setClass(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(e)for(const s of t){e.classes.push(s);const t=this.classes.get(s)?.styles;t&&e.cssStyles.push(...t)}}}defineClass(e,t){for(const s of e){let e=this.classes.get(s);void 0===e&&(e={id:s,styles:[],textStyles:[]},this.classes.set(s,e)),t&&t.forEach(function(t){if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)}),this.requirements.forEach(e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap(e=>e.split(",")))}),this.elements.forEach(e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap(e=>e.split(",")))})}}getClasses(){return this.classes}getData(){const e=(0,a.D7)(),t=[],s=[];for(const i of this.requirements.values()){const s=i;s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),s.shape="requirementBox",s.look=e.look,t.push(s)}for(const i of this.elements.values()){const s=i;s.shape="requirementBox",s.look=e.look,s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),t.push(s)}for(const i of this.relations){let t=0;const n=i.type===this.Relationships.CONTAINS,r={id:`${i.src}-${i.dst}-${t}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",n?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:n?"normal":"dashed",arrowTypeStart:n?"requirement_contains":"",arrowTypeEnd:n?"":"requirement_arrow",look:e.look};s.push(r),t++}return{nodes:t,edges:s,other:{},config:e,direction:this.getDirection()}}},h=(0,a.K2)(e=>`\n\n marker {\n fill: ${e.relationColor};\n stroke: ${e.relationColor};\n }\n\n marker.cross {\n stroke: ${e.lineColor};\n }\n\n svg {\n font-family: ${e.fontFamily};\n font-size: ${e.fontSize};\n }\n\n .reqBox {\n fill: ${e.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${e.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${e.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${e.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${e.relationLabelColor};\n }\n .divider {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n }\n .label {\n font-family: ${e.fontFamily};\n color: ${e.nodeTextColor||e.textColor};\n }\n .label text,span {\n fill: ${e.nodeTextColor||e.textColor};\n color: ${e.nodeTextColor||e.textColor};\n }\n .labelBkg {\n background-color: ${e.edgeLabelBackground};\n }\n\n`,"getStyles"),u={};(0,a.VA)(u,{draw:()=>y});var y=(0,a.K2)(async function(e,t,s,l){a.Rm.info("REF0:"),a.Rm.info("Drawing requirement diagram (unified)",t);const{securityLevel:c,state:o,layout:h}=(0,a.D7)(),u=l.db.getData(),y=(0,i.A)(t,c);u.type=l.type,u.layoutAlgorithm=(0,n.q7)(h),u.nodeSpacing=o?.nodeSpacing??50,u.rankSpacing=o?.rankSpacing??50,u.markers=["requirement_contains","requirement_arrow"],u.diagramId=t,await(0,n.XX)(u,y);r._K.insertTitle(y,"requirementDiagramTitleText",o?.titleTopMargin??25,l.db.getDiagramTitle()),(0,i.P)(y,8,"requirementDiagram",o?.useMaxWidth??!0)},"draw"),m={parser:c,get db(){return new o},renderer:u,styles:h}},97576:(e,t,s)=>{s.d(t,{A:()=>r,P:()=>a});var i=s(27293),n=s(61274),r=(0,i.K2)((e,t)=>{let s;"sandbox"===t&&(s=(0,n.Ltv)("#i"+e));return("sandbox"===t?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${e}"]`)},"getDiagramElement"),a=(0,i.K2)((e,t,s,n)=>{e.attr("class",s);const{width:r,height:a,x:o,y:h}=l(e,t);(0,i.a$)(e,a,r,n);const u=c(o,h,r,a,t);e.attr("viewBox",u),i.Rm.debug(`viewBox configured: ${u} with padding: ${t}`)},"setupViewPortForSVG"),l=(0,i.K2)((e,t)=>{const s=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*t,height:s.height+2*t,x:s.x,y:s.y}},"calculateDimensionsWithPadding"),c=(0,i.K2)((e,t,s,i,n)=>`${e-n} ${t-n} ${s} ${i}`,"createViewBox")}}]); \ No newline at end of file diff --git a/assets/js/4359cab8.86206a90.js b/assets/js/4359cab8.86206a90.js new file mode 100644 index 0000000000..34b3c2a1c3 --- /dev/null +++ b/assets/js/4359cab8.86206a90.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3508],{51186:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.11.0/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_dependencies","permalink":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/sorting/sort_dependencies.md","tags":[],"version":"0.11.0","frontMatter":{"id":"sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.11.0/rules/kapt/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_plugins"}}');var o=n(23420),r=n(65404);const i={id:"sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l()}},65404:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(36672);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/444a5a58.da06fd79.js b/assets/js/444a5a58.da06fd79.js new file mode 100644 index 0000000000..f42bdb2eff --- /dev/null +++ b/assets/js/444a5a58.da06fd79.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8327],{65404:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>r});var i=t(36672);const d={},s=i.createContext(d);function l(e){const n=i.useContext(s);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:l(e.components),i.createElement(s.Provider,{value:n},e.children)}},78381:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>a,frontMatter:()=>l,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"type":"mdx","permalink":"/ModuleCheck/migrations","source":"@site/src/pages/migrations.md","description":"0.12.0 to 0.12.1","frontMatter":{},"unlisted":false}');var d=t(23420),s=t(65404);const l={},r=void 0,c={},o=[{value:"0.12.0 to 0.12.1",id:"0120-to-0121",level:2},{value:"Standardized Finding names",id:"standardized-finding-names",level:3},{value:"CodeGeneratorBinding",id:"code-generator-binding",level:3}];function h(e){const n={code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h2,{id:"0120-to-0121",children:"0.12.0 to 0.12.1"}),"\n",(0,d.jsx)(n.h3,{id:"standardized-finding-names",children:"Standardized Finding names"}),"\n",(0,d.jsxs)(n.p,{children:["The names of all findings have been updated/standardized. Any declarations which were suppressing\na finding with the old ID (via ",(0,d.jsx)(n.code,{children:'@Suppress("someFinding")'})," or ",(0,d.jsx)(n.code,{children:"//suppress=someFinding"}),") will still\nwork, but they should be updated to use the new names."]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{style:{textAlign:"left"},children:"old name"}),(0,d.jsx)(n.th,{style:{textAlign:"left"},children:"new name"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"depth"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"project-depth"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"disableAndroidResources"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"disable-android-resources"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"disableViewBinding"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"disable-view-binding"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"inheritedDependency"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"inherited-dependency"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"mustBeApi"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"must-be-api"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"overshot"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"overshot-dependency"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"redundant"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"redundant-dependency"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"unsortedDependencies"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"sort-dependencies"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"unsortedPlugins"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"sort-plugins"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"useAnvilFactories"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"use-anvil-factory-generation"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"unused"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"unused-dependency"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"unusedKaptProcessor"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"unused-kapt-processor"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"unusedKotlinAndroidExtensions"}),(0,d.jsx)(n.td,{style:{textAlign:"left"},children:"unused-kotlin-android-extensions"})]})]})]}),"\n",(0,d.jsx)(n.h3,{id:"code-generator-binding",children:"CodeGeneratorBinding"}),"\n",(0,d.jsxs)(n.p,{children:["The ",(0,d.jsx)(n.code,{children:"KaptMatcher"})," class has been deprecated in favor of ",(0,d.jsx)(n.code,{children:"modulecheck.config.CodeGeneratorBinding"}),".\nThis new sealed class has four concrete implementations which can define just about any code\ngeneration tool:"]}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.code,{children:"modulecheck.config.CodeGeneratorBinding.AnnotationProcessor"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:"Note that this class is a model for Kotlin KAPT as well as a standard Java annotation processor."}),"\n"]}),"\n"]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.code,{children:"modulecheck.config.CodeGeneratorBinding.KspExtension"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.code,{children:"modulecheck.config.CodeGeneratorBinding.AnvilExtension"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.code,{children:"modulecheck.config.CodeGeneratorBinding.KotlinCompilerPlugin"})}),"\n"]}),"\n",(0,d.jsxs)(n.p,{children:["To migrate from ",(0,d.jsx)(n.code,{children:"KaptMatcher"}),":"]}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsxs)(n.li,{children:["Change references of ",(0,d.jsx)(n.code,{children:"modulecheck.api.KaptMatcher"}),",\nto ",(0,d.jsx)(n.code,{children:"modulecheck.config.CodeGeneratorBinding.AnnotationProcessor"}),"."]}),"\n",(0,d.jsxs)(n.li,{children:["Replace the regex-styled ",(0,d.jsx)(n.code,{children:"annotationImports"})," arguments with explicit fully-qualified names.\nFor instance, replace ",(0,d.jsx)(n.code,{children:'"com\\\\.example\\\\.MyAnnotation"'}),", with ",(0,d.jsx)(n.code,{children:'"com.example.MyAnnotation"'}),"."]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/4477.2f461e97.js b/assets/js/4477.2f461e97.js new file mode 100644 index 0000000000..e4bd78c785 --- /dev/null +++ b/assets/js/4477.2f461e97.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4477],{53776:(t,e,n)=>{n.d(e,{o:()=>i});var i=(0,n(27293).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},74477:(t,e,n)=>{n.d(e,{diagram:()=>L});var i=n(53776),s=n(11889),r=n(61598),o=(n(70837),n(24199),n(47794),n(95379)),a=n(27293),c=n(13212),l=n(58480),h=n(81896),u=function(){var t=(0,a.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],c=[1,19],l=[6,7,8],h=[1,26],u=[1,24],g=[1,25],d=[6,7,11],p=[1,31],y=[6,7,11,24],f=[1,6,13,16,17,20,23],m=[1,35],b=[1,36],k=[1,6,7,11,13,16,17,20,23],_=[1,38],E={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:(0,a.K2)(function(t,e,n,i,s,r,o){var a=r.length-1;switch(s){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",r[a-1].id),i.addNode(r[a-2].length,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 16:i.getLogger().info("Node: ",r[a].id),i.addNode(r[a-1].length,r[a].id,r[a].descr,r[a].type);break;case 17:i.getLogger().trace("Icon: ",r[a]),i.decorateNode({icon:r[a]});break;case 18:case 23:i.decorateNode({class:r[a]});break;case 19:i.getLogger().trace("SPACELIST");break;case 20:i.getLogger().trace("Node: ",r[a-1].id),i.addNode(0,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 21:i.getLogger().trace("Node: ",r[a].id),i.addNode(0,r[a].id,r[a].descr,r[a].type);break;case 22:i.decorateNode({icon:r[a]});break;case 27:i.getLogger().trace("node found ..",r[a-2]),this.$={id:r[a-1],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 28:this.$={id:r[a],descr:r[a],type:0};break;case 29:i.getLogger().trace("node found ..",r[a-3]),this.$={id:r[a-3],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 30:this.$=r[a-1]+r[a];break;case 31:this.$=r[a]}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:c},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:c},{6:n,9:22,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:c},{6:h,7:u,10:23,11:g},t(d,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:o,23:c}),t(d,[2,19]),t(d,[2,21],{15:30,24:p}),t(d,[2,22]),t(d,[2,23]),t(y,[2,25]),t(y,[2,26]),t(y,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:u,10:34,11:g},{1:[2,7],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:c},t(f,[2,14],{7:m,11:b}),t(k,[2,8]),t(k,[2,9]),t(k,[2,10]),t(d,[2,16],{15:37,24:p}),t(d,[2,17]),t(d,[2,18]),t(d,[2,20],{24:_}),t(y,[2,31]),{21:[1,39]},{22:[1,40]},t(f,[2,13],{7:m,11:b}),t(k,[2,11]),t(k,[2,12]),t(d,[2,15],{24:_}),t(y,[2,30]),{22:[1,41]},t(y,[2,27]),t(y,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,a.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,a.K2)(function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,c="",l=0,h=0,u=0,g=r.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var f=d.yylloc;r.push(f);var m=d.options&&d.options.ranges;function b(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,a.K2)(b,"lex");for(var k,_,E,S,N,x,D,L,I,v={};;){if(E=n[n.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==k&&(k=b()),S=o[E]&&o[E][k]),void 0===S||!S.length||!S[0]){var C="";for(x in I=[],o[E])this.terminals_[x]&&x>2&&I.push("'"+this.terminals_[x]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==k?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[k]||k,line:d.yylineno,loc:f,expected:I})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+k);switch(S[0]){case 1:n.push(k),s.push(d.yytext),r.push(d.yylloc),n.push(S[1]),k=null,_?(k=_,_=null):(h=d.yyleng,c=d.yytext,l=d.yylineno,f=d.yylloc,u>0&&u--);break;case 2:if(D=this.productions_[S[1]][1],v.$=s[s.length-D],v._$={first_line:r[r.length-(D||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(D||1)].first_column,last_column:r[r.length-1].last_column},m&&(v._$.range=[r[r.length-(D||1)].range[0],r[r.length-1].range[1]]),void 0!==(N=this.performAction.apply(v,[c,h,l,p.yy,S[1],s,r].concat(g))))return N;D&&(n=n.slice(0,-1*D*2),s=s.slice(0,-1*D),r=r.slice(0,-1*D)),n.push(this.productions_[S[1]][0]),s.push(v.$),r.push(v._$),L=o[n[n.length-2]][n[n.length-1]],n.push(L);break;case 3:return!0}}return!0},"parse")},S=function(){return{EOF:1,parseError:(0,a.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,a.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,a.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,a.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,a.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;r<s.length;r++)if((n=this._input.match(this.rules[s[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,a.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(t,e,n,i){switch(n){case 0:return this.pushState("shapeData"),e.yytext="",24;case 1:return this.pushState("shapeDataStr"),24;case 2:return this.popState(),24;case 3:const n=/\n\s*/g;return e.yytext=e.yytext.replace(n,"<br/>"),24;case 4:return 24;case 5:case 10:case 29:case 32:this.popState();break;case 6:return t.getLogger().trace("Found comment",e.yytext),6;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;case 11:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return t.getLogger().trace("SPACELINE"),6;case 13:return 7;case 14:return 16;case 15:t.getLogger().trace("end icon"),this.popState();break;case 16:return t.getLogger().trace("Exploding node"),this.begin("NODE"),20;case 17:return t.getLogger().trace("Cloud"),this.begin("NODE"),20;case 18:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;case 19:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;case 20:case 21:case 22:case 23:return this.begin("NODE"),20;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 30:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 33:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 34:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 35:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 36:case 39:case 40:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 37:case 38:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 41:case 42:return t.getLogger().trace("Long description:",e.yytext),21}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}}}();function N(){this.yy={}}return E.lexer=S,(0,a.K2)(N,"Parser"),N.prototype=E,E.Parser=N,new N}();u.parser=u;var g=u,d=[],p=[],y=0,f={},m=(0,a.K2)(()=>{d=[],p=[],y=0,f={}},"clear"),b=(0,a.K2)(t=>{if(0===d.length)return null;const e=d[0].level;let n=null;for(let i=d.length-1;i>=0;i--)if(d[i].level!==e||n||(n=d[i]),d[i].level<e)throw new Error('Items without section detected, found section ("'+d[i].label+'")');return t===n?.level?null:n},"getSection"),k=(0,a.K2)(function(){return p},"getSections"),_=(0,a.K2)(function(){const t=[],e=k(),n=(0,a.D7)();for(const i of e){const e={id:i.id,label:(0,a.jZ)(i.label??"",n),isGroup:!0,ticket:i.ticket,shape:"kanbanSection",level:i.level,look:n.look};t.push(e);const s=d.filter(t=>t.parentId===i.id);for(const r of s){const e={id:r.id,parentId:i.id,label:(0,a.jZ)(r.label??"",n),isGroup:!1,ticket:r?.ticket,priority:r?.priority,assigned:r?.assigned,icon:r?.icon,shape:"kanbanItem",level:r.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(e)}}return{nodes:t,edges:[],other:{},config:(0,a.D7)()}},"getData"),E=(0,a.K2)((t,e,n,i,r)=>{const o=(0,a.D7)();let c=o.mindmap?.padding??a.UI.mindmap.padding;switch(i){case S.ROUNDED_RECT:case S.RECT:case S.HEXAGON:c*=2}const l={id:(0,a.jZ)(e,o)||"kbn"+y++,level:t,label:(0,a.jZ)(n,o),width:o.mindmap?.maxNodeWidth??a.UI.mindmap.maxNodeWidth,padding:c,isGroup:!1};if(void 0!==r){let t;t=r.includes("\n")?r+"\n":"{\n"+r+"\n}";const e=(0,s.H)(t,{schema:s.r});if(e.shape&&(e.shape!==e.shape.toLowerCase()||e.shape.includes("_")))throw new Error(`No such shape: ${e.shape}. Shape names should be lowercase.`);e?.shape&&"kanbanItem"===e.shape&&(l.shape=e?.shape),e?.label&&(l.label=e?.label),e?.icon&&(l.icon=e?.icon.toString()),e?.assigned&&(l.assigned=e?.assigned.toString()),e?.ticket&&(l.ticket=e?.ticket.toString()),e?.priority&&(l.priority=e?.priority)}const h=b(t);h?l.parentId=h.id||"kbn"+y++:p.push(l),d.push(l)},"addNode"),S={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},N={clear:m,addNode:E,getSections:k,getData:_,nodeType:S,getType:(0,a.K2)((t,e)=>{switch(a.Rm.debug("In get type",t,e),t){case"[":return S.RECT;case"(":return")"===e?S.ROUNDED_RECT:S.CLOUD;case"((":return S.CIRCLE;case")":return S.CLOUD;case"))":return S.BANG;case"{{":return S.HEXAGON;default:return S.DEFAULT}},"getType"),setElementForId:(0,a.K2)((t,e)=>{f[t]=e},"setElementForId"),decorateNode:(0,a.K2)(t=>{if(!t)return;const e=(0,a.D7)(),n=d[d.length-1];t.icon&&(n.icon=(0,a.jZ)(t.icon,e)),t.class&&(n.cssClasses=(0,a.jZ)(t.class,e))},"decorateNode"),type2Str:(0,a.K2)(t=>{switch(t){case S.DEFAULT:return"no-border";case S.RECT:return"rect";case S.ROUNDED_RECT:return"rounded-rect";case S.CIRCLE:return"circle";case S.CLOUD:return"cloud";case S.BANG:return"bang";case S.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),getLogger:(0,a.K2)(()=>a.Rm,"getLogger"),getElementById:(0,a.K2)(t=>f[t],"getElementById")},x={draw:(0,a.K2)(async(t,e,n,i)=>{a.Rm.debug("Rendering kanban diagram\n"+t);const s=i.db.getData(),c=(0,a.D7)();c.htmlLabels=!1;const l=(0,o.D)(e),h=l.append("g");h.attr("class","sections");const u=l.append("g");u.attr("class","items");const g=s.nodes.filter(t=>t.isGroup);let d=0;const p=[];let y=25;for(const o of g){const t=c?.kanban?.sectionWidth||200;d+=1,o.x=t*d+10*(d-1)/2,o.width=t,o.y=0,o.height=3*t,o.rx=5,o.ry=5,o.cssClasses=o.cssClasses+" section-"+d;const e=await(0,r.U)(h,o);y=Math.max(y,e?.labelBBox?.height),p.push(e)}let f=0;for(const o of g){const t=p[f];f+=1;const e=c?.kanban?.sectionWidth||200,n=3*-e/2+y;let i=n;const a=s.nodes.filter(t=>t.parentId===o.id);for(const s of a){if(s.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");s.x=o.x,s.width=e-15;const t=(await(0,r.on)(u,s,{config:c})).node().getBBox();s.y=i+t.height/2,await(0,r.U_)(s),i=s.y+t.height/2+5}const l=t.cluster.select("rect"),h=Math.max(i-n+30,50)+(y-25);l.attr("height",h)}(0,a.ot)(void 0,l,c.mindmap?.padding??a.UI.kanban.padding,c.mindmap?.useMaxWidth??a.UI.kanban.useMaxWidth)},"draw")},D=(0,a.K2)(t=>{let e="";for(let i=0;i<t.THEME_COLOR_LIMIT;i++)t["lineColor"+i]=t["lineColor"+i]||t["cScaleInv"+i],(0,c.A)(t["lineColor"+i])?t["lineColor"+i]=(0,l.A)(t["lineColor"+i],20):t["lineColor"+i]=(0,h.A)(t["lineColor"+i],20);const n=(0,a.K2)((e,n)=>t.darkMode?(0,h.A)(e,n):(0,l.A)(e,n),"adjuster");for(let i=0;i<t.THEME_COLOR_LIMIT;i++){const s=""+(17-3*i);e+=`\n .section-${i-1} rect, .section-${i-1} path, .section-${i-1} circle, .section-${i-1} polygon, .section-${i-1} path {\n fill: ${n(t["cScale"+i],10)};\n stroke: ${n(t["cScale"+i],10)};\n\n }\n .section-${i-1} text {\n fill: ${t["cScaleLabel"+i]};\n }\n .node-icon-${i-1} {\n font-size: 40px;\n color: ${t["cScaleLabel"+i]};\n }\n .section-edge-${i-1}{\n stroke: ${t["cScale"+i]};\n }\n .edge-depth-${i-1}{\n stroke-width: ${s};\n }\n .section-${i-1} line {\n stroke: ${t["cScaleInv"+i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.background};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .kanban-ticket-link {\n fill: ${t.background};\n stroke: ${t.nodeBorder};\n text-decoration: underline;\n }\n `}return e},"genSections"),L={db:N,renderer:x,parser:g,styles:(0,a.K2)(t=>`\n .edge {\n stroke-width: 3;\n }\n ${D(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .cluster-label, .label {\n color: ${t.textColor};\n fill: ${t.textColor};\n }\n .kanban-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n ${(0,i.o)()}\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/4576.01fa1abc.js b/assets/js/4576.01fa1abc.js new file mode 100644 index 0000000000..21cb8423a5 --- /dev/null +++ b/assets/js/4576.01fa1abc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4576],{84576:(e,c,h)=>{h.d(c,{createGitGraphServices:()=>k.b});var k=h(15618);h(34939)}}]); \ No newline at end of file diff --git a/assets/js/4577221a.09a7f265.js b/assets/js/4577221a.09a7f265.js new file mode 100644 index 0000000000..174e0a4de6 --- /dev/null +++ b/assets/js/4577221a.09a7f265.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[334],{2073:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/docs/rules/compiler/unused_kapt_processor.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_processor","permalink":"/ModuleCheck/docs/next/rules/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/compiler/unused_kapt_processor.md","tags":[],"version":"current","frontMatter":{"id":"unused_kapt_processor","slug":"/rules/unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/next/rules/use_anvil_factory_generation"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/next/rules/unused_kapt_plugin"}}');var t=s(23420),r=s(65404);const i={id:"unused_kapt_processor",slug:"/rules/unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,c={},d=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>a});var o=s(36672);const t={},r=o.createContext(t);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/46d462fa.286c2600.js b/assets/js/46d462fa.286c2600.js new file mode 100644 index 0000000000..e958df6692 --- /dev/null +++ b/assets/js/46d462fa.286c2600.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1270],{41182:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>s,default:()=>a,frontMatter:()=>i,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.11.3/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/0.11.3/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/inherited_dependency.md","tags":[],"version":"0.11.3","frontMatter":{"id":"inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.11.3/rules/must_be_api"},"next":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.11.3/rules/compiler/could_use_anvil_factory"}}');var o=d(23420),c=d(65404);const i={id:"inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},s=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,c.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleB"}),", and ",(0,o.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,o.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,o.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,o.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,o.jsx)(n.code,{children:":moduleA"})," -> ",(0,o.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>i,x:()=>s});var t=d(36672);const o={},c=t.createContext(o);function i(e){const n=t.useContext(c);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/46e9ac31.d214ee12.js b/assets/js/46e9ac31.d214ee12.js new file mode 100644 index 0000000000..5301b5e201 --- /dev/null +++ b/assets/js/46e9ac31.d214ee12.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4003],{52084:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","source":"@site/versioned_docs/version-0.11.2/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.11.2/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/quickstart.mdx","tags":[],"version":"0.11.2","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.11.2/configuration"}}');var l=r(23420),t=r(65404),s=r(65780),o=r(58118);const i={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},u=void 0,c={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin."})}),"\n",(0,l.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,l.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,l.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:"// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.11.2"\n}\n'})})]}),(0,l.jsxs)(o.A,{value:"Groovy",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:"// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.11.2'\n}\n"})})]})]}),"\n",(0,l.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,l.jsx)(n.p,{children:"all checks"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,l.jsx)(n.p,{children:"kapt checks"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckKapt\n"})}),"\n",(0,l.jsx)(n.p,{children:"sorts"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,l.jsx)(n.p,{children:"unused"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gardlew moduleCheckUnused\n"})}),"\n",(0,l.jsx)(n.p,{children:"redundant"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckRedundant\n"})}),"\n",(0,l.jsx)(n.p,{children:"overshot"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckOvershot\n"})}),"\n",(0,l.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"/ModuleCheck/docs/0.11.2/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,l.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,l.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nconfigure<com.rickbusarow.modulecheck.ModuleCheckExtension> {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,l.jsx)(n.p,{children:"--or--"}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nmoduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,l.jsx)(o.A,{value:"Groovy",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:'// top-level build.gradle\n\nmoduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},58118:(e,n,r)=>{r.d(n,{A:()=>s});r(36672);var a=r(13526);const l={tabItem:"tabItem_qogc"};var t=r(23420);function s({children:e,hidden:n,className:r}){return(0,t.jsx)("div",{role:"tabpanel",className:(0,a.A)(l.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>s,x:()=>o});var a=r(36672);const l={},t=a.createContext(l);function s(e){const n=a.useContext(t);return a.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),a.createElement(t.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>w});var a=r(36672),l=r(13526),t=r(10452),s=r(85291),o=r(10914),i=r(41201),u=r(40622),c=r(42925);function d(e){return a.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,a.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:a}})=>({value:e,label:n,attributes:r,default:a}))}(r);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,s.W6)(),l=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,i.aZ)(l),(0,a.useCallback)(e=>{if(!l)return;const n=new URLSearchParams(r.location.search);n.set(l,e),r.replace({...r.location,search:n.toString()})},[l,r])]}function f(e){const{defaultValue:n,queryString:r=!1,groupId:l}=e,t=h(e),[s,i]=(0,a.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:t})),[u,d]=g({queryString:r,groupId:l}),[f,m]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,l]=(0,c.Dv)(n);return[r,(0,a.useCallback)(e=>{n&&l.set(e)},[n,l])]}({groupId:l}),v=(()=>{const e=u??f;return p({value:e,tabValues:t})?e:null})();(0,o.A)(()=>{v&&i(v)},[v]);return{selectedValue:s,selectValue:(0,a.useCallback)(e=>{if(!p({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),m(e)},[d,m,t]),tabValues:t}}var m=r(74682);const v={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var b=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:a,tabValues:s}){const o=[],{blockElementScrollPositionUntilNextRender:i}=(0,t.a_)(),u=e=>{const n=e.currentTarget,l=o.indexOf(n),t=s[l].value;t!==r&&(i(n),a(t))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":n},e),children:s.map(({value:e,label:n,attributes:a})=>(0,b.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...a,className:(0,l.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const t=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=t.find(e=>e.props.value===r);return e?(0,a.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=f(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",v.tabList),children:[(0,b.jsx)(x,{...n,...e}),(0,b.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,b.jsx)(j,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/47da9d80.8ece4d5e.js b/assets/js/47da9d80.8ece4d5e.js new file mode 100644 index 0000000000..ddb17b6f11 --- /dev/null +++ b/assets/js/47da9d80.8ece4d5e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6314],{65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}},71285:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.12.5/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/must_be_api.md","tags":[],"version":"0.12.5","frontMatter":{"id":"must_be_api","slug":"/rules/must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/rules/unused_dependency"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",slug:"/rules/must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/485c5e01.604a9153.js b/assets/js/485c5e01.604a9153.js new file mode 100644 index 0000000000..b9416d665e --- /dev/null +++ b/assets/js/485c5e01.604a9153.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4276],{25636:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.12.3/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/inherited_dependency.md","tags":[],"version":"0.12.3","frontMatter":{"id":"inherited_dependency","slug":"/rules/inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.3/rules/must_be_api"},"next":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/redundant_dependency"}}');var s=d(23420),i=d(65404);const o={id:"inherited_dependency",slug:"/rules/inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},c=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleB"}),", and ",(0,s.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,s.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,s.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,s.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,s.jsx)(n.code,{children:":moduleA"})," -> ",(0,s.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>o,x:()=>c});var t=d(36672);const s={},i=t.createContext(s);function o(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/487ca811.0e457977.js b/assets/js/487ca811.0e457977.js new file mode 100644 index 0000000000..9bc7ba4448 --- /dev/null +++ b/assets/js/487ca811.0e457977.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8720],{51082:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.12.4/rules/compiler/unused_kapt_processor.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/compiler/unused_kapt_processor.md","tags":[],"version":"0.12.4","frontMatter":{"id":"unused_kapt_processor","slug":"/rules/unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/0.12.4/rules/use_anvil_factory_generation"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_plugin"}}');var t=s(23420),r=s(65404);const i={id:"unused_kapt_processor",slug:"/rules/unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,c={},d=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>a});var o=s(36672);const t={},r=o.createContext(t);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4c8a85bd.a9c6182b.js b/assets/js/4c8a85bd.a9c6182b.js new file mode 100644 index 0000000000..d717c9efac --- /dev/null +++ b/assets/js/4c8a85bd.a9c6182b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7286],{4787:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>a,frontMatter:()=>u,metadata:()=>t,toc:()=>i});const t=JSON.parse('{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.11.3/rules/unused.md","sourceDirName":"rules","slug":"/rules/unused","permalink":"/ModuleCheck/docs/0.11.3/rules/unused","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/unused.md","tags":[],"version":"0.11.3","frontMatter":{"id":"unused","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.11.3/ci-workflow"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.11.3/rules/must_be_api"}}');var d=s(23420),o=s(65404);const u={id:"unused",title:"Unused Dependency",sidebar_label:"Unused Dependency"},r=void 0,c={},i=[];function l(e){const n={p:"p",...(0,o.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,d.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>u,x:()=>r});var t=s(36672);const d={},o=t.createContext(d);function u(e){const n=t.useContext(o);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:u(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4e8e2262.aa0f58c7.js b/assets/js/4e8e2262.aa0f58c7.js new file mode 100644 index 0000000000..bdabce403f --- /dev/null +++ b/assets/js/4e8e2262.aa0f58c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9055],{64276:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>t,metadata:()=>d,toc:()=>l});const d=JSON.parse('{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.12.0/rules/android/disable_viewbinding.md","sourceDirName":"rules/android","slug":"/rules/android/disable_viewbinding","permalink":"/ModuleCheck/docs/0.12.0/rules/android/disable_viewbinding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/android/disable_viewbinding.md","tags":[],"version":"0.12.0","frontMatter":{"id":"disable_viewbinding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.0/rules/android/disable_resources"},"next":{"title":"Unused Kotlin Android Extensions","permalink":"/ModuleCheck/docs/0.12.0/rules/android/unused_kotlin_android_extensions"}}');var s=i(23420),o=i(65404);const t={id:"disable_viewbinding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,a={},l=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},65404:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>r});var d=i(36672);const s={},o=d.createContext(s);function t(e){const n=d.useContext(o);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),d.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/50b1f033.c59eb4a5.js b/assets/js/50b1f033.c59eb4a5.js new file mode 100644 index 0000000000..7f0d8396db --- /dev/null +++ b/assets/js/50b1f033.c59eb4a5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8179],{62961:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.12.0/rules/kapt/unused_kapt_processor.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/kapt/unused_kapt_processor.md","tags":[],"version":"0.12.0","frontMatter":{"id":"unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.12.0/rules/compiler/could_use_anvil_factory"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_plugin"}}');var t=s(23420),i=s(65404);const r={id:"unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,d={},c=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>a});var o=s(36672);const t={},i=o.createContext(t);function r(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/50cf1f78.f7d589c0.js b/assets/js/50cf1f78.f7d589c0.js new file mode 100644 index 0000000000..c8a8a35e8d --- /dev/null +++ b/assets/js/50cf1f78.f7d589c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3715],{65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(36672);const o={},d=s.createContext(o);function r(e){const n=s.useContext(d);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(d.Provider,{value:n},e.children)}},69327:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","source":"@site/versioned_docs/version-0.12.2/rules/overshot_dependency.md","sourceDirName":"rules","slug":"/rules/overshot_dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/overshot_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/overshot_dependency.md","tags":[],"version":"0.12.2","frontMatter":{"id":"overshot_dependency","slug":"/rules/overshot_dependency","title":"Overshot Dependency","sidebar_label":"Overshot Dependency"},"sidebar":"Docs","previous":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/redundant_dependency"},"next":{"title":"Project Depth","permalink":"/ModuleCheck/docs/0.12.2/rules/project_depth"}}');var o=t(23420),d=t(65404);const r={id:"overshot_dependency",slug:"/rules/overshot_dependency",title:"Overshot Dependency",sidebar_label:"Overshot Dependency"},c=void 0,i={},l=[];function u(e){const n={code:"code",em:"em",p:"p",pre:"pre",strong:"strong",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Finds project dependencies which aren't used by the declaring configuration, but are used by a\ndependent, downstream configuration."}),"\n",(0,o.jsxs)(n.p,{children:["For instance, assume that ",(0,o.jsx)(n.code,{children:":moduleB"})," declares an ",(0,o.jsx)(n.code,{children:"implementation"})," dependency upon ",(0,o.jsx)(n.code,{children:":moduleA"}),"."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n implementation(project(":moduleA"))\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["If ",(0,o.jsx)(n.code,{children:":moduleB"})," doesn't actually use ",(0,o.jsx)(n.code,{children:":moduleA"})," in its ",(0,o.jsx)(n.code,{children:"main"})," source, but it ",(0,o.jsx)(n.em,{children:"does"})," use it in ",(0,o.jsx)(n.code,{children:"test"}),"\nsource, it's an ",(0,o.jsx)(n.strong,{children:"overshot dependency"}),". The declaration should be changed to\nuse ",(0,o.jsx)(n.code,{children:"testImplementation"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n testImplementation(project(":moduleA"))\n}\n'})})]})}function a(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/5163.86d9e04c.js b/assets/js/5163.86d9e04c.js new file mode 100644 index 0000000000..dfbad94665 --- /dev/null +++ b/assets/js/5163.86d9e04c.js @@ -0,0 +1 @@ +(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5163],{15163:(t,e,i)=>{"use strict";i.d(e,{diagram:()=>X});var n=i(24199),r=i(47794),o=i(95379),s=i(27293),a=i(48090),h=i(46006),l=i(61274),c=i(13212),g=i(58480),u=i(81896),d=function(){var t=(0,s.K2)(function(t,e,i,n){for(i=i||{},n=t.length;n--;i[t[n]]=e);return i},"o"),e=[1,4],i=[1,13],n=[1,12],r=[1,15],o=[1,16],a=[1,20],h=[1,19],l=[6,7,8],c=[1,26],g=[1,24],u=[1,25],d=[6,7,11],p=[1,6,13,15,16,19,22],f=[1,33],y=[1,34],E=[1,6,7,11,13,15,16,19,22],_={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:(0,s.K2)(function(t,e,i,n,r,o,s){var a=o.length-1;switch(r){case 6:case 7:return n;case 8:n.getLogger().trace("Stop NL ");break;case 9:n.getLogger().trace("Stop EOF ");break;case 11:n.getLogger().trace("Stop NL2 ");break;case 12:n.getLogger().trace("Stop EOF2 ");break;case 15:n.getLogger().info("Node: ",o[a].id),n.addNode(o[a-1].length,o[a].id,o[a].descr,o[a].type);break;case 16:n.getLogger().trace("Icon: ",o[a]),n.decorateNode({icon:o[a]});break;case 17:case 21:n.decorateNode({class:o[a]});break;case 18:n.getLogger().trace("SPACELIST");break;case 19:n.getLogger().trace("Node: ",o[a].id),n.addNode(0,o[a].id,o[a].descr,o[a].type);break;case 20:n.decorateNode({icon:o[a]});break;case 25:n.getLogger().trace("node found ..",o[a-2]),this.$={id:o[a-1],descr:o[a-1],type:n.getType(o[a-2],o[a])};break;case 26:this.$={id:o[a],descr:o[a],type:n.nodeType.DEFAULT};break;case 27:n.getLogger().trace("node found ..",o[a-3]),this.$={id:o[a-3],descr:o[a-1],type:n.getType(o[a-2],o[a])}}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:i,7:[1,10],9:9,12:11,13:n,14:14,15:r,16:o,17:17,18:18,19:a,22:h},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:i,12:21,13:n,14:14,15:r,16:o,17:17,18:18,19:a,22:h},{6:i,9:22,12:11,13:n,14:14,15:r,16:o,17:17,18:18,19:a,22:h},{6:c,7:g,10:23,11:u},t(d,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:a,22:h}),t(d,[2,18]),t(d,[2,19]),t(d,[2,20]),t(d,[2,21]),t(d,[2,23]),t(d,[2,24]),t(d,[2,26],{19:[1,30]}),{20:[1,31]},{6:c,7:g,10:32,11:u},{1:[2,7],6:i,12:21,13:n,14:14,15:r,16:o,17:17,18:18,19:a,22:h},t(p,[2,14],{7:f,11:y}),t(E,[2,8]),t(E,[2,9]),t(E,[2,10]),t(d,[2,15]),t(d,[2,16]),t(d,[2,17]),{20:[1,35]},{21:[1,36]},t(p,[2,13],{7:f,11:y}),t(E,[2,11]),t(E,[2,12]),{21:[1,37]},t(d,[2,25]),t(d,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,s.K2)(function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)},"parseError"),parse:(0,s.K2)(function(t){var e=this,i=[0],n=[],r=[null],o=[],a=this.table,h="",l=0,c=0,g=0,u=o.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(p.yy[f]=this.yy[f]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var y=d.yylloc;o.push(y);var E=d.options&&d.options.ranges;function _(){var t;return"number"!=typeof(t=n.pop()||d.lex()||1)&&(t instanceof Array&&(t=(n=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)(function(t){i.length=i.length-2*t,r.length=r.length-t,o.length=o.length-t},"popStack"),(0,s.K2)(_,"lex");for(var m,v,N,A,L,T,O,D,I,w={};;){if(N=i[i.length-1],this.defaultActions[N]?A=this.defaultActions[N]:(null==m&&(m=_()),A=a[N]&&a[N][m]),void 0===A||!A.length||!A[0]){var R="";for(T in I=[],a[N])this.terminals_[T]&&T>2&&I.push("'"+this.terminals_[T]+"'");R=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(R,{text:d.match,token:this.terminals_[m]||m,line:d.yylineno,loc:y,expected:I})}if(A[0]instanceof Array&&A.length>1)throw new Error("Parse Error: multiple actions possible at state: "+N+", token: "+m);switch(A[0]){case 1:i.push(m),r.push(d.yytext),o.push(d.yylloc),i.push(A[1]),m=null,v?(m=v,v=null):(c=d.yyleng,h=d.yytext,l=d.yylineno,y=d.yylloc,g>0&&g--);break;case 2:if(O=this.productions_[A[1]][1],w.$=r[r.length-O],w._$={first_line:o[o.length-(O||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(O||1)].first_column,last_column:o[o.length-1].last_column},E&&(w._$.range=[o[o.length-(O||1)].range[0],o[o.length-1].range[1]]),void 0!==(L=this.performAction.apply(w,[h,c,l,p.yy,A[1],r,o].concat(u))))return L;O&&(i=i.slice(0,-1*O*2),r=r.slice(0,-1*O),o=o.slice(0,-1*O)),i.push(this.productions_[A[1]][0]),r.push(w.$),o.push(w._$),D=a[i[i.length-2]][i[i.length-1]],i.push(D);break;case 3:return!0}}return!0},"parse")},m=function(){return{EOF:1,parseError:(0,s.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,s.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K2)(function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K2)(function(){return this._more=!0,this},"more"),reject:(0,s.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,s.K2)(function(t,e){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var o in r)this[o]=r[o];return!1}return!1},"test_match"),next:(0,s.K2)(function(){if(this.done)return this.EOF;var t,e,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),o=0;o<r.length;o++)if((i=this._input.match(this.rules[r[o]]))&&(!e||i[0].length>e[0].length)){if(e=i,n=o,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,r[o])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K2)(function(t,e,i,n){switch(i){case 0:return t.getLogger().trace("Found comment",e.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:case 23:case 26:this.popState();break;case 5:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return t.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:t.getLogger().trace("end icon"),this.popState();break;case 10:return t.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return t.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:case 15:case 16:case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 24:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 27:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 30:case 33:case 34:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 31:case 32:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 35:case 36:return t.getLogger().trace("Long description:",e.yytext),20}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}}}();function v(){this.yy={}}return _.lexer=m,(0,s.K2)(v,"Parser"),v.prototype=_,_.Parser=v,new v}();d.parser=d;var p=d,f=[],y=0,E={},_=(0,s.K2)(()=>{f=[],y=0,E={}},"clear"),m=(0,s.K2)(function(t){for(let e=f.length-1;e>=0;e--)if(f[e].level<t)return f[e];return null},"getParent"),v=(0,s.K2)(()=>f.length>0?f[0]:null,"getMindmap"),N=(0,s.K2)((t,e,i,n)=>{s.Rm.info("addNode",t,e,i,n);const r=(0,s.D7)();let o=r.mindmap?.padding??s.UI.mindmap.padding;switch(n){case A.ROUNDED_RECT:case A.RECT:case A.HEXAGON:o*=2}const a={id:y++,nodeId:(0,s.jZ)(e,r),level:t,descr:(0,s.jZ)(i,r),type:n,children:[],width:r.mindmap?.maxNodeWidth??s.UI.mindmap.maxNodeWidth,padding:o},h=m(t);if(h)h.children.push(a),f.push(a);else{if(0!==f.length)throw new Error('There can be only one root. No parent could be found for ("'+a.descr+'")');f.push(a)}},"addNode"),A={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},L={clear:_,addNode:N,getMindmap:v,nodeType:A,getType:(0,s.K2)((t,e)=>{switch(s.Rm.debug("In get type",t,e),t){case"[":return A.RECT;case"(":return")"===e?A.ROUNDED_RECT:A.CLOUD;case"((":return A.CIRCLE;case")":return A.CLOUD;case"))":return A.BANG;case"{{":return A.HEXAGON;default:return A.DEFAULT}},"getType"),setElementForId:(0,s.K2)((t,e)=>{E[t]=e},"setElementForId"),decorateNode:(0,s.K2)(t=>{if(!t)return;const e=(0,s.D7)(),i=f[f.length-1];t.icon&&(i.icon=(0,s.jZ)(t.icon,e)),t.class&&(i.class=(0,s.jZ)(t.class,e))},"decorateNode"),type2Str:(0,s.K2)(t=>{switch(t){case A.DEFAULT:return"no-border";case A.RECT:return"rect";case A.ROUNDED_RECT:return"rounded-rect";case A.CIRCLE:return"circle";case A.CLOUD:return"cloud";case A.BANG:return"bang";case A.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),getLogger:(0,s.K2)(()=>s.Rm,"getLogger"),getElementById:(0,s.K2)(t=>E[t],"getElementById")},T=(0,s.K2)(function(t,e,i,n){e.append("path").attr("id","node-"+i.id).attr("class","node-bkg node-"+t.type2Str(i.type)).attr("d",`M0 ${i.height-5} v${10-i.height} q0,-5 5,-5 h${i.width-10} q5,0 5,5 v${i.height-5} H0 Z`),e.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",i.height).attr("x2",i.width).attr("y2",i.height)},"defaultBkg"),O=(0,s.K2)(function(t,e,i){e.append("rect").attr("id","node-"+i.id).attr("class","node-bkg node-"+t.type2Str(i.type)).attr("height",i.height).attr("width",i.width)},"rectBkg"),D=(0,s.K2)(function(t,e,i){const n=i.width,r=i.height,o=.15*n,s=.25*n,a=.35*n,h=.2*n;e.append("path").attr("id","node-"+i.id).attr("class","node-bkg node-"+t.type2Str(i.type)).attr("d",`M0 0 a${o},${o} 0 0,1 ${.25*n},${-1*n*.1}\n a${a},${a} 1 0,1 ${.4*n},${-1*n*.1}\n a${s},${s} 1 0,1 ${.35*n},${1*n*.2}\n\n a${o},${o} 1 0,1 ${.15*n},${1*r*.35}\n a${h},${h} 1 0,1 ${-1*n*.15},${1*r*.65}\n\n a${s},${o} 1 0,1 ${-1*n*.25},${.15*n}\n a${a},${a} 1 0,1 ${-1*n*.5},0\n a${o},${o} 1 0,1 ${-1*n*.25},${-1*n*.15}\n\n a${o},${o} 1 0,1 ${-1*n*.1},${-1*r*.35}\n a${h},${h} 1 0,1 ${.1*n},${-1*r*.65}\n\n H0 V0 Z`)},"cloudBkg"),I=(0,s.K2)(function(t,e,i){const n=i.width,r=i.height,o=.15*n;e.append("path").attr("id","node-"+i.id).attr("class","node-bkg node-"+t.type2Str(i.type)).attr("d",`M0 0 a${o},${o} 1 0,0 ${.25*n},${-1*r*.1}\n a${o},${o} 1 0,0 ${.25*n},0\n a${o},${o} 1 0,0 ${.25*n},0\n a${o},${o} 1 0,0 ${.25*n},${1*r*.1}\n\n a${o},${o} 1 0,0 ${.15*n},${1*r*.33}\n a${.8*o},${.8*o} 1 0,0 0,${1*r*.34}\n a${o},${o} 1 0,0 ${-1*n*.15},${1*r*.33}\n\n a${o},${o} 1 0,0 ${-1*n*.25},${.15*r}\n a${o},${o} 1 0,0 ${-1*n*.25},0\n a${o},${o} 1 0,0 ${-1*n*.25},0\n a${o},${o} 1 0,0 ${-1*n*.25},${-1*r*.15}\n\n a${o},${o} 1 0,0 ${-1*n*.1},${-1*r*.33}\n a${.8*o},${.8*o} 1 0,0 0,${-1*r*.34}\n a${o},${o} 1 0,0 ${.1*n},${-1*r*.33}\n\n H0 V0 Z`)},"bangBkg"),w=(0,s.K2)(function(t,e,i){e.append("circle").attr("id","node-"+i.id).attr("class","node-bkg node-"+t.type2Str(i.type)).attr("r",i.width/2)},"circleBkg");function R(t,e,i,n,r){return t.insert("polygon",":first-child").attr("points",n.map(function(t){return t.x+","+t.y}).join(" ")).attr("transform","translate("+(r.width-e)/2+", "+i+")")}(0,s.K2)(R,"insertPolygonShape");var C=(0,s.K2)(function(t,e,i){const n=i.height,r=n/4,o=i.width-i.padding+2*r;R(e,o,n,[{x:r,y:0},{x:o-r,y:0},{x:o,y:-n/2},{x:o-r,y:-n},{x:r,y:-n},{x:0,y:-n/2}],i)},"hexagonBkg"),M=(0,s.K2)(function(t,e,i){e.append("rect").attr("id","node-"+i.id).attr("class","node-bkg node-"+t.type2Str(i.type)).attr("height",i.height).attr("rx",i.padding).attr("ry",i.padding).attr("width",i.width)},"roundedRectBkg"),x=(0,s.K2)(async function(t,e,i,o,s){const a=s.htmlLabels,h=o%11,l=e.append("g");i.section=h;let c="section-"+h;h<0&&(c+=" section-root"),l.attr("class",(i.class?i.class+" ":"")+"mindmap-node "+c);const g=l.append("g"),u=l.append("g"),d=i.descr.replace(/(<br\/*>)/g,"\n");await(0,n.GZ)(u,d,{useHtmlLabels:a,width:i.width,classes:"mindmap-node-label"},s),a||u.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const p=u.node().getBBox(),[f]=(0,r.I5)(s.fontSize);if(i.height=p.height+1.1*f*.5+i.padding,i.width=p.width+2*i.padding,i.icon)if(i.type===t.nodeType.CIRCLE){i.height+=50,i.width+=50;l.append("foreignObject").attr("height","50px").attr("width",i.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+h+" "+i.icon),u.attr("transform","translate("+i.width/2+", "+(i.height/2-1.5*i.padding)+")")}else{i.width+=50;const t=i.height;i.height=Math.max(t,60);const e=Math.abs(i.height-t);l.append("foreignObject").attr("width","60px").attr("height",i.height).attr("style","text-align: center;margin-top:"+e/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+h+" "+i.icon),u.attr("transform","translate("+(25+i.width/2)+", "+(e/2+i.padding/2)+")")}else if(a){const t=(i.width-p.width)/2,e=(i.height-p.height)/2;u.attr("transform","translate("+t+", "+e+")")}else{const t=i.width/2,e=i.padding/2;u.attr("transform","translate("+t+", "+e+")")}switch(i.type){case t.nodeType.DEFAULT:T(t,g,i,h);break;case t.nodeType.ROUNDED_RECT:M(t,g,i,h);break;case t.nodeType.RECT:O(t,g,i,h);break;case t.nodeType.CIRCLE:g.attr("transform","translate("+i.width/2+", "+ +i.height/2+")"),w(t,g,i,h);break;case t.nodeType.CLOUD:D(t,g,i,h);break;case t.nodeType.BANG:I(t,g,i,h);break;case t.nodeType.HEXAGON:C(t,g,i,h)}return t.setElementForId(i.id,l),i.height},"drawNode"),G=(0,s.K2)(function(t,e){const i=t.getElementById(e.id),n=e.x||0,r=e.y||0;i.attr("transform","translate("+n+","+r+")")},"positionNode");async function S(t,e,i,n,r){await x(t,e,i,n,r),i.children&&await Promise.all(i.children.map((i,o)=>S(t,e,i,n<0?o:n,r)))}function b(t,e){e.edges().map((e,i)=>{const n=e.data();if(e[0]._private.bodyBounds){const r=e[0]._private.rscratch;s.Rm.trace("Edge: ",i,n),t.insert("path").attr("d",`M ${r.startX},${r.startY} L ${r.midX},${r.midY} L${r.endX},${r.endY} `).attr("class","edge section-edge-"+n.section+" edge-depth-"+n.depth)}})}function F(t,e,i,n){e.add({group:"nodes",data:{id:t.id.toString(),labelText:t.descr,height:t.height,width:t.width,level:n,nodeId:t.id,padding:t.padding,type:t.type},position:{x:t.x,y:t.y}}),t.children&&t.children.forEach(r=>{F(r,e,i,n+1),e.add({group:"edges",data:{id:`${t.id}_${r.id}`,source:t.id,target:r.id,depth:n,section:r.section}})})}function P(t,e){return new Promise(i=>{const n=(0,l.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),r=(0,a.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});n.remove(),F(t,r,e,0),r.nodes().forEach(function(t){t.layoutDimensions=()=>{const e=t.data();return{w:e.width,h:e.height}}}),r.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),r.ready(t=>{s.Rm.info("Ready",t),i(r)})})}function U(t,e){e.nodes().map((e,i)=>{const n=e.data();n.x=e.position().x,n.y=e.position().y,G(t,n);const r=t.getElementById(n.nodeId);s.Rm.info("id:",i,"Position: (",e.position().x,", ",e.position().y,")",n),r.attr("transform",`translate(${e.position().x-n.width/2}, ${e.position().y-n.height/2})`),r.attr("attr",`apa-${i})`)})}a.A.use(h),(0,s.K2)(S,"drawNodes"),(0,s.K2)(b,"drawEdges"),(0,s.K2)(F,"addNodes"),(0,s.K2)(P,"layoutMindmap"),(0,s.K2)(U,"positionNodes");var k={draw:(0,s.K2)(async(t,e,i,n)=>{s.Rm.debug("Rendering mindmap diagram\n"+t);const r=n.db,a=r.getMindmap();if(!a)return;const h=(0,s.D7)();h.htmlLabels=!1;const l=(0,o.D)(e),c=l.append("g");c.attr("class","mindmap-edges");const g=l.append("g");g.attr("class","mindmap-nodes"),await S(r,g,a,-1,h);const u=await P(a,h);b(c,u),U(r,u),(0,s.ot)(void 0,l,h.mindmap?.padding??s.UI.mindmap.padding,h.mindmap?.useMaxWidth??s.UI.mindmap.useMaxWidth)},"draw")},Y=(0,s.K2)(t=>{let e="";for(let i=0;i<t.THEME_COLOR_LIMIT;i++)t["lineColor"+i]=t["lineColor"+i]||t["cScaleInv"+i],(0,c.A)(t["lineColor"+i])?t["lineColor"+i]=(0,g.A)(t["lineColor"+i],20):t["lineColor"+i]=(0,u.A)(t["lineColor"+i],20);for(let i=0;i<t.THEME_COLOR_LIMIT;i++){const n=""+(17-3*i);e+=`\n .section-${i-1} rect, .section-${i-1} path, .section-${i-1} circle, .section-${i-1} polygon, .section-${i-1} path {\n fill: ${t["cScale"+i]};\n }\n .section-${i-1} text {\n fill: ${t["cScaleLabel"+i]};\n }\n .node-icon-${i-1} {\n font-size: 40px;\n color: ${t["cScaleLabel"+i]};\n }\n .section-edge-${i-1}{\n stroke: ${t["cScale"+i]};\n }\n .edge-depth-${i-1}{\n stroke-width: ${n};\n }\n .section-${i-1} line {\n stroke: ${t["cScaleInv"+i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `}return e},"genSections"),X={db:L,renderer:k,parser:p,styles:(0,s.K2)(t=>`\n .edge {\n stroke-width: 3;\n }\n ${Y(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n`,"getStyles")}},20239:function(t,e,i){var n;n=function(t){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=7)}([function(e,i){e.exports=t},function(t,e,i){"use strict";var n=i(0).FDLayoutConstants;function r(){}for(var o in n)r[o]=n[o];r.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,r.DEFAULT_RADIAL_SEPARATION=n.DEFAULT_EDGE_LENGTH,r.DEFAULT_COMPONENT_SEPERATION=60,r.TILE=!0,r.TILING_PADDING_VERTICAL=10,r.TILING_PADDING_HORIZONTAL=10,r.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=r},function(t,e,i){"use strict";var n=i(0).FDLayoutEdge;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},function(t,e,i){"use strict";var n=i(0).LGraph;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},function(t,e,i){"use strict";var n=i(0).LGraphManager;function r(t){n.call(this,t)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},function(t,e,i){"use strict";var n=i(0).FDLayoutNode,r=i(0).IMath;function o(t,e,i,r){n.call(this,t,e,i,r)}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];o.prototype.move=function(){var t=this.graphManager.getLayout();this.displacementX=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementY)),null==this.child||0==this.child.getNodes().length?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),t.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,n=this.getChild().getNodes(),r=0;r<n.length;r++)null==(i=n[r]).getChild()?(i.moveBy(t,e),i.displacementX+=t,i.displacementY+=e):i.propogateDisplacementToChildren(t,e)},o.prototype.setPred1=function(t){this.pred1=t},o.prototype.getPred1=function(){return pred1},o.prototype.getPred2=function(){return pred2},o.prototype.setNext=function(t){this.next=t},o.prototype.getNext=function(){return next},o.prototype.setProcessed=function(t){this.processed=t},o.prototype.isProcessed=function(){return processed},t.exports=o},function(t,e,i){"use strict";var n=i(0).FDLayout,r=i(4),o=i(3),s=i(5),a=i(2),h=i(1),l=i(0).FDLayoutConstants,c=i(0).LayoutConstants,g=i(0).Point,u=i(0).PointD,d=i(0).Layout,p=i(0).Integer,f=i(0).IGeometry,y=i(0).LGraph,E=i(0).Transform;function _(){n.call(this),this.toBeTiled={}}for(var m in _.prototype=Object.create(n.prototype),n)_[m]=n[m];_.prototype.newGraphManager=function(){var t=new r(this);return this.graphManager=t,t},_.prototype.newGraph=function(t){return new o(null,this.graphManager,t)},_.prototype.newNode=function(t){return new s(this.graphManager,t)},_.prototype.newEdge=function(t){return new a(null,null,t)},_.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.springConstant=l.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=l.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=l.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=l.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1,this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/l.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=l.CONVERGENCE_CHECK_PERIOD/this.maxIterations,this.coolingAdjuster=1)},_.prototype.layout=function(){return c.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},_.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental)h.TREE_REDUCTION_ON_INCREMENTAL&&(this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation(),e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)}),this.graphManager.setAllNodesToApplyGravitation(i));else{var t=this.getFlatForest();if(t.length>0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},_.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,n=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,n),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},_.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i<t.length;i++){var n=t[i].rect,r=t[i].id;e[r]={id:r,x:n.getCenterX(),y:n.getCenterY(),w:n.width,h:n.height}}return e},_.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var t=!1;if("during"===l.ANIMATE)this.emit("layoutstarted");else{for(;!t;)t=this.tick();this.graphManager.updateBounds()}},_.prototype.calculateNodesToApplyGravitationTo=function(){var t,e,i=[],n=this.graphManager.getGraphs(),r=n.length;for(e=0;e<r;e++)(t=n[e]).updateConnected(),t.isConnected||(i=i.concat(t.getNodes()));return i},_.prototype.createBendpoints=function(){var t=[];t=t.concat(this.graphManager.getAllEdges());var e,i=new Set;for(e=0;e<t.length;e++){var n=t[e];if(!i.has(n)){var r=n.getSource(),o=n.getTarget();if(r==o)n.getBendpoints().push(new u),n.getBendpoints().push(new u),this.createDummyNodesForBendpoints(n),i.add(n);else{var s=[];if(s=(s=s.concat(r.getEdgeListToNode(o))).concat(o.getEdgeListToNode(r)),!i.has(s[0])){var a;if(s.length>1)for(a=0;a<s.length;a++){var h=s[a];h.getBendpoints().push(new u),this.createDummyNodesForBendpoints(h)}s.forEach(function(t){i.add(t)})}}}if(i.size==t.length)break}},_.prototype.positionNodesRadially=function(t){for(var e=new g(0,0),i=Math.ceil(Math.sqrt(t.length)),n=0,r=0,o=0,s=new u(0,0),a=0;a<t.length;a++){a%i==0&&(o=0,r=n,0!=a&&(r+=h.DEFAULT_COMPONENT_SEPERATION),n=0);var l=t[a],p=d.findCenterOfTree(l);e.x=o,e.y=r,(s=_.radialLayout(l,p,e)).y>n&&(n=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new u(c.WORLD_CENTER_X-s.x/2,c.WORLD_CENTER_Y-s.y/2))},_.radialLayout=function(t,e,i){var n=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);_.branchRadialLayout(e,null,0,359,0,n);var r=y.calculateBounds(t),o=new E;o.setDeviceOrgX(r.getMinX()),o.setDeviceOrgY(r.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s<t.length;s++)t[s].transform(o);var a=new u(r.getMaxX(),r.getMaxY());return o.inverseTransformPoint(a)},_.branchRadialLayout=function(t,e,i,n,r,o){var s=(n-i+1)/2;s<0&&(s+=180);var a=(s+i)%360*f.TWO_PI/360,h=(Math.cos(a),r*Math.cos(a)),l=r*Math.sin(a);t.setCenter(h,l);var c=[],g=(c=c.concat(t.getEdges())).length;null!=e&&g--;for(var u,d=0,p=c.length,y=t.getEdgesBetween(e);y.length>1;){var E=y[0];y.splice(0,1);var m=c.indexOf(E);m>=0&&c.splice(m,1),p--,g--}u=null!=e?(c.indexOf(y[0])+1)%p:0;for(var v=Math.abs(n-i)/g,N=u;d!=g;N=++N%p){var A=c[N].getOtherEnd(t);if(A!=e){var L=(i+d*v)%360,T=(L+v)%360;_.branchRadialLayout(A,t,L,T,r+o,o),d++}}},_.maxDiagonalInTree=function(t){for(var e=p.MIN_VALUE,i=0;i<t.length;i++){var n=t[i].getDiagonal();n>e&&(e=n)}return e},_.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},_.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],n=this.graphManager.getAllNodes(),r=0;r<n.length;r++){var o=(a=n[r]).getParent();0!==this.getNodeDegreeWithChildren(a)||null!=o.id&&this.getToBeTiled(o)||i.push(a)}for(r=0;r<i.length;r++){var a,h=(a=i[r]).getParent().id;void 0===e[h]&&(e[h]=[]),e[h]=e[h].concat(a)}Object.keys(e).forEach(function(i){if(e[i].length>1){var n="DummyCompound_"+i;t.memberGroups[n]=e[i];var r=e[i][0].getParent(),o=new s(t.graphManager);o.id=n,o.paddingLeft=r.paddingLeft||0,o.paddingRight=r.paddingRight||0,o.paddingBottom=r.paddingBottom||0,o.paddingTop=r.paddingTop||0,t.idToDummyNode[n]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=r.getChild();h.add(o);for(var l=0;l<e[i].length;l++){var c=e[i][l];h.remove(c),a.add(c)}}})},_.prototype.clearCompounds=function(){var t={},e={};this.performDFSOnCompounds();for(var i=0;i<this.compoundOrder.length;i++)e[this.compoundOrder[i].id]=this.compoundOrder[i],t[this.compoundOrder[i].id]=[].concat(this.compoundOrder[i].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[i].getChild()),this.compoundOrder[i].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(t,e)},_.prototype.clearZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(i){var n=t.idToDummyNode[i];e[i]=t.tileNodes(t.memberGroups[i],n.paddingLeft+n.paddingRight),n.rect.width=e[i].width,n.rect.height=e[i].height})},_.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;t>=0;t--){var e=this.compoundOrder[t],i=e.id,n=e.paddingLeft,r=e.paddingTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,n,r)}},_.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(i){var n=t.idToDummyNode[i],r=n.paddingLeft,o=n.paddingTop;t.adjustLocations(e[i],n.rect.x,n.rect.y,r,o)})},_.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var n=i.getNodes(),r=0;r<n.length;r++){var o=n[r];if(this.getNodeDegree(o)>0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},_.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,n=0;n<e.length;n++){var r=e[n];r.getSource().id!==r.getTarget().id&&(i+=1)}return i},_.prototype.getNodeDegreeWithChildren=function(t){var e=this.getNodeDegree(t);if(null==t.getChild())return e;for(var i=t.getChild().getNodes(),n=0;n<i.length;n++){var r=i[n];e+=this.getNodeDegreeWithChildren(r)}return e},_.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},_.prototype.fillCompexOrderByDFS=function(t){for(var e=0;e<t.length;e++){var i=t[e];null!=i.getChild()&&this.fillCompexOrderByDFS(i.getChild().getNodes()),this.getToBeTiled(i)&&this.compoundOrder.push(i)}},_.prototype.adjustLocations=function(t,e,i,n,r){i+=r;for(var o=e+=n,s=0;s<t.rows.length;s++){var a=t.rows[s];e=o;for(var h=0,l=0;l<a.length;l++){var c=a[l];c.rect.x=e,c.rect.y=i,e+=c.rect.width+t.horizontalPadding,c.rect.height>h&&(h=c.rect.height)}i+=h+t.verticalPadding}},_.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(n){var r=e[n];i.tiledMemberPack[n]=i.tileNodes(t[n],r.paddingLeft+r.paddingRight),r.rect.width=i.tiledMemberPack[n].width,r.rect.height=i.tiledMemberPack[n].height})},_.prototype.tileNodes=function(t,e){var i={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:h.TILING_PADDING_VERTICAL,horizontalPadding:h.TILING_PADDING_HORIZONTAL};t.sort(function(t,e){return t.rect.width*t.rect.height>e.rect.width*e.rect.height?-1:t.rect.width*t.rect.height<e.rect.width*e.rect.height?1:0});for(var n=0;n<t.length;n++){var r=t[n];0==i.rows.length?this.insertNodeToRow(i,r,0,e):this.canAddHorizontal(i,r.rect.width,r.rect.height)?this.insertNodeToRow(i,r,this.getShortestRowIndex(i),e):this.insertNodeToRow(i,r,i.rows.length,e),this.shiftToLastRow(i)}return i},_.prototype.insertNodeToRow=function(t,e,i,n){var r=n;i==t.rows.length&&(t.rows.push([]),t.rowWidth.push(r),t.rowHeight.push(0));var o=t.rowWidth[i]+e.rect.width;t.rows[i].length>0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width<o&&(t.width=o);var s=e.rect.height;i>0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},_.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,n=0;n<t.rows.length;n++)t.rowWidth[n]<i&&(e=n,i=t.rowWidth[n]);return e},_.prototype.getLongestRowIndex=function(t){for(var e=-1,i=Number.MIN_VALUE,n=0;n<t.rows.length;n++)t.rowWidth[n]>i&&(e=n,i=t.rowWidth[n]);return e},_.prototype.canAddHorizontal=function(t,e,i){var n=this.getShortestRowIndex(t);if(n<0)return!0;var r=t.rowWidth[n];if(r+t.horizontalPadding+e<=t.width)return!0;var o,s,a=0;return t.rowHeight[n]<i&&n>0&&(a=i+t.verticalPadding-t.rowHeight[n]),o=t.width-r>=e+t.horizontalPadding?(t.height+a)/(r+e+t.horizontalPadding):(t.height+a)/t.width,a=i+t.verticalPadding,(s=t.width<e?(t.height+a)/e:(t.height+a)/t.width)<1&&(s=1/s),o<1&&(o=1/o),o<s},_.prototype.shiftToLastRow=function(t){var e=this.getLongestRowIndex(t),i=t.rowWidth.length-1,n=t.rows[e],r=n[n.length-1],o=r.width+t.horizontalPadding;if(t.width-t.rowWidth[i]>o&&e!=i){n.splice(-1,1),t.rows[i].push(r),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;a<n.length;a++)n[a].height>s&&(s=n[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]<r.height+t.verticalPadding&&(t.rowHeight[i]=r.height+t.verticalPadding);var l=t.rowHeight[e]+t.rowHeight[i];t.height+=l-h,this.shiftToLastRow(t)}},_.prototype.tilingPreLayout=function(){h.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},_.prototype.tilingPostLayout=function(){h.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},_.prototype.reduceTrees=function(){for(var t,e=[],i=!0;i;){var n=this.graphManager.getAllNodes(),r=[];i=!1;for(var o=0;o<n.length;o++)1!=(t=n[o]).getEdges().length||t.getEdges()[0].isInterGraph||null!=t.getChild()||(r.push([t,t.getEdges()[0],t.getOwner()]),i=!0);if(1==i){for(var s=[],a=0;a<r.length;a++)1==r[a][0].getEdges().length&&(s.push(r[a]),r[a][0].getOwner().remove(r[a][0]));e.push(s),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=e},_.prototype.growTree=function(t){for(var e,i=t[t.length-1],n=0;n<i.length;n++)e=i[n],this.findPlaceforPrunedNode(e),e[2].add(e[0]),e[2].add(e[1],e[1].source,e[1].target);t.splice(t.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},_.prototype.findPlaceforPrunedNode=function(t){var e,i,n=t[0],r=(i=n==t[1].source?t[1].target:t[1].source).startX,o=i.finishX,s=i.startY,a=i.finishY,h=[0,0,0,0];if(s>0)for(var c=r;c<=o;c++)h[0]+=this.grid[c][s-1].length+this.grid[c][s].length-1;if(o<this.grid.length-1)for(c=s;c<=a;c++)h[1]+=this.grid[o+1][c].length+this.grid[o][c].length-1;if(a<this.grid[0].length-1)for(c=r;c<=o;c++)h[2]+=this.grid[c][a+1].length+this.grid[c][a].length-1;if(r>0)for(c=s;c<=a;c++)h[3]+=this.grid[r-1][c].length+this.grid[r][c].length-1;for(var g,u,d=p.MAX_VALUE,f=0;f<h.length;f++)h[f]<d?(d=h[f],g=1,u=f):h[f]==d&&g++;if(3==g&&0==d)0==h[0]&&0==h[1]&&0==h[2]?e=1:0==h[0]&&0==h[1]&&0==h[3]?e=0:0==h[0]&&0==h[2]&&0==h[3]?e=3:0==h[1]&&0==h[2]&&0==h[3]&&(e=2);else if(2==g&&0==d){var y=Math.floor(2*Math.random());e=0==h[0]&&0==h[1]?0==y?0:1:0==h[0]&&0==h[2]?0==y?0:2:0==h[0]&&0==h[3]?0==y?0:3:0==h[1]&&0==h[2]?0==y?1:2:0==h[1]&&0==h[3]?0==y?1:3:0==y?2:3}else e=4==g&&0==d?y=Math.floor(4*Math.random()):u;0==e?n.setCenter(i.getCenterX(),i.getCenterY()-i.getHeight()/2-l.DEFAULT_EDGE_LENGTH-n.getHeight()/2):1==e?n.setCenter(i.getCenterX()+i.getWidth()/2+l.DEFAULT_EDGE_LENGTH+n.getWidth()/2,i.getCenterY()):2==e?n.setCenter(i.getCenterX(),i.getCenterY()+i.getHeight()/2+l.DEFAULT_EDGE_LENGTH+n.getHeight()/2):n.setCenter(i.getCenterX()-i.getWidth()/2-l.DEFAULT_EDGE_LENGTH-n.getWidth()/2,i.getCenterY())},t.exports=_},function(t,e,i){"use strict";var n={};n.layoutBase=i(0),n.CoSEConstants=i(1),n.CoSEEdge=i(2),n.CoSEGraph=i(3),n.CoSEGraphManager=i(4),n.CoSELayout=i(6),n.CoSENode=i(5),t.exports=n}])},t.exports=n(i(81614))},46006:function(t,e,i){var n;n=function(t){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(e,i){e.exports=t},function(t,e,i){"use strict";var n=i(0).layoutBase.LayoutConstants,r=i(0).layoutBase.FDLayoutConstants,o=i(0).CoSEConstants,s=i(0).CoSELayout,a=i(0).CoSENode,h=i(0).layoutBase.PointD,l=i(0).layoutBase.DimensionD,c={ready:function(){},stop:function(){},quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function g(t){this.options=function(t,e){var i={};for(var n in t)i[n]=t[n];for(var n in e)i[n]=e[n];return i}(c,t),u(this.options)}var u=function(t){null!=t.nodeRepulsion&&(o.DEFAULT_REPULSION_STRENGTH=r.DEFAULT_REPULSION_STRENGTH=t.nodeRepulsion),null!=t.idealEdgeLength&&(o.DEFAULT_EDGE_LENGTH=r.DEFAULT_EDGE_LENGTH=t.idealEdgeLength),null!=t.edgeElasticity&&(o.DEFAULT_SPRING_STRENGTH=r.DEFAULT_SPRING_STRENGTH=t.edgeElasticity),null!=t.nestingFactor&&(o.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.nestingFactor),null!=t.gravity&&(o.DEFAULT_GRAVITY_STRENGTH=r.DEFAULT_GRAVITY_STRENGTH=t.gravity),null!=t.numIter&&(o.MAX_ITERATIONS=r.MAX_ITERATIONS=t.numIter),null!=t.gravityRange&&(o.DEFAULT_GRAVITY_RANGE_FACTOR=r.DEFAULT_GRAVITY_RANGE_FACTOR=t.gravityRange),null!=t.gravityCompound&&(o.DEFAULT_COMPOUND_GRAVITY_STRENGTH=r.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.gravityCompound),null!=t.gravityRangeCompound&&(o.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.gravityRangeCompound),null!=t.initialEnergyOnIncremental&&(o.DEFAULT_COOLING_FACTOR_INCREMENTAL=r.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.initialEnergyOnIncremental),"draft"==t.quality?n.QUALITY=0:"proof"==t.quality?n.QUALITY=2:n.QUALITY=1,o.NODE_DIMENSIONS_INCLUDE_LABELS=r.NODE_DIMENSIONS_INCLUDE_LABELS=n.NODE_DIMENSIONS_INCLUDE_LABELS=t.nodeDimensionsIncludeLabels,o.DEFAULT_INCREMENTAL=r.DEFAULT_INCREMENTAL=n.DEFAULT_INCREMENTAL=!t.randomize,o.ANIMATE=r.ANIMATE=n.ANIMATE=t.animate,o.TILE=t.tile,o.TILING_PADDING_VERTICAL="function"==typeof t.tilingPaddingVertical?t.tilingPaddingVertical.call():t.tilingPaddingVertical,o.TILING_PADDING_HORIZONTAL="function"==typeof t.tilingPaddingHorizontal?t.tilingPaddingHorizontal.call():t.tilingPaddingHorizontal};g.prototype.run=function(){var t,e,i=this.options,n=(this.idToLNode={},this.layout=new s),r=this;r.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var o=n.newGraphManager();this.gm=o;var a=this.options.eles.nodes(),h=this.options.eles.edges();this.root=o.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(a),n);for(var l=0;l<h.length;l++){var c=h[l],g=this.idToLNode[c.data("source")],u=this.idToLNode[c.data("target")];g!==u&&0==g.getEdgesBetween(u).length&&(o.add(n.newEdge(),g,u).id=c.id())}var d=function(t,e){"number"==typeof t&&(t=e);var i=t.data("id"),n=r.idToLNode[i];return{x:n.getRect().getCenterX(),y:n.getRect().getCenterY()}},p=function o(){for(var s,a=function(){i.fit&&i.cy.fit(i.eles,i.padding),t||(t=!0,r.cy.one("layoutready",i.ready),r.cy.trigger({type:"layoutready",layout:r}))},h=r.options.refresh,l=0;l<h&&!s;l++)s=r.stopped||r.layout.tick();if(s)return n.checkLayoutSuccess()&&!n.isSubLayout&&n.doPostLayout(),n.tilingPostLayout&&n.tilingPostLayout(),n.isLayoutFinished=!0,r.options.eles.nodes().positions(d),a(),r.cy.one("layoutstop",r.options.stop),r.cy.trigger({type:"layoutstop",layout:r}),e&&cancelAnimationFrame(e),void(t=!1);var c=r.layout.getPositionsData();i.eles.nodes().positions(function(t,e){if("number"==typeof t&&(t=e),!t.isParent()){for(var i=t.id(),n=c[i],r=t;null==n&&(n=c[r.data("parent")]||c["DummyCompound_"+r.data("parent")],c[i]=n,null!=(r=r.parent()[0])););return null!=n?{x:n.x,y:n.y}:{x:t.position("x"),y:t.position("y")}}}),a(),e=requestAnimationFrame(o)};return n.addListener("layoutstarted",function(){"during"===r.options.animate&&(e=requestAnimationFrame(p))}),n.runLayout(),"during"!==this.options.animate&&(r.options.eles.nodes().not(":parent").layoutPositions(r,r.options,d),t=!1),this},g.prototype.getTopMostNodes=function(t){for(var e={},i=0;i<t.length;i++)e[t[i].id()]=!0;var n=t.filter(function(t,i){"number"==typeof t&&(t=i);for(var n=t.parent()[0];null!=n;){if(e[n.id()])return!1;n=n.parent()[0]}return!0});return n},g.prototype.processChildrenList=function(t,e,i){for(var n=e.length,r=0;r<n;r++){var o,s,c=e[r],g=c.children(),u=c.layoutDimensions({nodeDimensionsIncludeLabels:this.options.nodeDimensionsIncludeLabels});if((o=null!=c.outerWidth()&&null!=c.outerHeight()?t.add(new a(i.graphManager,new h(c.position("x")-u.w/2,c.position("y")-u.h/2),new l(parseFloat(u.w),parseFloat(u.h)))):t.add(new a(this.graphManager))).id=c.data("id"),o.paddingLeft=parseInt(c.css("padding")),o.paddingTop=parseInt(c.css("padding")),o.paddingRight=parseInt(c.css("padding")),o.paddingBottom=parseInt(c.css("padding")),this.options.nodeDimensionsIncludeLabels&&c.isParent()){var d=c.boundingBox({includeLabels:!0,includeNodes:!1}).w,p=c.boundingBox({includeLabels:!0,includeNodes:!1}).h,f=c.css("text-halign");o.labelWidth=d,o.labelHeight=p,o.labelPos=f}this.idToLNode[c.data("id")]=o,isNaN(o.rect.x)&&(o.rect.x=0),isNaN(o.rect.y)&&(o.rect.y=0),null!=g&&g.length>0&&(s=i.getGraphManager().add(i.newGraph(),o),this.processChildrenList(s,g,i))}},g.prototype.stop=function(){return this.stopped=!0,this};var d=function(t){t("layout","cose-bilkent",g)};"undefined"!=typeof cytoscape&&d(cytoscape),t.exports=d}])},t.exports=n(i(20239))},81614:function(t){var e;e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=26)}([function(t,e,i){"use strict";function n(){}n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(8),o=i(9);function s(t,e,i){n.call(this,i),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=i,this.bendpoints=[],this.source=t,this.target=e}for(var a in s.prototype=Object.create(n.prototype),n)s[a]=n[a];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(t,e){for(var i=this.getOtherEnd(t),n=e.getGraphManager().getRoot();;){if(i.getOwner()==e)return i;if(i.getOwner()==n)break;i=i.getOwner().getParent()}return null},s.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=r.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,i){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(13),s=i(0),a=i(16),h=i(4);function l(t,e,i,s){null==i&&null==s&&(s=e),n.call(this,s),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=r.MIN_VALUE,this.inclusionTreeDepth=r.MAX_VALUE,this.vGraphObject=s,this.edges=[],this.graphManager=t,this.rect=null!=i&&null!=e?new o(e.x,e.y,i.width,i.height):new o}for(var c in l.prototype=Object.create(n.prototype),n)l[c]=n[c];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(t){this.rect.width=t},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(t){this.rect.height=t},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new h(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new h(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},l.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},l.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},l.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},l.prototype.getEdgeListToNode=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.target==t){if(n.source!=i)throw"Incorrect edge source!";e.push(n)}}),e},l.prototype.getEdgesBetween=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.source!=i&&n.target!=i)throw"Incorrect edge source and/or target";n.target!=t&&n.source!=t||e.push(n)}),e},l.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach(function(i){if(i.source==e)t.add(i.target);else{if(i.target!=e)throw"Incorrect incidency!";t.add(i.source)}}),t},l.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),i=0;i<e.length;i++)e[i].withChildren().forEach(function(e){t.add(e)});return t},l.prototype.getNoOfChildren=function(){var t=0;if(null==this.child)t=1;else for(var e=this.child.getNodes(),i=0;i<e.length;i++)t+=e[i].getNoOfChildren();return 0==t&&(t=1),t},l.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},l.prototype.calcEstimatedSize=function(){return null==this.child?this.estimatedSize=(this.rect.width+this.rect.height)/2:(this.estimatedSize=this.child.calcEstimatedSize(),this.rect.width=this.estimatedSize,this.rect.height=this.estimatedSize,this.estimatedSize)},l.prototype.scatter=function(){var t,e,i=-s.INITIAL_WORLD_BOUNDARY,n=s.INITIAL_WORLD_BOUNDARY;t=s.WORLD_CENTER_X+a.nextDouble()*(n-i)+i;var r=-s.INITIAL_WORLD_BOUNDARY,o=s.INITIAL_WORLD_BOUNDARY;e=s.WORLD_CENTER_Y+a.nextDouble()*(o-r)+r,this.rect.x=t,this.rect.y=e},l.prototype.updateBounds=function(){if(null==this.getChild())throw"assert failed";if(0!=this.getChild().getNodes().length){var t=this.getChild();if(t.updateBounds(!0),this.rect.x=t.getLeft(),this.rect.y=t.getTop(),this.setWidth(t.getRight()-t.getLeft()),this.setHeight(t.getBottom()-t.getTop()),s.NODE_DIMENSIONS_INCLUDE_LABELS){var e=t.getRight()-t.getLeft(),i=t.getBottom()-t.getTop();this.labelWidth>e&&(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)),this.labelHeight>i&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-i)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-i),this.setHeight(this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==r.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var n=new h(e,i),r=t.inverseTransformPoint(n);this.setLocation(r.x,r.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";function n(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(t){this.x=t},n.prototype.setY=function(t){this.y=t},n.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(0),s=i(6),a=i(3),h=i(1),l=i(13),c=i(12),g=i(11);function u(t,e,i){n.call(this,i),this.estimatedSize=r.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var d in u.prototype=Object.create(n.prototype),n)u[d]=n[d];u.prototype.getNodes=function(){return this.nodes},u.prototype.getEdges=function(){return this.edges},u.prototype.getGraphManager=function(){return this.graphManager},u.prototype.getParent=function(){return this.parent},u.prototype.getLeft=function(){return this.left},u.prototype.getRight=function(){return this.right},u.prototype.getTop=function(){return this.top},u.prototype.getBottom=function(){return this.bottom},u.prototype.isConnected=function(){return this.isConnected},u.prototype.add=function(t,e,i){if(null==e&&null==i){var n=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(n)>-1)throw"Node already in graph!";return n.owner=this,this.getNodes().push(n),n}var r=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(r.source=e,r.target=i,r.isInterGraph=!1,this.getEdges().push(r),e.edges.push(r),i!=e&&i.edges.push(r),r)},u.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),n=i.length,r=0;r<n;r++)(o=i[r]).isInterGraph?this.graphManager.remove(o):o.source.owner.remove(o);if(-1==(s=this.nodes.indexOf(e)))throw"Node not in owner node list!";this.nodes.splice(s,1)}else if(t instanceof h){var o;if(null==(o=t))throw"Edge is null!";if(null==o.source||null==o.target)throw"Source and/or target is null!";if(null==o.source.owner||null==o.target.owner||o.source.owner!=this||o.target.owner!=this)throw"Source and/or target owner is invalid!";var s,l=o.source.edges.indexOf(o),c=o.target.edges.indexOf(o);if(!(l>-1&&c>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(c,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},u.prototype.updateLeftTop=function(){for(var t,e,i,n=r.MAX_VALUE,o=r.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h<a;h++){var l=s[h];n>(t=l.getTop())&&(n=t),o>(e=l.getLeft())&&(o=e)}return n==r.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=n-i,new c(this.left,this.top))},u.prototype.updateBounds=function(t){for(var e,i,n,o,s,a=r.MAX_VALUE,h=-r.MAX_VALUE,c=r.MAX_VALUE,g=-r.MAX_VALUE,u=this.nodes,d=u.length,p=0;p<d;p++){var f=u[p];t&&null!=f.child&&f.updateBounds(),a>(e=f.getLeft())&&(a=e),h<(i=f.getRight())&&(h=i),c>(n=f.getTop())&&(c=n),g<(o=f.getBottom())&&(g=o)}var y=new l(a,c,h-a,g-c);a==r.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=u[0].getParent().paddingLeft?u[0].getParent().paddingLeft:this.margin,this.left=y.x-s,this.right=y.x+y.width+s,this.top=y.y-s,this.bottom=y.y+y.height+s},u.calculateBounds=function(t){for(var e,i,n,o,s=r.MAX_VALUE,a=-r.MAX_VALUE,h=r.MAX_VALUE,c=-r.MAX_VALUE,g=t.length,u=0;u<g;u++){var d=t[u];s>(e=d.getLeft())&&(s=e),a<(i=d.getRight())&&(a=i),h>(n=d.getTop())&&(h=n),c<(o=d.getBottom())&&(c=o)}return new l(s,h,a-s,c-h)},u.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},u.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},u.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,n=0;n<i;n++)t+=e[n].calcEstimatedSize();return this.estimatedSize=0==t?o.EMPTY_COMPOUND_NODE_SIZE:t/Math.sqrt(this.nodes.length),this.estimatedSize},u.prototype.updateConnected=function(){var t=this;if(0!=this.nodes.length){var e,i,n=new g,r=new Set,o=this.nodes[0];for(o.withChildren().forEach(function(t){n.push(t),r.add(t)});0!==n.length;)for(var s=(e=(o=n.shift()).getEdges()).length,a=0;a<s;a++)null==(i=e[a].getOtherEndInGraph(o,this))||r.has(i)||i.withChildren().forEach(function(t){n.push(t),r.add(t)});if(this.isConnected=!1,r.size>=this.nodes.length){var h=0;r.forEach(function(e){e.owner==t&&h++}),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=u},function(t,e,i){"use strict";var n,r=i(1);function o(t){n=i(5),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,n,r){if(null==i&&null==n&&null==r){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}r=i,i=t;var o=(n=e).getOwner(),s=r.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,n,r);if(i.isInterGraph=!0,i.source=n,i.target=r,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof n){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a<s;a++)i=o[a],e.remove(i);var h,l=[];for(s=(l=l.concat(e.getNodes())).length,a=0;a<s;a++)h=l[a],e.remove(h);e==this.rootGraph&&this.setRootGraph(null);var c=this.graphs.indexOf(e);this.graphs.splice(c,1),e.parent=null}else if(t instanceof r){if(null==(i=t))throw"Edge is null!";if(!i.isInterGraph)throw"Not an inter-graph edge!";if(null==i.source||null==i.target)throw"Source and/or target is null!";if(-1==i.source.edges.indexOf(i)||-1==i.target.edges.indexOf(i))throw"Source and/or target doesn't know this edge!";if(c=i.source.edges.indexOf(i),i.source.edges.splice(c,1),c=i.target.edges.indexOf(i),i.target.edges.splice(c,1),null==i.source.owner||null==i.source.owner.getGraphManager())throw"Edge owner graph or owner graph manager is null!";if(-1==i.source.owner.getGraphManager().edges.indexOf(i))throw"Not in owner graph manager's edge list!";c=i.source.owner.getGraphManager().edges.indexOf(i),i.source.owner.getGraphManager().edges.splice(c,1)}},o.prototype.updateBounds=function(){this.rootGraph.updateBounds(!0)},o.prototype.getGraphs=function(){return this.graphs},o.prototype.getAllNodes=function(){if(null==this.allNodes){for(var t=[],e=this.getGraphs(),i=e.length,n=0;n<i;n++)t=t.concat(e[n].getNodes());this.allNodes=t}return this.allNodes},o.prototype.resetAllNodes=function(){this.allNodes=null},o.prototype.resetAllEdges=function(){this.allEdges=null},o.prototype.resetAllNodesToApplyGravitation=function(){this.allNodesToApplyGravitation=null},o.prototype.getAllEdges=function(){if(null==this.allEdges){for(var t=[],e=this.getGraphs(),i=(e.length,0);i<e.length;i++)t=t.concat(e[i].getEdges());t=t.concat(this.edges),this.allEdges=t}return this.allEdges},o.prototype.getAllNodesToApplyGravitation=function(){return this.allNodesToApplyGravitation},o.prototype.setAllNodesToApplyGravitation=function(t){if(null!=this.allNodesToApplyGravitation)throw"assert failed";this.allNodesToApplyGravitation=t},o.prototype.getRoot=function(){return this.rootGraph},o.prototype.setRootGraph=function(t){if(t.getGraphManager()!=this)throw"Root not in this graph mgr!";this.rootGraph=t,null==t.parent&&(t.parent=this.layout.newNode("Root node"))},o.prototype.getLayout=function(){return this.layout},o.prototype.isOneAncestorOfOther=function(t,e){if(null==t||null==e)throw"assert failed";if(t==e)return!0;for(var i,n=t.getOwner();null!=(i=n.getParent());){if(i==e)return!0;if(null==(n=i.getOwner()))break}for(n=e.getOwner();null!=(i=n.getParent());){if(i==t)return!0;if(null==(n=i.getOwner()))break}return!1},o.prototype.calcLowestCommonAncestors=function(){for(var t,e,i,n,r,o=this.getAllEdges(),s=o.length,a=0;a<s;a++)if(e=(t=o[a]).source,i=t.target,t.lca=null,t.sourceInLca=e,t.targetInLca=i,e!=i){for(n=e.getOwner();null==t.lca;){for(t.targetInLca=i,r=i.getOwner();null==t.lca;){if(r==n){t.lca=r;break}if(r==this.rootGraph)break;if(null!=t.lca)throw"assert failed";t.targetInLca=r.getParent(),r=t.targetInLca.getOwner()}if(n==this.rootGraph)break;null==t.lca&&(t.sourceInLca=n.getParent(),n=t.sourceInLca.getOwner())}if(null==t.lca)throw"assert failed"}else t.lca=e.getOwner()},o.prototype.calcLowestCommonAncestor=function(t,e){if(t==e)return t.getOwner();for(var i=t.getOwner();null!=i;){for(var n=e.getOwner();null!=n;){if(n==i)return n;n=n.getParent().getOwner()}i=i.getParent().getOwner()}return i},o.prototype.calcInclusionTreeDepths=function(t,e){var i;null==t&&null==e&&(t=this.rootGraph,e=1);for(var n=t.getNodes(),r=n.length,o=0;o<r;o++)(i=n[o]).inclusionTreeDepth=e,null!=i.child&&this.calcInclusionTreeDepths(i.child,e+1)},o.prototype.includesInvalidEdge=function(){for(var t,e=this.edges.length,i=0;i<e;i++)if(t=this.edges[i],this.isOneAncestorOfOther(t.source,t.target))return!0;return!1},t.exports=o},function(t,e,i){"use strict";var n=i(0);function r(){}for(var o in n)r[o]=n[o];r.MAX_ITERATIONS=2500,r.DEFAULT_EDGE_LENGTH=50,r.DEFAULT_SPRING_STRENGTH=.45,r.DEFAULT_REPULSION_STRENGTH=4500,r.DEFAULT_GRAVITY_STRENGTH=.4,r.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,r.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,r.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,r.COOLING_ADAPTATION_FACTOR=.33,r.ADAPTATION_LOWER_NODE_LIMIT=1e3,r.ADAPTATION_UPPER_NODE_LIMIT=5e3,r.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,r.MAX_NODE_DISPLACEMENT=3*r.MAX_NODE_DISPLACEMENT_INCREMENTAL,r.MIN_REPULSION_DIST=r.DEFAULT_EDGE_LENGTH/10,r.CONVERGENCE_CHECK_PERIOD=100,r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,r.MIN_EDGE_LENGTH=1,r.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=r},function(t,e,i){"use strict";var n=i(12);function r(){}r.calcSeparationAmount=function(t,e,i,n){if(!t.intersects(e))throw"assert failed";var r=new Array(2);this.decideDirectionsForOverlappingNodes(t,e,r),i[0]=Math.min(t.getRight(),e.getRight())-Math.max(t.x,e.x),i[1]=Math.min(t.getBottom(),e.getBottom())-Math.max(t.y,e.y),t.getX()<=e.getX()&&t.getRight()>=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]<a?a=i[0]:s=i[1],i[0]=-1*r[0]*(a/2+n),i[1]=-1*r[1]*(s/2+n)},r.decideDirectionsForOverlappingNodes=function(t,e,i){t.getCenterX()<e.getCenterX()?i[0]=-1:i[0]=1,t.getCenterY()<e.getCenterY()?i[1]=-1:i[1]=1},r.getIntersection2=function(t,e,i){var n=t.getCenterX(),r=t.getCenterY(),o=e.getCenterX(),s=e.getCenterY();if(t.intersects(e))return i[0]=n,i[1]=r,i[2]=o,i[3]=s,!0;var a=t.getX(),h=t.getY(),l=t.getRight(),c=t.getX(),g=t.getBottom(),u=t.getRight(),d=t.getWidthHalf(),p=t.getHeightHalf(),f=e.getX(),y=e.getY(),E=e.getRight(),_=e.getX(),m=e.getBottom(),v=e.getRight(),N=e.getWidthHalf(),A=e.getHeightHalf(),L=!1,T=!1;if(n===o){if(r>s)return i[0]=n,i[1]=h,i[2]=o,i[3]=m,!1;if(r<s)return i[0]=n,i[1]=g,i[2]=o,i[3]=y,!1}else if(r===s){if(n>o)return i[0]=a,i[1]=r,i[2]=E,i[3]=s,!1;if(n<o)return i[0]=l,i[1]=r,i[2]=f,i[3]=s,!1}else{var O=t.height/t.width,D=e.height/e.width,I=(s-r)/(o-n),w=void 0,R=void 0,C=void 0,M=void 0,x=void 0,G=void 0;if(-O===I?n>o?(i[0]=c,i[1]=g,L=!0):(i[0]=l,i[1]=h,L=!0):O===I&&(n>o?(i[0]=a,i[1]=h,L=!0):(i[0]=u,i[1]=g,L=!0)),-D===I?o>n?(i[2]=_,i[3]=m,T=!0):(i[2]=E,i[3]=y,T=!0):D===I&&(o>n?(i[2]=f,i[3]=y,T=!0):(i[2]=v,i[3]=m,T=!0)),L&&T)return!1;if(n>o?r>s?(w=this.getCardinalDirection(O,I,4),R=this.getCardinalDirection(D,I,2)):(w=this.getCardinalDirection(-O,I,3),R=this.getCardinalDirection(-D,I,1)):r>s?(w=this.getCardinalDirection(-O,I,1),R=this.getCardinalDirection(-D,I,3)):(w=this.getCardinalDirection(O,I,2),R=this.getCardinalDirection(D,I,4)),!L)switch(w){case 1:M=h,C=n+-p/I,i[0]=C,i[1]=M;break;case 2:C=u,M=r+d*I,i[0]=C,i[1]=M;break;case 3:M=g,C=n+p/I,i[0]=C,i[1]=M;break;case 4:C=c,M=r+-d*I,i[0]=C,i[1]=M}if(!T)switch(R){case 1:G=y,x=o+-A/I,i[2]=x,i[3]=G;break;case 2:x=v,G=s+N*I,i[2]=x,i[3]=G;break;case 3:G=m,x=o+A/I,i[2]=x,i[3]=G;break;case 4:x=_,G=s+-N*I,i[2]=x,i[3]=G}}return!1},r.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},r.getIntersection=function(t,e,i,r){if(null==r)return this.getIntersection2(t,e,i);var o,s,a,h,l,c,g,u=t.x,d=t.y,p=e.x,f=e.y,y=i.x,E=i.y,_=r.x,m=r.y;return 0===(g=(o=f-d)*(h=y-_)-(s=m-E)*(a=u-p))?null:new n((a*(c=_*E-y*m)-h*(l=p*d-u*f))/g,(s*l-o*c)/g)},r.angleOfVector=function(t,e,i,n){var r=void 0;return t!==i?(r=Math.atan((n-e)/(i-t)),i<t?r+=Math.PI:n<e&&(r+=this.TWO_PI)):r=n<e?this.ONE_AND_HALF_PI:this.HALF_PI,r},r.doIntersect=function(t,e,i,n){var r=t.x,o=t.y,s=e.x,a=e.y,h=i.x,l=i.y,c=n.x,g=n.y,u=(s-r)*(g-l)-(c-h)*(a-o);if(0===u)return!1;var d=((g-l)*(c-r)+(h-c)*(g-o))/u,p=((o-a)*(c-r)+(s-r)*(g-o))/u;return 0<d&&d<1&&0<p&&p<1},r.HALF_PI=.5*Math.PI,r.ONE_AND_HALF_PI=1.5*Math.PI,r.TWO_PI=2*Math.PI,r.THREE_PI=3*Math.PI,t.exports=r},function(t,e,i){"use strict";function n(){}n.sign=function(t){return t>0?1:t<0?-1:0},n.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},n.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=n},function(t,e,i){"use strict";function n(){}n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=function(t){return{value:t,next:null,prev:null}},o=function(t,e,i,n){return null!==t?t.next=e:n.head=e,null!==i?i.prev=e:n.tail=e,e.prev=t,e.next=i,n.length++,e},s=function(t,e){var i=t.prev,n=t.next;return null!==i?i.next=n:e.head=n,null!==n?n.prev=i:e.tail=i,t.prev=t.next=null,e.length--,t},a=function(){function t(e){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.length=0,this.head=null,this.tail=null,null!=e&&e.forEach(function(t){return i.push(t)})}return n(t,[{key:"size",value:function(){return this.length}},{key:"insertBefore",value:function(t,e){return o(e.prev,r(t),e,this)}},{key:"insertAfter",value:function(t,e){return o(e,r(t),e.next,this)}},{key:"insertNodeBefore",value:function(t,e){return o(e.prev,t,e,this)}},{key:"insertNodeAfter",value:function(t,e){return o(e,t,e.next,this)}},{key:"push",value:function(t){return o(this.tail,r(t),null,this)}},{key:"unshift",value:function(t){return o(null,r(t),this.head,this)}},{key:"remove",value:function(t){return s(t,this)}},{key:"pop",value:function(){return s(this.tail,this).value}},{key:"popNode",value:function(){return s(this.tail,this)}},{key:"shift",value:function(){return s(this.head,this).value}},{key:"shiftNode",value:function(){return s(this.head,this)}},{key:"get_object_at",value:function(t){if(t<=this.length()){for(var e=1,i=this.head;e<t;)i=i.next,e++;return i.value}}},{key:"set_object_at",value:function(t,e){if(t<=this.length()){for(var i=1,n=this.head;i<t;)n=n.next,i++;n.value=e}}}]),t}();t.exports=a},function(t,e,i){"use strict";function n(t,e,i){this.x=null,this.y=null,null==t&&null==e&&null==i?(this.x=0,this.y=0):"number"==typeof t&&"number"==typeof e&&null==i?(this.x=t,this.y=e):"Point"==t.constructor.name&&null==e&&null==i&&(i=t,this.x=i.x,this.y=i.y)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.getLocation=function(){return new n(this.x,this.y)},n.prototype.setLocation=function(t,e,i){"Point"==t.constructor.name&&null==e&&null==i?(i=t,this.setLocation(i.x,i.y)):"number"==typeof t&&"number"==typeof e&&null==i&&(parseInt(t)==t&&parseInt(e)==e?this.move(t,e):(this.x=Math.floor(t+.5),this.y=Math.floor(e+.5)))},n.prototype.move=function(t,e){this.x=t,this.y=e},n.prototype.translate=function(t,e){this.x+=t,this.y+=e},n.prototype.equals=function(t){if("Point"==t.constructor.name){var e=t;return this.x==e.x&&this.y==e.y}return this==t},n.prototype.toString=function(){return(new n).constructor.name+"[x="+this.x+",y="+this.y+"]"},t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){this.x=0,this.y=0,this.width=0,this.height=0,null!=t&&null!=e&&null!=i&&null!=n&&(this.x=t,this.y=e,this.width=i,this.height=n)}n.prototype.getX=function(){return this.x},n.prototype.setX=function(t){this.x=t},n.prototype.getY=function(){return this.y},n.prototype.setY=function(t){this.y=t},n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(t){this.width=t},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(t){this.height=t},n.prototype.getRight=function(){return this.x+this.width},n.prototype.getBottom=function(){return this.y+this.height},n.prototype.intersects=function(t){return!(this.getRight()<t.x||this.getBottom()<t.y||t.getRight()<this.x||t.getBottom()<this.y)},n.prototype.getCenterX=function(){return this.x+this.width/2},n.prototype.getMinX=function(){return this.getX()},n.prototype.getMaxX=function(){return this.getX()+this.width},n.prototype.getCenterY=function(){return this.y+this.height/2},n.prototype.getMinY=function(){return this.getY()},n.prototype.getMaxY=function(){return this.getY()+this.height},n.prototype.getWidthHalf=function(){return this.width/2},n.prototype.getHeightHalf=function(){return this.height/2},t.exports=n},function(t,e,i){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function r(){}r.lastID=0,r.createID=function(t){return r.isPrimitive(t)?t:(null!=t.uniqueID||(t.uniqueID=r.getString(),r.lastID++),t.uniqueID)},r.getString=function(t){return null==t&&(t=r.lastID),"Object#"+t},r.isPrimitive=function(t){var e=void 0===t?"undefined":n(t);return null==t||"object"!=e&&"function"!=e},t.exports=r},function(t,e,i){"use strict";function n(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}var r=i(0),o=i(6),s=i(3),a=i(1),h=i(5),l=i(4),c=i(17),g=i(27);function u(t){g.call(this),this.layoutQuality=r.QUALITY,this.createBendsAsNeeded=r.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=r.DEFAULT_INCREMENTAL,this.animationOnLayout=r.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=r.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=r.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=r.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new o(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,null!=t&&(this.isRemoteUse=t)}u.RANDOM_SEED=1,u.prototype=Object.create(g.prototype),u.prototype.getGraphManager=function(){return this.graphManager},u.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},u.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},u.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},u.prototype.newGraphManager=function(){var t=new o(this);return this.graphManager=t,t},u.prototype.newGraph=function(t){return new h(null,this.graphManager,t)},u.prototype.newNode=function(t){return new s(this.graphManager,t)},u.prototype.newEdge=function(t){return new a(null,null,t)},u.prototype.checkLayoutSuccess=function(){return null==this.graphManager.getRoot()||0==this.graphManager.getRoot().getNodes().length||this.graphManager.includesInvalidEdge()},u.prototype.runLayout=function(){var t;return this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters(),t=!this.checkLayoutSuccess()&&this.layout(),"during"!==r.ANIMATE&&(t&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,t)},u.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},u.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var t=this.graphManager.getAllEdges(),e=0;e<t.length;e++)t[e];var i=this.graphManager.getRoot().getNodes();for(e=0;e<i.length;e++)i[e];this.update(this.graphManager.getRoot())}},u.prototype.update=function(t){if(null==t)this.update2();else if(t instanceof s){var e=t;if(null!=e.getChild())for(var i=e.getChild().getNodes(),n=0;n<i.length;n++)update(i[n]);null!=e.vGraphObject&&e.vGraphObject.update(e)}else if(t instanceof a){var r=t;null!=r.vGraphObject&&r.vGraphObject.update(r)}else if(t instanceof h){var o=t;null!=o.vGraphObject&&o.vGraphObject.update(o)}},u.prototype.initParameters=function(){this.isSubLayout||(this.layoutQuality=r.QUALITY,this.animationDuringLayout=r.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=r.DEFAULT_ANIMATION_PERIOD,this.animationOnLayout=r.DEFAULT_ANIMATION_ON_LAYOUT,this.incremental=r.DEFAULT_INCREMENTAL,this.createBendsAsNeeded=r.DEFAULT_CREATE_BENDS_AS_NEEDED,this.uniformLeafNodeSizes=r.DEFAULT_UNIFORM_LEAF_NODE_SIZES),this.animationDuringLayout&&(this.animationOnLayout=!1)},u.prototype.transform=function(t){if(null==t)this.transform(new l(0,0));else{var e=new c,i=this.graphManager.getRoot().updateLeftTop();if(null!=i){e.setWorldOrgX(t.x),e.setWorldOrgY(t.y),e.setDeviceOrgX(i.x),e.setDeviceOrgY(i.y);for(var n=this.getAllNodes(),r=0;r<n.length;r++)n[r].transform(e)}}},u.prototype.positionNodesRandomly=function(t){if(null==t)this.positionNodesRandomly(this.getGraphManager().getRoot()),this.getGraphManager().getRoot().updateBounds(!0);else for(var e,i,n=t.getNodes(),r=0;r<n.length;r++)null==(i=(e=n[r]).getChild())||0==i.getNodes().length?e.scatter():(this.positionNodesRandomly(i),e.updateBounds())},u.prototype.getFlatForest=function(){for(var t=[],e=!0,i=this.graphManager.getRoot().getNodes(),r=!0,o=0;o<i.length;o++)null!=i[o].getChild()&&(r=!1);if(!r)return t;var s=new Set,a=[],h=new Map,l=[];for(l=l.concat(i);l.length>0&&e;){for(a.push(l[0]);a.length>0&&e;){var c=a[0];a.splice(0,1),s.add(c);var g=c.getEdges();for(o=0;o<g.length;o++){var u=g[o].getOtherEnd(c);if(h.get(c)!=u){if(s.has(u)){e=!1;break}a.push(u),h.set(u,c)}}}if(e){var d=[].concat(n(s));for(t.push(d),o=0;o<d.length;o++){var p=d[o],f=l.indexOf(p);f>-1&&l.splice(f,1)}s=new Set,h=new Map}else t=[]}return t},u.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,n=this.graphManager.calcLowestCommonAncestor(t.source,t.target),r=0;r<t.bendpoints.length;r++){var o=this.newNode(null);o.setRect(new Point(0,0),new Dimension(1,1)),n.add(o);var s=this.newEdge(null);this.graphManager.add(s,i,o),e.add(o),i=o}return s=this.newEdge(null),this.graphManager.add(s,i,t.target),this.edgeToDummyNodes.set(t,e),t.isInterGraph()?this.graphManager.remove(t):n.remove(t),e},u.prototype.createBendpointsFromDummyNodes=function(){var t=[];t=t.concat(this.graphManager.getAllEdges()),t=[].concat(n(this.edgeToDummyNodes.keys())).concat(t);for(var e=0;e<t.length;e++){var i=t[e];if(i.bendpoints.length>0){for(var r=this.edgeToDummyNodes.get(i),o=0;o<r.length;o++){var s=r[o],a=new l(s.getCenterX(),s.getCenterY()),h=i.bendpoints.get(o);h.x=a.x,h.y=a.y,s.getOwner().remove(s)}this.graphManager.add(i,i.source,i.target)}}},u.transform=function(t,e,i,n){if(null!=i&&null!=n){var r=e;return t<=50?r-=(e-e/i)/50*(50-t):r+=(e*n-e)/50*(t-50),r}var o,s;return t<=50?(o=9*e/500,s=e/10):(o=9*e/50,s=-8*e),o*t+s},u.findCenterOfTree=function(t){var e=[];e=e.concat(t);var i=[],n=new Map,r=!1,o=null;1!=e.length&&2!=e.length||(r=!0,o=e[0]);for(var s=0;s<e.length;s++){var a=(c=e[s]).getNeighborsList().size;n.set(c,c.getNeighborsList().size),1==a&&i.push(c)}var h=[];for(h=h.concat(i);!r;){var l=[];for(l=l.concat(h),h=[],s=0;s<e.length;s++){var c=e[s],g=e.indexOf(c);g>=0&&e.splice(g,1),c.getNeighborsList().forEach(function(t){if(i.indexOf(t)<0){var e=n.get(t)-1;1==e&&h.push(t),n.set(t,e)}})}i=i.concat(h),1!=e.length&&2!=e.length||(r=!0,o=e[0])}return o},u.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=u},function(t,e,i){"use strict";function n(){}n.seed=1,n.x=0,n.nextDouble=function(){return n.x=1e4*Math.sin(n.seed++),n.x-Math.floor(n.x)},t.exports=n},function(t,e,i){"use strict";var n=i(4);function r(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}r.prototype.getWorldOrgX=function(){return this.lworldOrgX},r.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},r.prototype.getWorldOrgY=function(){return this.lworldOrgY},r.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},r.prototype.getWorldExtX=function(){return this.lworldExtX},r.prototype.setWorldExtX=function(t){this.lworldExtX=t},r.prototype.getWorldExtY=function(){return this.lworldExtY},r.prototype.setWorldExtY=function(t){this.lworldExtY=t},r.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},r.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},r.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},r.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},r.prototype.getDeviceExtX=function(){return this.ldeviceExtX},r.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},r.prototype.getDeviceExtY=function(){return this.ldeviceExtY},r.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},r.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},r.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},r.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},r.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},r.prototype.inverseTransformPoint=function(t){return new n(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=r},function(t,e,i){"use strict";var n=i(15),r=i(7),o=i(0),s=i(8),a=i(9);function h(){n.call(this),this.useSmartIdealEdgeLengthCalculation=r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=r.DEFAULT_EDGE_LENGTH,this.springConstant=r.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=r.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=r.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=r.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=r.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=r.MAX_ITERATIONS}for(var l in h.prototype=Object.create(n.prototype),n)h[l]=n[l];h.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,n,s,a,h=this.getGraphManager().getAllEdges(),l=0;l<h.length;l++)(t=h[l]).idealLength=this.idealEdgeLength,t.isInterGraph&&(i=t.getSource(),n=t.getTarget(),s=t.getSourceInLca().getEstimatedSize(),a=t.getTargetInLca().getEstimatedSize(),this.useSmartIdealEdgeLengthCalculation&&(t.idealLength+=s+a-2*o.SIMPLE_NODE_SIZE),e=t.getLca().getInclusionTreeDepth(),t.idealLength+=r.DEFAULT_EDGE_LENGTH*r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR*(i.getInclusionTreeDepth()+n.getInclusionTreeDepth()-2*e))},h.prototype.initSpringEmbedder=function(){var t=this.getAllNodes().length;this.incremental?(t>r.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*r.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-r.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>r.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(r.COOLING_ADAPTATION_FACTOR,1-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*(1-r.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i<e.length;i++)t=e[i],this.calcSpringForce(t,t.idealLength)},h.prototype.calcRepulsionForces=function(){var t,e,i,n,o,s=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t<h.length;t++)i=h[t],this.calculateRepulsionForceOfANode(i,o,s,a),o.add(i);else for(t=0;t<h.length;t++)for(i=h[t],e=t+1;e<h.length;e++)n=h[e],i.getOwner()==n.getOwner()&&this.calcRepulsionForce(i,n)},h.prototype.calcGravitationalForces=function(){for(var t,e=this.getAllNodesToApplyGravitation(),i=0;i<e.length;i++)t=e[i],this.calcGravitationalForce(t)},h.prototype.moveNodes=function(){for(var t=this.getAllNodes(),e=0;e<t.length;e++)t[e].move()},h.prototype.calcSpringForce=function(t,e){var i,n,r,o,s=t.getSource(),a=t.getTarget();if(this.uniformLeafNodeSizes&&null==s.getChild()&&null==a.getChild())t.updateLengthSimple();else if(t.updateLength(),t.isOverlapingSourceAndTarget)return;0!=(i=t.getLength())&&(r=(n=this.springConstant*(i-e))*(t.lengthX/i),o=n*(t.lengthY/i),s.springForceX+=r,s.springForceY+=o,a.springForceX-=r,a.springForceY-=o)},h.prototype.calcRepulsionForce=function(t,e){var i,n,o,h,l,c,g,u=t.getRect(),d=e.getRect(),p=new Array(2),f=new Array(4);if(u.intersects(d)){s.calcSeparationAmount(u,d,p,r.DEFAULT_EDGE_LENGTH/2),c=2*p[0],g=2*p[1];var y=t.noOfChildren*e.noOfChildren/(t.noOfChildren+e.noOfChildren);t.repulsionForceX-=y*c,t.repulsionForceY-=y*g,e.repulsionForceX+=y*c,e.repulsionForceY+=y*g}else this.uniformLeafNodeSizes&&null==t.getChild()&&null==e.getChild()?(i=d.getCenterX()-u.getCenterX(),n=d.getCenterY()-u.getCenterY()):(s.getIntersection(u,d,f),i=f[2]-f[0],n=f[3]-f[1]),Math.abs(i)<r.MIN_REPULSION_DIST&&(i=a.sign(i)*r.MIN_REPULSION_DIST),Math.abs(n)<r.MIN_REPULSION_DIST&&(n=a.sign(n)*r.MIN_REPULSION_DIST),o=i*i+n*n,h=Math.sqrt(o),c=(l=this.repulsionConstant*t.noOfChildren*e.noOfChildren/o)*i/h,g=l*n/h,t.repulsionForceX-=c,t.repulsionForceY-=g,e.repulsionForceX+=c,e.repulsionForceY+=g},h.prototype.calcGravitationalForce=function(t){var e,i,n,r,o,s,a,h;i=((e=t.getOwner()).getRight()+e.getLeft())/2,n=(e.getTop()+e.getBottom())/2,r=t.getCenterX()-i,o=t.getCenterY()-n,s=Math.abs(r)+t.getWidth()/2,a=Math.abs(o)+t.getHeight()/2,t.getOwner()==this.graphManager.getRoot()?(s>(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement<this.totalDisplacementThreshold,this.oldTotalDisplacement=this.totalDisplacement,t||e},h.prototype.animate=function(){this.animationDuringLayout&&!this.isSubLayout&&(this.notAnimatedIterations==this.animationPeriod?(this.update(),this.notAnimatedIterations=0):this.notAnimatedIterations++)},h.prototype.calcNoOfChildrenForAllNodes=function(){for(var t,e=this.graphManager.getAllNodes(),i=0;i<e.length;i++)(t=e[i]).noOfChildren=t.getNoOfChildren()},h.prototype.calcGrid=function(t){var e,i;e=parseInt(Math.ceil((t.getRight()-t.getLeft())/this.repulsionRange)),i=parseInt(Math.ceil((t.getBottom()-t.getTop())/this.repulsionRange));for(var n=new Array(e),r=0;r<e;r++)n[r]=new Array(i);for(r=0;r<e;r++)for(var o=0;o<i;o++)n[r][o]=new Array;return n},h.prototype.addNodeToGrid=function(t,e,i){var n,r,o,s;n=parseInt(Math.floor((t.getRect().x-e)/this.repulsionRange)),r=parseInt(Math.floor((t.getRect().width+t.getRect().x-e)/this.repulsionRange)),o=parseInt(Math.floor((t.getRect().y-i)/this.repulsionRange)),s=parseInt(Math.floor((t.getRect().height+t.getRect().y-i)/this.repulsionRange));for(var a=n;a<=r;a++)for(var h=o;h<=s;h++)this.grid[a][h].push(t),t.setGridCoordinates(n,r,o,s)},h.prototype.updateGrid=function(){var t,e,i=this.getAllNodes();for(this.grid=this.calcGrid(this.graphManager.getRoot()),t=0;t<i.length;t++)e=i[t],this.addNodeToGrid(e,this.graphManager.getRoot().getLeft(),this.graphManager.getRoot().getTop())},h.prototype.calculateRepulsionForceOfANode=function(t,e,i,n){if(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&i||n){var o,s=new Set;t.surrounding=new Array;for(var a=this.grid,h=t.startX-1;h<t.finishX+2;h++)for(var l=t.startY-1;l<t.finishY+2;l++)if(!(h<0||l<0||h>=a.length||l>=a[0].length))for(var c=0;c<a[h][l].length;c++)if(o=a[h][l][c],t.getOwner()==o.getOwner()&&t!=o&&!e.has(o)&&!s.has(o)){var g=Math.abs(t.getCenterX()-o.getCenterX())-(t.getWidth()/2+o.getWidth()/2),u=Math.abs(t.getCenterY()-o.getCenterY())-(t.getHeight()/2+o.getHeight()/2);g<=this.repulsionRange&&u<=this.repulsionRange&&s.add(o)}t.surrounding=[].concat(function(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}(s))}for(h=0;h<t.surrounding.length;h++)this.calcRepulsionForce(t,t.surrounding[h])},h.prototype.calcRepulsionRange=function(){return 0},t.exports=h},function(t,e,i){"use strict";var n=i(1),r=i(7);function o(t,e,i){n.call(this,t,e,i),this.idealLength=r.DEFAULT_EDGE_LENGTH}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];t.exports=o},function(t,e,i){"use strict";var n=i(3);function r(t,e,i,r){n.call(this,t,e,i,r),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0,this.startX=0,this.finishX=0,this.startY=0,this.finishY=0,this.surrounding=[]}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];r.prototype.setGridCoordinates=function(t,e,i,n){this.startX=t,this.finishX=e,this.startY=i,this.finishY=n},t.exports=r},function(t,e,i){"use strict";function n(t,e){this.width=0,this.height=0,null!==t&&null!==e&&(this.height=e,this.width=t)}n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(t){this.width=t},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(t){this.height=t},t.exports=n},function(t,e,i){"use strict";var n=i(14);function r(){this.map={},this.keys=[]}r.prototype.put=function(t,e){var i=n.createID(t);this.contains(i)||(this.map[i]=e,this.keys.push(t))},r.prototype.contains=function(t){return n.createID(t),null!=this.map[t]},r.prototype.get=function(t){var e=n.createID(t);return this.map[e]},r.prototype.keySet=function(){return this.keys},t.exports=r},function(t,e,i){"use strict";var n=i(14);function r(){this.set={}}r.prototype.add=function(t){var e=n.createID(t);this.contains(e)||(this.set[e]=t)},r.prototype.remove=function(t){delete this.set[n.createID(t)]},r.prototype.clear=function(){this.set={}},r.prototype.contains=function(t){return this.set[n.createID(t)]==t},r.prototype.isEmpty=function(){return 0===this.size()},r.prototype.size=function(){return Object.keys(this.set).length},r.prototype.addAllTo=function(t){for(var e=Object.keys(this.set),i=e.length,n=0;n<i;n++)t.push(this.set[e[n]])},r.prototype.size=function(){return Object.keys(this.set).length},r.prototype.addAll=function(t){for(var e=t.length,i=0;i<e;i++){var n=t[i];this.add(n)}},t.exports=r},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=i(11),o=function(){function t(e,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),null===i&&void 0===i||(this.compareFunction=this._defaultCompareFunction);var n=void 0;n=e instanceof r?e.size():e.length,this._quicksort(e,0,n-1)}return n(t,[{key:"_quicksort",value:function(t,e,i){if(e<i){var n=this._partition(t,e,i);this._quicksort(t,e,n),this._quicksort(t,n+1,i)}}},{key:"_partition",value:function(t,e,i){for(var n=this._get(t,e),r=e,o=i;;){for(;this.compareFunction(n,this._get(t,o));)o--;for(;this.compareFunction(this._get(t,r),n);)r++;if(!(r<o))return o;this._swap(t,r,o),r++,o--}}},{key:"_get",value:function(t,e){return t instanceof r?t.get_object_at(e):t[e]}},{key:"_set",value:function(t,e,i){t instanceof r?t.set_object_at(e,i):t[e]=i}},{key:"_swap",value:function(t,e,i){var n=this._get(t,e);this._set(t,e,this._get(t,i)),this._set(t,i,n)}},{key:"_defaultCompareFunction",value:function(t,e){return e>t}}]),t}();t.exports=o},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=function(){function t(e,i){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=n,this.mismatch_penalty=r,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s<this.iMax;s++){this.grid[s]=new Array(this.jMax);for(var a=0;a<this.jMax;a++)this.grid[s][a]=0}this.tracebackGrid=new Array(this.iMax);for(var h=0;h<this.iMax;h++){this.tracebackGrid[h]=new Array(this.jMax);for(var l=0;l<this.jMax;l++)this.tracebackGrid[h][l]=[null,null,null]}this.alignments=[],this.score=-1,this.computeGrids()}return n(t,[{key:"getScore",value:function(){return this.score}},{key:"getAlignments",value:function(){return this.alignments}},{key:"computeGrids",value:function(){for(var t=1;t<this.jMax;t++)this.grid[0][t]=this.grid[0][t-1]+this.gap_penalty,this.tracebackGrid[0][t]=[!1,!1,!0];for(var e=1;e<this.iMax;e++)this.grid[e][0]=this.grid[e-1][0]+this.gap_penalty,this.tracebackGrid[e][0]=[!1,!0,!1];for(var i=1;i<this.iMax;i++)for(var n=1;n<this.jMax;n++){var r=[this.sequence1[i-1]===this.sequence2[n-1]?this.grid[i-1][n-1]+this.match_score:this.grid[i-1][n-1]+this.mismatch_penalty,this.grid[i-1][n]+this.gap_penalty,this.grid[i][n-1]+this.gap_penalty],o=this.arrayAllMaxIndexes(r);this.grid[i][n]=r[o[0]],this.tracebackGrid[i][n]=[o.includes(0),o.includes(1),o.includes(2)]}this.score=this.grid[this.iMax-1][this.jMax-1]}},{key:"alignmentTraceback",value:function(){var t=[];for(t.push({pos:[this.sequence1.length,this.sequence2.length],seq1:"",seq2:""});t[0];){var e=t[0],i=this.tracebackGrid[e.pos[0]][e.pos[1]];i[0]&&t.push({pos:[e.pos[0]-1,e.pos[1]-1],seq1:this.sequence1[e.pos[0]-1]+e.seq1,seq2:this.sequence2[e.pos[1]-1]+e.seq2}),i[1]&&t.push({pos:[e.pos[0]-1,e.pos[1]],seq1:this.sequence1[e.pos[0]-1]+e.seq1,seq2:"-"+e.seq2}),i[2]&&t.push({pos:[e.pos[0],e.pos[1]-1],seq1:"-"+e.seq1,seq2:this.sequence2[e.pos[1]-1]+e.seq2}),0===e.pos[0]&&0===e.pos[1]&&this.alignments.push({sequence1:e.seq1,sequence2:e.seq2}),t.shift()}return this.alignments}},{key:"getAllIndexes",value:function(t,e){for(var i=[],n=-1;-1!==(n=t.indexOf(e,n+1));)i.push(n);return i}},{key:"arrayAllMaxIndexes",value:function(t){return this.getAllIndexes(t,Math.max.apply(null,t))}}]),t}();t.exports=r},function(t,e,i){"use strict";var n=function(){};n.FDLayout=i(18),n.FDLayoutConstants=i(7),n.FDLayoutEdge=i(19),n.FDLayoutNode=i(20),n.DimensionD=i(21),n.HashMap=i(22),n.HashSet=i(23),n.IGeometry=i(8),n.IMath=i(9),n.Integer=i(10),n.Point=i(12),n.PointD=i(4),n.RandomSeed=i(16),n.RectangleD=i(13),n.Transform=i(17),n.UniqueIDGeneretor=i(14),n.Quicksort=i(24),n.LinkedList=i(11),n.LGraphObject=i(2),n.LGraph=i(5),n.LEdge=i(1),n.LGraphManager=i(6),n.LNode=i(3),n.Layout=i(15),n.LayoutConstants=i(0),n.NeedlemanWunsch=i(25),t.exports=n},function(t,e,i){"use strict";function n(){this.listeners=[]}var r=n.prototype;r.addListener=function(t,e){this.listeners.push({event:t,callback:e})},r.removeListener=function(t,e){for(var i=this.listeners.length;i>=0;i--){var n=this.listeners[i];n.event===t&&n.callback===e&&this.listeners.splice(i,1)}},r.emit=function(t,e){for(var i=0;i<this.listeners.length;i++){var n=this.listeners[i];t===n.event&&n.callback(e)}},t.exports=n}])},t.exports=e()}}]); \ No newline at end of file diff --git a/assets/js/5176.eef51250.js b/assets/js/5176.eef51250.js new file mode 100644 index 0000000000..295b6d5068 --- /dev/null +++ b/assets/js/5176.eef51250.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5176],{15176:(e,c,k)=>{k.d(c,{createPacketServices:()=>s.$});var s=k(60511);k(34939)}}]); \ No newline at end of file diff --git a/assets/js/518ccc20.ee4eedd4.js b/assets/js/518ccc20.ee4eedd4.js new file mode 100644 index 0000000000..8b5e864bc2 --- /dev/null +++ b/assets/js/518ccc20.ee4eedd4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[610],{58118:(e,t,n)=>{n.d(t,{A:()=>o});n(36672);var r=n(13526);const a={tabItem:"tabItem_qogc"};var s=n(23420);function o({children:e,hidden:t,className:n}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,n),hidden:t,children:e})}},65404:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>l});var r=n(36672);const a={},s=r.createContext(a);function o(e){const t=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:t},e.children)}},65780:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(36672),a=n(13526),s=n(10452),o=n(85291),l=n(10914),u=n(41201),i=n(40622),c=n(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:t,children:n}=e;return(0,r.useMemo)(()=>{const e=t??function(e){return d(e).map(({props:{value:e,label:t,attributes:n,default:r}})=>({value:e,label:t,attributes:n,default:r}))}(n);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[t,n])}function f({value:e,tabValues:t}){return t.some(t=>t.value===e)}function h({queryString:e=!1,groupId:t}){const n=(0,o.W6)(),a=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,u.aZ)(a),(0,r.useCallback)(e=>{if(!a)return;const t=new URLSearchParams(n.location.search);t.set(a,e),n.replace({...n.location,search:t.toString()})},[a,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,s=p(e),[o,u]=(0,r.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!f({value:e,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:s})),[i,d]=h({queryString:n,groupId:a}),[m,b]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,a]=(0,c.Dv)(t);return[n,(0,r.useCallback)(e=>{t&&a.set(e)},[t,a])]}({groupId:a}),g=(()=>{const e=i??m;return f({value:e,tabValues:s})?e:null})();(0,l.A)(()=>{g&&u(g)},[g]);return{selectedValue:o,selectValue:(0,r.useCallback)(e=>{if(!f({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);u(e),d(e),b(e)},[d,b,s]),tabValues:s}}var b=n(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var y=n(23420);function v({className:e,block:t,selectedValue:n,selectValue:r,tabValues:o}){const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,s.a_)(),i=e=>{const t=e.currentTarget,a=l.indexOf(t),s=o[a].value;s!==n&&(u(t),r(s))},c=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},e),children:o.map(({value:e,label:t,attributes:r})=>(0,y.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{l.push(e)},onKeyDown:c,onClick:i,...r,className:(0,a.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function k({lazy:e,children:t,selectedValue:n}){const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===n);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:s.map((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function j(e){const t=m(e);return(0,y.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(k,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(t))}},82270:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>f,frontMatter:()=>u,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.12.0/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.12.0/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/configuration.mdx","tags":[],"version":"0.12.0","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.12.0/"},"next":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.0/suppressing-findings"}}');var a=n(23420),s=n(65404),o=n(65780),l=n(58118);const u={id:"configuration",sidebar_label:"Configuration"},i=void 0,c={},d=[];function p(e){const t={code:"code",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(o.A,{children:[(0,a.jsx)(l.A,{value:"Kotlin",default:!0,children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'plugins {\n id("com.rickbusarow.module-check") version "0.12.0"\n}\n\nmoduleCheck {\n\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = setOf(":app")\n\n additionalKaptMatchers = listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n\n reports {\n checkstyle {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n depths {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n}\n'})})}),(0,a.jsx)(l.A,{value:"Groovy",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'plugins {\n id \'com.rickbusarow.module-check\' version \'0.12.0\'\n}\n\nmoduleCheck {\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = [\':test:core-jvm\', \':test:core-android\']\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = [\':app\']\n\n additionalKaptMatchers = [\n new modulecheck.api.KaptMatcher(\n \'MyProcessor\',\n \'my-project.codegen:processor\',\n [\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n ]\n )\n ]\n\n reports {\n checkstyle {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n depths {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n it.enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n it.outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n\n}\n'})})})]})}function f(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/51d6008a.50a9f7f0.js b/assets/js/51d6008a.50a9f7f0.js new file mode 100644 index 0000000000..f277746513 --- /dev/null +++ b/assets/js/51d6008a.50a9f7f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2090],{64426:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>u,contentTitle:()=>r,default:()=>c,frontMatter:()=>d,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","source":"@site/docs/rules/android/unused_kotlin_android_extensions.md","sourceDirName":"rules/android","slug":"/rules/unused_kotlin_android_extensions","permalink":"/ModuleCheck/docs/next/rules/unused_kotlin_android_extensions","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/android/unused_kotlin_android_extensions.md","tags":[],"version":"current","frontMatter":{"id":"unused_kotlin_android_extensions","slug":"/rules/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","sidebar_label":"Unused Kotlin Android Extensions"},"sidebar":"Docs","previous":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/next/rules/disable_view_binding"}}');var o=t(23420),i=t(65404);const d={id:"unused_kotlin_android_extensions",slug:"/rules/unused_kotlin_android_extensions",title:"Unused Kotlin Android Extensions",sidebar_label:"Unused Kotlin Android Extensions"},r=void 0,u={},l=[];function a(n){const e={p:"p",...(0,i.R)(),...n.components};return(0,o.jsx)(e.p,{children:"Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any\nsynthetic imports or deprecated @Parcelize annotation"})}function c(n={}){const{wrapper:e}={...(0,i.R)(),...n.components};return e?(0,o.jsx)(e,{...n,children:(0,o.jsx)(a,{...n})}):a(n)}},65404:(n,e,t)=>{t.d(e,{R:()=>d,x:()=>r});var s=t(36672);const o={},i=s.createContext(o);function d(n){const e=s.useContext(i);return s.useMemo(function(){return"function"==typeof n?n(e):{...e,...n}},[e,n])}function r(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(o):n.components||o:d(n.components),s.createElement(i.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/521dad97.82033bc9.js b/assets/js/521dad97.82033bc9.js new file mode 100644 index 0000000000..a07ccec5e4 --- /dev/null +++ b/assets/js/521dad97.82033bc9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9290],{65404:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(36672);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}},96090:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.12.0/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_dependencies","permalink":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/sorting/sort_dependencies.md","tags":[],"version":"0.12.0","frontMatter":{"id":"sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.0/rules/kapt/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_plugins"}}');var o=n(23420),r=n(65404);const i={id:"sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l()}}}]); \ No newline at end of file diff --git a/assets/js/5314.cbe680d3.js b/assets/js/5314.cbe680d3.js new file mode 100644 index 0000000000..36a0091efc --- /dev/null +++ b/assets/js/5314.cbe680d3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5314],{25314:(t,e,s)=>{s.d(e,{Zk:()=>c,q7:()=>O,tM:()=>nt,u4:()=>it});var i=s(97576),n=s(57442),r=s(47794),o=s(27293),a=function(){var t=(0,o.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,2],s=[1,3],i=[1,4],n=[2,4],r=[1,9],a=[1,11],c=[1,16],l=[1,17],h=[1,18],d=[1,19],u=[1,33],p=[1,20],y=[1,21],g=[1,22],m=[1,23],f=[1,24],S=[1,26],k=[1,27],b=[1,28],_=[1,29],T=[1,30],E=[1,31],D=[1,32],x=[1,35],C=[1,36],$=[1,37],v=[1,38],I=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],L=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],w=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],R={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:(0,o.K2)(function(t,e,s,i,n,r,o){var a=r.length-1;switch(n){case 3:return i.setRootDoc(r[a]),r[a];case 4:this.$=[];break;case 5:"nl"!=r[a]&&(r[a-1].push(r[a]),this.$=r[a-1]);break;case 6:case 7:case 12:this.$=r[a];break;case 8:this.$="nl";break;case 13:const t=r[a-1];t.description=i.trimColon(r[a]),this.$=t;break;case 14:this.$={stmt:"relation",state1:r[a-2],state2:r[a]};break;case 15:const e=i.trimColon(r[a]);this.$={stmt:"relation",state1:r[a-3],state2:r[a-1],description:e};break;case 19:this.$={stmt:"state",id:r[a-3],type:"default",description:"",doc:r[a-1]};break;case 20:var c=r[a],l=r[a-2].trim();if(r[a].match(":")){var h=r[a].split(":");c=h[0],l=[l,h[1]]}this.$={stmt:"state",id:c,type:"default",description:l};break;case 21:this.$={stmt:"state",id:r[a-3],type:"default",description:r[a-5],doc:r[a-1]};break;case 22:this.$={stmt:"state",id:r[a],type:"fork"};break;case 23:this.$={stmt:"state",id:r[a],type:"join"};break;case 24:this.$={stmt:"state",id:r[a],type:"choice"};break;case 25:this.$={stmt:"state",id:i.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:r[a-1].trim(),note:{position:r[a-2].trim(),text:r[a].trim()}};break;case 29:this.$=r[a].trim(),i.setAccTitle(this.$);break;case 30:case 31:this.$=r[a].trim(),i.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:r[a-3],url:r[a-2],tooltip:r[a-1]};break;case 33:this.$={stmt:"click",id:r[a-3],url:r[a-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:r[a-1].trim(),classes:r[a].trim()};break;case 36:this.$={stmt:"style",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 37:this.$={stmt:"applyClass",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 38:i.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:i.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:i.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:i.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:r[a].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:r[a-2].trim(),classes:[r[a].trim()],type:"default",description:""}}},"anonymous"),table:[{3:1,4:e,5:s,6:i},{1:[3]},{3:5,4:e,5:s,6:i},{3:6,4:e,5:s,6:i},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:r,5:a,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:k,37:b,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:c,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:k,37:b,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,7]),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(A,[2,11]),t(A,[2,12],{14:[1,40],15:[1,41]}),t(A,[2,16]),{18:[1,42]},t(A,[2,18],{20:[1,43]}),{23:[1,44]},t(A,[2,22]),t(A,[2,23]),t(A,[2,24]),t(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(A,[2,28]),{34:[1,49]},{36:[1,50]},t(A,[2,31]),{13:51,24:u,57:I},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(L,[2,44],{58:[1,56]}),t(L,[2,45],{58:[1,57]}),t(A,[2,38]),t(A,[2,39]),t(A,[2,40]),t(A,[2,41]),t(A,[2,6]),t(A,[2,13]),{13:58,24:u,57:I},t(A,[2,17]),t(w,n,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(A,[2,29]),t(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(A,[2,14],{14:[1,71]}),{4:r,5:a,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:h,21:[1,72],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:k,37:b,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(A,[2,34]),t(A,[2,35]),t(A,[2,36]),t(A,[2,37]),t(L,[2,46]),t(L,[2,47]),t(A,[2,15]),t(A,[2,19]),t(w,n,{7:78}),t(A,[2,26]),t(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:r,5:a,8:8,9:10,10:12,11:13,12:14,13:15,16:c,17:l,19:h,21:[1,81],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:k,37:b,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,32]),t(A,[2,33]),t(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:(0,o.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,o.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,c="",l=0,h=0,d=0,u=r.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;r.push(m);var f=p.options&&p.options.ranges;function S(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,o.K2)(S,"lex");for(var k,b,_,T,E,D,x,C,$,v={};;){if(_=s[s.length-1],this.defaultActions[_]?T=this.defaultActions[_]:(null==k&&(k=S()),T=a[_]&&a[_][k]),void 0===T||!T.length||!T[0]){var I="";for(D in $=[],a[_])this.terminals_[D]&&D>2&&$.push("'"+this.terminals_[D]+"'");I=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+$.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==k?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(I,{text:p.match,token:this.terminals_[k]||k,line:p.yylineno,loc:m,expected:$})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+k);switch(T[0]){case 1:s.push(k),n.push(p.yytext),r.push(p.yylloc),s.push(T[1]),k=null,b?(k=b,b=null):(h=p.yyleng,c=p.yytext,l=p.yylineno,m=p.yylloc,d>0&&d--);break;case 2:if(x=this.productions_[T[1]][1],v.$=n[n.length-x],v._$={first_line:r[r.length-(x||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(x||1)].first_column,last_column:r[r.length-1].last_column},f&&(v._$.range=[r[r.length-(x||1)].range[0],r[r.length-1].range[1]]),void 0!==(E=this.performAction.apply(v,[c,h,l,y.yy,T[1],n,r].concat(u))))return E;x&&(s=s.slice(0,-1*x*2),n=n.slice(0,-1*x),r=r.slice(0,-1*x)),s.push(this.productions_[T[1]][0]),n.push(v.$),r.push(v._$),C=a[s[s.length-2]][s[s.length-1]],s.push(C);break;case 3:return!0}}return!0},"parse")},N=function(){return{EOF:1,parseError:(0,o.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,o.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,o.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,o.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,o.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,o.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)(function(t,e,s,i){switch(s){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:case 45:return 51;case 5:case 46:return 52;case 6:case 47:return 53;case 7:case 48:return 54;case 8:case 9:case 11:case 12:case 13:case 14:case 57:case 59:case 65:break;case 10:case 80:return 5;case 15:case 35:return this.pushState("SCALE"),17;case 16:case 36:return 18;case 17:case 23:case 37:case 52:case 55:this.popState();break;case 18:return this.begin("acc_title"),33;case 19:return this.popState(),"acc_title_value";case 20:return this.begin("acc_descr"),35;case 21:return this.popState(),"acc_descr_value";case 22:this.begin("acc_descr_multiline");break;case 24:return"acc_descr_multiline_value";case 25:return this.pushState("CLASSDEF"),41;case 26:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 27:return this.popState(),this.pushState("CLASSDEFID"),42;case 28:return this.popState(),43;case 29:return this.pushState("CLASS"),48;case 30:return this.popState(),this.pushState("CLASS_STYLE"),49;case 31:return this.popState(),50;case 32:return this.pushState("STYLE"),45;case 33:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;case 34:return this.popState(),47;case 38:this.pushState("STATE");break;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 40:case 43:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 41:case 44:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 49:this.pushState("STATE_STRING");break;case 50:return this.pushState("STATE_ID"),"AS";case 51:case 67:return this.popState(),"ID";case 53:return"STATE_DESCR";case 54:return 19;case 56:return this.popState(),this.pushState("struct"),20;case 58:return this.popState(),21;case 60:return this.begin("NOTE"),29;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:return this.popState(),this.pushState("NOTE_ID"),60;case 63:this.popState(),this.pushState("FLOATING_NOTE");break;case 64:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 66:return"NOTE_TEXT";case 68:return this.popState(),this.pushState("NOTE_TEXT"),24;case 69:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 70:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 71:case 72:return 6;case 73:return 16;case 74:return 57;case 75:return 24;case 76:return e.yytext=e.yytext.trim(),14;case 77:return 15;case 78:return 28;case 79:return 58;case 81:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*<<choice>>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[12,13],inclusive:!1},struct:{rules:[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],inclusive:!1},FLOATING_NOTE_ID:{rules:[67],inclusive:!1},FLOATING_NOTE:{rules:[64,65,66],inclusive:!1},NOTE_TEXT:{rules:[69,70],inclusive:!1},NOTE_ID:{rules:[68],inclusive:!1},NOTE:{rules:[61,62,63],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[34],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[33],inclusive:!1},CLASS_STYLE:{rules:[31],inclusive:!1},CLASS:{rules:[30],inclusive:!1},CLASSDEFID:{rules:[28],inclusive:!1},CLASSDEF:{rules:[26,27],inclusive:!1},acc_descr_multiline:{rules:[23,24],inclusive:!1},acc_descr:{rules:[21],inclusive:!1},acc_title:{rules:[19],inclusive:!1},SCALE:{rules:[16,17,36,37],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[51],inclusive:!1},STATE_STRING:{rules:[52,53],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[12,13,39,40,41,42,43,44,49,50,54,55,56],inclusive:!1},ID:{rules:[12,13],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],inclusive:!0}}}}();function O(){this.yy={}}return R.lexer=N,(0,o.K2)(O,"Parser"),O.prototype=R,R.Parser=O,new O}();a.parser=a;var c=a,l="state",h="root",d="relation",u="default",p="divider",y="fill:none",g="fill: #333",m="text",f="normal",S="rect",k="rectWithTitle",b="divider",_="roundedWithTitle",T="statediagram",E=`${T}-state`,D="transition",x=`${D} note-edge`,C=`${T}-note`,$=`${T}-cluster`,v=`${T}-cluster-alt`,I="parent",A="note",L="----",w=`${L}${A}`,R=`${L}${I}`,N=(0,o.K2)((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir"),O={getClasses:(0,o.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,o.K2)(async function(t,e,s,a){o.Rm.info("REF0:"),o.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:c,state:l,layout:h}=(0,o.D7)();a.db.extract(a.db.getRootDocV2());const d=a.db.getData(),u=(0,i.A)(e,c);d.type=a.type,d.layoutAlgorithm=h,d.nodeSpacing=l?.nodeSpacing||50,d.rankSpacing=l?.rankSpacing||50,d.markers=["barb"],d.diagramId=e,await(0,n.XX)(d,u);try{("function"==typeof a.db.getLinks?a.db.getLinks():new Map).forEach((t,e)=>{const s="string"==typeof e?e:"string"==typeof e?.id?e.id:"";if(!s)return void o.Rm.warn("\u26a0\ufe0f Invalid or missing stateId from key:",JSON.stringify(e));const i=u.node()?.querySelectorAll("g");let n;if(i?.forEach(t=>{const e=t.textContent?.trim();e===s&&(n=t)}),!n)return void o.Rm.warn("\u26a0\ufe0f Could not find node matching text:",s);const r=n.parentNode;if(!r)return void o.Rm.warn("\u26a0\ufe0f Node has no parent, cannot wrap:",s);const a=document.createElementNS("http://www.w3.org/2000/svg","a"),c=t.url.replace(/^"+|"+$/g,"");if(a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",c),a.setAttribute("target","_blank"),t.tooltip){const e=t.tooltip.replace(/^"+|"+$/g,"");a.setAttribute("title",e)}r.replaceChild(a,n),a.appendChild(n),o.Rm.info("\ud83d\udd17 Wrapped node in <a> tag for:",s,t.url)})}catch(p){o.Rm.error("\u274c Error injecting clickable links:",p)}r._K.insertTitle(u,"statediagramTitleText",l?.titleTopMargin??25,a.db.getDiagramTitle()),(0,i.P)(u,8,T,l?.useMaxWidth??!0)},"draw"),getDir:N},K=new Map,B=0;function F(t="",e=0,s="",i=L){return`state-${t}${null!==s&&s.length>0?`${i}${s}`:""}-${e}`}(0,o.K2)(F,"stateDomId");var Y=(0,o.K2)((t,e,s,i,n,r,a,c)=>{o.Rm.trace("items",e),e.forEach(e=>{switch(e.stmt){case l:case u:M(t,e,s,i,n,r,a,c);break;case d:{M(t,e.state1,s,i,n,r,a,c),M(t,e.state2,s,i,n,r,a,c);const l={id:"edge"+B,start:e.state1.id,end:e.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:y,labelStyle:"",label:o.Y2.sanitizeText(e.description??"",(0,o.D7)()),arrowheadStyle:g,labelpos:"c",labelType:m,thickness:f,classes:D,look:a};n.push(l),B++}}})},"setupDoc"),P=(0,o.K2)((t,e="TB")=>{let s=e;if(t.doc)for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir");function G(t,e,s){if(!e.id||"</join></fork>"===e.id||"</choice>"===e.id)return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(t=>{const i=s.get(t);i&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...i.styles])}));const i=t.find(t=>t.id===e.id);i?Object.assign(i,e):t.push(e)}function j(t){return t?.classes?.join(" ")??""}function z(t){return t?.styles??[]}(0,o.K2)(G,"insertOrUpdateNode"),(0,o.K2)(j,"getClassesFromDbInfo"),(0,o.K2)(z,"getStylesFromDbInfo");var M=(0,o.K2)((t,e,s,i,n,r,a,c)=>{const l=e.id,h=s.get(l),d=j(h),T=z(h),D=(0,o.D7)();if(o.Rm.info("dataFetcher parsedItem",e,h,T),"root"!==l){let s=S;!0===e.start?s="stateStart":!1===e.start&&(s="stateEnd"),e.type!==u&&(s=e.type),K.get(l)||K.set(l,{id:l,shape:s,description:o.Y2.sanitizeText(l,D),cssClasses:`${d} ${E}`,cssStyles:T});const h=K.get(l);e.description&&(Array.isArray(h.description)?(h.shape=k,h.description.push(e.description)):h.description?.length&&h.description.length>0?(h.shape=k,h.description===l?h.description=[e.description]:h.description=[h.description,e.description]):(h.shape=S,h.description=e.description),h.description=o.Y2.sanitizeTextOrArray(h.description,D)),1===h.description?.length&&h.shape===k&&("group"===h.type?h.shape=_:h.shape=S),!h.type&&e.doc&&(o.Rm.info("Setting cluster for XCX",l,P(e)),h.type="group",h.isGroup=!0,h.dir=P(e),h.shape=e.type===p?b:_,h.cssClasses=`${h.cssClasses} ${$} ${r?v:""}`);const L={labelStyle:"",shape:h.shape,label:h.description,cssClasses:h.cssClasses,cssCompiledStyles:[],cssStyles:h.cssStyles,id:l,dir:h.dir,domId:F(l,B),type:h.type,isGroup:"group"===h.type,padding:8,rx:10,ry:10,look:a};if(L.shape===b&&(L.label=""),t&&"root"!==t.id&&(o.Rm.trace("Setting node ",l," to be child of its parent ",t.id),L.parentId=t.id),L.centerLabel=!0,e.note){const t={labelStyle:"",shape:"note",label:e.note.text,cssClasses:C,cssStyles:[],cssCompiledStyles:[],id:l+w+"-"+B,domId:F(l,B,A),type:h.type,isGroup:"group"===h.type,padding:D.flowchart?.padding,look:a,position:e.note.position},s=l+R,r={labelStyle:"",shape:"noteGroup",label:e.note.text,cssClasses:h.cssClasses,cssStyles:[],id:l+R,domId:F(l,B,I),type:"group",isGroup:!0,padding:16,look:a,position:e.note.position};B++,r.id=s,t.parentId=s,G(i,r,c),G(i,t,c),G(i,L,c);let o=l,d=t.id;"left of"===e.note.position&&(o=t.id,d=l),n.push({id:o+"-"+d,start:o,end:d,arrowhead:"none",arrowTypeEnd:"",style:y,labelStyle:"",classes:x,arrowheadStyle:g,labelpos:"c",labelType:m,thickness:f,look:a})}else G(i,L,c)}e.doc&&(o.Rm.trace("Adding nodes children "),Y(e,e.doc,s,i,n,!r,a,c))},"dataFetcher"),U=(0,o.K2)(()=>{K.clear(),B=0},"reset"),V="[*]",W="start",X="[*]",H="end",J="color",q="fill",Z="bgFill",Q=",",tt=(0,o.K2)(()=>new Map,"newClassesList"),et=(0,o.K2)(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),st=(0,o.K2)(t=>JSON.parse(JSON.stringify(t)),"clone"),it=class{constructor(t){this.version=t,this.nodes=[],this.edges=[],this.rootDoc=[],this.classes=tt(),this.documents={root:et()},this.currentDocument=this.documents.root,this.startEndCount=0,this.dividerCnt=0,this.links=new Map,this.getAccTitle=o.iN,this.setAccTitle=o.SV,this.getAccDescription=o.m7,this.setAccDescription=o.EI,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{(0,o.K2)(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(const i of Array.isArray(t)?t:t.doc)switch(i.stmt){case l:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case d:this.addRelation(i.state1,i.state2,i.description);break;case"classDef":this.addStyleClass(i.id.trim(),i.classes);break;case"style":this.handleStyleDef(i);break;case"applyClass":this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip)}const e=this.getStates(),s=(0,o.D7)();U(),M(void 0,this.getRootDocV2(),e,this.nodes,this.edges,!0,s.look,this.classes);for(const i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(t){const e=t.id.trim().split(","),s=t.styleClass.split(",");for(const i of e){let t=this.getState(i);if(!t){const e=i.trim();this.addState(e),t=this.getState(e)}t&&(t.styles=s.map(t=>t.replace(/;/g,"")?.trim()))}}setRootDoc(t){o.Rm.info("Setting root doc",t),this.rootDoc=t,1===this.version?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,e,s){if(e.stmt===d)return this.docTranslator(t,e.state1,!0),void this.docTranslator(t,e.state2,!1);if(e.stmt===l&&(e.id===V?(e.id=t.id+(s?"_start":"_end"),e.start=s):e.id=e.id.trim()),e.stmt!==h&&e.stmt!==l||!e.doc)return;const i=[];let n=[];for(const r of e.doc)if(r.type===p){const t=st(r);t.doc=st(n),i.push(t),n=[]}else n.push(r);if(i.length>0&&n.length>0){const t={stmt:l,id:(0,r.$C)(),type:"divider",doc:st(n)};i.push(st(t)),e.doc=i}e.doc.forEach(t=>this.docTranslator(e,t,!0))}getRootDocV2(){return this.docTranslator({id:h,stmt:h},{id:h,stmt:h,doc:this.rootDoc},!0),{id:h,doc:this.rootDoc}}addState(t,e=u,s=void 0,i=void 0,n=void 0,r=void 0,a=void 0,c=void 0){const h=t?.trim();if(this.currentDocument.states.has(h)){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.doc||(t.doc=s),t.type||(t.type=e)}else o.Rm.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:l,id:h,descriptions:[],type:e,doc:s,note:n,classes:[],styles:[],textStyles:[]});if(i){o.Rm.info("Setting state description",h,i);(Array.isArray(i)?i:[i]).forEach(t=>this.addDescription(h,t.trim()))}if(n){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.note=n,t.note.text=o.Y2.sanitizeText(t.note.text,(0,o.D7)())}if(r){o.Rm.info("Setting state classes",h,r);(Array.isArray(r)?r:[r]).forEach(t=>this.setCssClass(h,t.trim()))}if(a){o.Rm.info("Setting state styles",h,a);(Array.isArray(a)?a:[a]).forEach(t=>this.setStyle(h,t.trim()))}if(c){o.Rm.info("Setting state styles",h,a);(Array.isArray(c)?c:[c]).forEach(t=>this.setTextStyle(h,t.trim()))}}clear(t){this.nodes=[],this.edges=[],this.documents={root:et()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=tt(),t||(this.links=new Map,(0,o.IU)())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){o.Rm.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,e,s){this.links.set(t,{url:e,tooltip:s}),o.Rm.warn("Adding link",t,e,s)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===V?(this.startEndCount++,`${W}${this.startEndCount}`):t}startTypeIfNeeded(t="",e=u){return t===V?W:e}endIdIfNeeded(t=""){return t===X?(this.startEndCount++,`${H}${this.startEndCount}`):t}endTypeIfNeeded(t="",e=u){return t===X?H:e}addRelationObjs(t,e,s=""){const i=this.startIdIfNeeded(t.id.trim()),n=this.startTypeIfNeeded(t.id.trim(),t.type),r=this.startIdIfNeeded(e.id.trim()),a=this.startTypeIfNeeded(e.id.trim(),e.type);this.addState(i,n,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(r,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:o.Y2.sanitizeText(s,(0,o.D7)())})}addRelation(t,e,s){if("object"==typeof t&&"object"==typeof e)this.addRelationObjs(t,e,s);else if("string"==typeof t&&"string"==typeof e){const i=this.startIdIfNeeded(t.trim()),n=this.startTypeIfNeeded(t),r=this.endIdIfNeeded(e.trim()),a=this.endTypeIfNeeded(e);this.addState(i,n),this.addState(r,a),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:s?o.Y2.sanitizeText(s,(0,o.D7)()):void 0})}}addDescription(t,e){const s=this.currentDocument.states.get(t),i=e.startsWith(":")?e.replace(":","").trim():e;s?.descriptions?.push(o.Y2.sanitizeText(i,(0,o.D7)()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,e=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});const s=this.classes.get(t);e&&s&&e.split(Q).forEach(t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(J).exec(t)){const t=e.replace(q,Z).replace(J,q);s.textStyles.push(t)}s.styles.push(e)})}getClasses(){return this.classes}setCssClass(t,e){t.split(",").forEach(t=>{let s=this.getState(t);if(!s){const e=t.trim();this.addState(e),s=this.getState(e)}s?.classes?.push(e)})}setStyle(t,e){this.getState(t)?.styles?.push(e)}setTextStyle(t,e){this.getState(t)?.textStyles?.push(e)}getDirectionStatement(){return this.rootDoc.find(t=>"dir"===t.stmt)}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(t){const e=this.getDirectionStatement();e?e.value=t:this.rootDoc.unshift({stmt:"dir",value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){const t=(0,o.D7)();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:N(this.getRootDocV2())}}getConfig(){return(0,o.D7)().state}},nt=(0,o.K2)(t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n // line-height: 1;\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`,"getStyles")},97576:(t,e,s)=>{s.d(e,{A:()=>r,P:()=>o});var i=s(27293),n=s(61274),r=(0,i.K2)((t,e)=>{let s;"sandbox"===e&&(s=(0,n.Ltv)("#i"+t));return("sandbox"===e?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${t}"]`)},"getDiagramElement"),o=(0,i.K2)((t,e,s,n)=>{t.attr("class",s);const{width:r,height:o,x:l,y:h}=a(t,e);(0,i.a$)(t,o,r,n);const d=c(l,h,r,o,e);t.attr("viewBox",d),i.Rm.debug(`viewBox configured: ${d} with padding: ${e}`)},"setupViewPortForSVG"),a=(0,i.K2)((t,e)=>{const s=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*e,height:s.height+2*e,x:s.x,y:s.y}},"calculateDimensionsWithPadding"),c=(0,i.K2)((t,e,s,i,n)=>`${t-n} ${e-n} ${s} ${i}`,"createViewBox")}}]); \ No newline at end of file diff --git a/assets/js/5381.8b425fa2.js b/assets/js/5381.8b425fa2.js new file mode 100644 index 0000000000..840c960508 --- /dev/null +++ b/assets/js/5381.8b425fa2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5381],{406:(e,t)=>{let n;function r(){if(void 0===n)throw new Error("No runtime abstraction layer installed");return n}Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.install=function(e){if(void 0===e)throw new Error("No runtime abstraction layer provided");n=e}}(r||(r={})),t.default=r},3602:(e,t,n)=>{n.d(t,{A:()=>u});var r=n(76095),i=n(42849),s=n(22859);const a=function(e){return function(t,n,a){var o=Object(t);if(!(0,i.A)(t)){var c=(0,r.A)(n,3);t=(0,s.A)(t),n=function(e){return c(o[e],e,o)}}var l=e(t,n,a);return l>-1?o[c?t[l]:l]:void 0}};var o=n(46482),c=n(81066),l=Math.max;const u=a(function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var s=null==n?0:(0,c.A)(n);return s<0&&(s=l(i+s,0)),(0,o.A)(e,(0,r.A)(t,3),s)})},5236:(e,t,n)=>{n.d(t,{v:()=>l});var r=n(34939),i=n(96103),s=n(95846),a=n(8158),o=class extends r.mR{static{(0,r.K2)(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},c={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function l(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.e5,c);return t.ServiceRegistry.register(n),{shared:t,Info:n}}(0,r.K2)(l,"createInfoServices")},5237:(e,t,n)=>{n.d(t,{A:()=>l});var r=n(34713),i=n(16957),s=n(16599),a=n(96920),o=Object.prototype,c=o.hasOwnProperty;const l=(0,r.A)(function(e,t){e=Object(e);var n=-1,r=t.length,l=r>2?t[2]:void 0;for(l&&(0,s.A)(t[0],t[1],l)&&(r=1);++n<r;)for(var u=t[n],d=(0,a.A)(u),h=-1,f=d.length;++h<f;){var p=d[h],m=e[p];(void 0===m||(0,i.A)(m,o[p])&&!c.call(e,p))&&(e[p]=u[p])}return e})},8158:(e,t,n)=>{n.d(t,{t:()=>Fr,u:()=>Gr});var r=n(67567),i=n(29520),s=n(49948),a=n(34813);var o=n(38817),c=n(72185),l=n(89949);function u(e,t,n){return`${e.name}_${t}_${n}`}class d{constructor(e){this.target=e}isEpsilon(){return!1}}class h extends d{constructor(e,t){super(e),this.tokenType=t}}class f extends d{constructor(e){super(e)}isEpsilon(){return!0}}class p extends d{constructor(e,t,n){super(e),this.rule=t,this.followState=n}isEpsilon(){return!0}}function m(e){const t={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};!function(e,t){const n=t.length;for(let r=0;r<n;r++){const n=t[r],i=x(e,n,void 0,{type:2}),s=x(e,n,void 0,{type:7});i.stop=s,e.ruleToStartState.set(n,i),e.ruleToStopState.set(n,s)}}(t,e);const n=e.length;for(let r=0;r<n;r++){const n=e[r],i=y(t,n,n);void 0!==i&&$(t,n,i)}return t}function g(e,t,n){return n instanceof o.BK?E(e,t,n.terminalType,n):n instanceof o.wL?function(e,t,n){const r=n.referencedRule,i=e.ruleToStartState.get(r),s=x(e,t,n,{type:1}),a=x(e,t,n,{type:1}),o=new p(i,r,a);return I(s,o),{left:s,right:a}}(e,t,n):n instanceof o.ak?function(e,t,n){const r=x(e,t,n,{type:1});v(e,r);const i=(0,c.A)(n.definition,n=>g(e,t,n)),s=R(e,t,r,n,...i);return s}(e,t,n):n instanceof o.c$?function(e,t,n){const r=x(e,t,n,{type:1});v(e,r);const i=R(e,t,r,n,y(e,t,n));return function(e,t,n,r){const i=r.left,s=r.right;return k(i,s),e.decisionMap[u(t,"Option",n.idx)]=i,r}(e,t,n,i)}(e,t,n):n instanceof o.Y2?function(e,t,n){const r=x(e,t,n,{type:5});v(e,r);const i=R(e,t,r,n,y(e,t,n));return T(e,t,n,i)}(e,t,n):n instanceof o.Pp?function(e,t,n){const r=x(e,t,n,{type:5});v(e,r);const i=R(e,t,r,n,y(e,t,n)),s=E(e,t,n.separator,n);return T(e,t,n,i,s)}(e,t,n):n instanceof o.$P?function(e,t,n){const r=x(e,t,n,{type:4});v(e,r);const i=R(e,t,r,n,y(e,t,n));return A(e,t,n,i)}(e,t,n):n instanceof o.Cy?function(e,t,n){const r=x(e,t,n,{type:4});v(e,r);const i=R(e,t,r,n,y(e,t,n)),s=E(e,t,n.separator,n);return A(e,t,n,i,s)}(e,t,n):y(e,t,n)}function y(e,t,n){const r=(0,l.A)((0,c.A)(n.definition,n=>g(e,t,n)),e=>void 0!==e);return 1===r.length?r[0]:0===r.length?void 0:function(e,t){const n=t.length;for(let s=0;s<n-1;s++){const n=t[s];let r;1===n.left.transitions.length&&(r=n.left.transitions[0]);const i=r instanceof p,a=r,o=t[s+1].left;1===n.left.type&&1===n.right.type&&void 0!==r&&(i&&a.followState===n.right||r.target===n.right)?(i?a.followState=o:r.target=o,S(e,n.right)):k(n.right,o)}const r=t[0],i=t[n-1];return{left:r.left,right:i.right}}(e,r)}function A(e,t,n,r,i){const s=r.left,a=r.right,o=x(e,t,n,{type:11});v(e,o);const c=x(e,t,n,{type:12});return s.loopback=o,c.loopback=o,e.decisionMap[u(t,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",n.idx)]=o,k(a,o),void 0===i?(k(o,s),k(o,c)):(k(o,c),k(o,i.left),k(i.right,s)),{left:s,right:c}}function T(e,t,n,r,i){const s=r.left,a=r.right,o=x(e,t,n,{type:10});v(e,o);const c=x(e,t,n,{type:12}),l=x(e,t,n,{type:9});return o.loopback=l,c.loopback=l,k(o,s),k(o,c),k(a,l),void 0!==i?(k(l,c),k(l,i.left),k(i.right,s)):k(l,o),e.decisionMap[u(t,i?"RepetitionWithSeparator":"Repetition",n.idx)]=o,{left:o,right:c}}function v(e,t){return e.decisionStates.push(t),t.decision=e.decisionStates.length-1,t.decision}function R(e,t,n,r,...i){const s=x(e,t,r,{type:8,start:n});n.end=s;for(const o of i)void 0!==o?(k(n,o.left),k(o.right,s)):k(n,s);const a={left:n,right:s};return e.decisionMap[u(t,function(e){if(e instanceof o.ak)return"Alternation";if(e instanceof o.c$)return"Option";if(e instanceof o.Y2)return"Repetition";if(e instanceof o.Pp)return"RepetitionWithSeparator";if(e instanceof o.$P)return"RepetitionMandatory";if(e instanceof o.Cy)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}(r),r.idx)]=n,a}function E(e,t,n,r){const i=x(e,t,r,{type:1}),s=x(e,t,r,{type:1});return I(i,new h(s,n)),{left:i,right:s}}function $(e,t,n){const r=e.ruleToStartState.get(t);k(r,n.left);const i=e.ruleToStopState.get(t);k(n.right,i);return{left:r,right:i}}function k(e,t){I(e,new f(t))}function x(e,t,n,r){const i=Object.assign({atn:e,production:n,epsilonOnlyTransitions:!1,rule:t,transitions:[],nextTokenWithinRule:[],stateNumber:e.states.length},r);return e.states.push(i),i}function I(e,t){0===e.transitions.length&&(e.epsilonOnlyTransitions=t.isEpsilon()),e.transitions.push(t)}function S(e,t){e.states.splice(e.states.indexOf(t),1)}const N={};class w{constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){const t=C(e);t in this.map||(this.map[t]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return(0,c.A)(this.configs,e=>e.alt)}get key(){let e="";for(const t in this.map)e+=t+":";return e}}function C(e,t=!0){return`${t?`a${e.alt}`:""}s${e.state.stateNumber}:${e.stack.map(e=>e.stateNumber.toString()).join("_")}`}var L=n(22675),b=n(64620),O=n(76095),_=n(80171);const P=function(e,t){return e&&e.length?(0,_.A)(e,(0,O.A)(t,2)):[]};var M=n(60129),D=n(83129),U=n(90570),F=n(96800);function G(e,t){const n={};return r=>{const i=r.toString();let s=n[i];return void 0!==s||(s={atnStartState:e,decision:t,states:{}},n[i]=s),s}}class K{constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="";const t=this.predicates.length;for(let n=0;n<t;n++)e+=!0===this.predicates[n]?"1":"0";return e}}const B=new K;class j extends o.T6{constructor(e){var t;super(),this.logging=null!==(t=null==e?void 0:e.logging)&&void 0!==t?t:e=>console.log(e)}initialize(e){this.atn=m(e.rules),this.dfas=function(e){const t=e.decisionStates.length,n=Array(t);for(let r=0;r<t;r++)n[r]=G(e.decisionStates[r],r);return n}(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){const{prodOccurrence:t,rule:n,hasPredicates:r,dynamicTokensEnabled:i}=e,s=this.dfas,a=this.logging,l=u(n,"Alternation",t),d=this.atn.decisionMap[l].decision,h=(0,c.A)((0,o.jk)({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:n}),e=>(0,c.A)(e,e=>e[0]));if(V(h,!1)&&!i){const e=(0,F.A)(h,(e,t,n)=>((0,D.A)(t,t=>{t&&(e[t.tokenTypeIdx]=n,(0,D.A)(t.categoryMatches,t=>{e[t]=n}))}),e),{});return r?function(t){var n;const r=this.LA(1),i=e[r.tokenTypeIdx];if(void 0!==t&&void 0!==i){const e=null===(n=t[i])||void 0===n?void 0:n.GATE;if(void 0!==e&&!1===e.call(this))return}return i}:function(){const t=this.LA(1);return e[t.tokenTypeIdx]}}return r?function(e){const t=new K,n=void 0===e?0:e.length;for(let i=0;i<n;i++){const n=null==e?void 0:e[i].GATE;t.set(i,void 0===n||n.call(this))}const r=H.call(this,s,d,t,a);return"number"==typeof r?r:void 0}:function(){const e=H.call(this,s,d,B,a);return"number"==typeof e?e:void 0}}buildLookaheadForOptional(e){const{prodOccurrence:t,rule:n,prodType:r,dynamicTokensEnabled:i}=e,s=this.dfas,a=this.logging,l=u(n,r,t),d=this.atn.decisionMap[l].decision,h=(0,c.A)((0,o.jk)({maxLookahead:1,occurrence:t,prodType:r,rule:n}),e=>(0,c.A)(e,e=>e[0]));if(V(h)&&h[0][0]&&!i){const e=h[0],t=(0,M.A)(e);if(1===t.length&&(0,U.A)(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=(0,F.A)(t,(e,t)=>(void 0!==t&&(e[t.tokenTypeIdx]=!0,(0,D.A)(t.categoryMatches,t=>{e[t]=!0})),e),{});return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){const e=H.call(this,s,d,B,a);return"object"!=typeof e&&0===e}}}function V(e,t=!0){const n=new Set;for(const r of e){const e=new Set;for(const i of r){if(void 0===i){if(t)break;return!1}const r=[i.tokenTypeIdx].concat(i.categoryMatches);for(const t of r)if(n.has(t)){if(!e.has(t))return!1}else n.add(t),e.add(t)}}return!0}function H(e,t,n,r){const i=e[t](n);let s=i.start;if(void 0===s){s=ee(i,Z(te(i.atnStartState))),i.start=s}return W.apply(this,[i,s,n,r])}function W(e,t,n,r){let i=t,s=1;const a=[];let o=this.LA(s++);for(;;){let t=q(i,o);if(void 0===t&&(t=z.apply(this,[e,i,o,s,n,r])),t===N)return X(a,i,o);if(!0===t.isAcceptState)return t.prediction;i=t,a.push(o),o=this.LA(s++)}}function z(e,t,n,r,i,s){const a=function(e,t,n){const r=new w,i=[];for(const a of e.elements){if(!1===n.is(a.alt))continue;if(7===a.state.type){i.push(a);continue}const e=a.state.transitions.length;for(let n=0;n<e;n++){const e=Q(a.state.transitions[n],t);void 0!==e&&r.add({state:e,alt:a.alt,stack:a.stack})}}let s;0===i.length&&1===r.size&&(s=r);if(void 0===s){s=new w;for(const e of r.elements)ne(e,s)}if(i.length>0&&!function(e){for(const t of e.elements)if(7===t.state.type)return!0;return!1}(s))for(const a of i)s.add(a);return s}(t.configs,n,i);if(0===a.size)return J(e,t,n,N),N;let o=Z(a);const c=function(e,t){let n;for(const r of e.elements)if(!0===t.is(r.alt))if(void 0===n)n=r.alt;else if(n!==r.alt)return;return n}(a,i);if(void 0!==c)o.isAcceptState=!0,o.prediction=c,o.configs.uniqueAlt=c;else if(function(e){if(function(e){for(const t of e.elements)if(7!==t.state.type)return!1;return!0}(e))return!0;const t=function(e){const t=new Map;for(const n of e){const e=C(n,!1);let r=t.get(e);void 0===r&&(r={},t.set(e,r)),r[n.alt]=!0}return t}(e.elements);return function(e){for(const t of Array.from(e.values()))if(Object.keys(t).length>1)return!0;return!1}(t)&&!function(e){for(const t of Array.from(e.values()))if(1===Object.keys(t).length)return!0;return!1}(t)}(a)){const t=(0,L.A)(a.alts);o.isAcceptState=!0,o.prediction=t,o.configs.uniqueAlt=t,Y.apply(this,[e,r,a.alts,s])}return o=J(e,t,n,o),o}function Y(e,t,n,r){const i=[];for(let a=1;a<=t;a++)i.push(this.LA(a).tokenType);const s=e.atnStartState;r(function(e){const t=(0,c.A)(e.prefixPath,e=>(0,o.Sk)(e)).join(", "),n=0===e.production.idx?"":e.production.idx;let r=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${function(e){if(e instanceof o.wL)return"SUBRULE";if(e instanceof o.c$)return"OPTION";if(e instanceof o.ak)return"OR";if(e instanceof o.$P)return"AT_LEAST_ONE";if(e instanceof o.Cy)return"AT_LEAST_ONE_SEP";if(e instanceof o.Pp)return"MANY_SEP";if(e instanceof o.Y2)return"MANY";if(e instanceof o.BK)return"CONSUME";throw Error("non exhaustive match")}(e.production)}${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r}({topLevelRule:s.rule,ambiguityIndices:n,production:s.production,prefixPath:i}))}function X(e,t,n){const r=(0,b.A)(t.configs.elements,e=>e.state.transitions);return{actualToken:n,possibleTokenTypes:P(r.filter(e=>e instanceof h).map(e=>e.tokenType),e=>e.tokenTypeIdx),tokenPath:e}}function q(e,t){return e.edges[t.tokenTypeIdx]}function Q(e,t){if(e instanceof h&&(0,o.G)(t,e.tokenType))return e.target}function Z(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}function J(e,t,n,r){return r=ee(e,r),t.edges[n.tokenTypeIdx]=r,r}function ee(e,t){if(t===N)return t;const n=t.configs.key,r=e.states[n];return void 0!==r?r:(t.configs.finalize(),e.states[n]=t,t)}function te(e){const t=new w,n=e.transitions.length;for(let r=0;r<n;r++){ne({state:e.transitions[r].target,alt:r,stack:[]},t)}return t}function ne(e,t){const n=e.state;if(7===n.type){if(e.stack.length>0){const n=[...e.stack];ne({state:n.pop(),alt:e.alt,stack:n},t)}else t.add(e);return}n.epsilonOnlyTransitions||t.add(e);const r=n.transitions.length;for(let i=0;i<r;i++){const r=re(e,n.transitions[i]);void 0!==r&&ne(r,t)}}function re(e,t){if(t instanceof f)return{state:t.target,alt:e.alt,stack:e.stack};if(t instanceof p){const n=[...e.stack,t.followState];return{state:t.target,alt:e.alt,stack:n}}}var ie,se,ae,oe,ce,le,ue,de,he,fe,pe,me,ge,ye,Ae,Te,ve,Re,Ee,$e,ke,xe,Ie,Se,Ne,we,Ce,Le,be,Oe,_e,Pe,Me,De,Ue,Fe,Ge,Ke,Be,je,Ve,He,We,ze,Ye,Xe,qe,Qe,Ze,Je,et,tt,nt,rt,it,st,at,ot,ct,lt,ut,dt,ht,ft,pt,mt,gt,yt,At,Tt,vt,Rt,Et,$t,kt,xt,It,St,Nt=n(64561);!function(e){e.is=function(e){return"string"==typeof e}}(ie||(ie={})),function(e){e.is=function(e){return"string"==typeof e}}(se||(se={})),function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647,e.is=function(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}}(ae||(ae={})),function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647,e.is=function(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}}(oe||(oe={})),function(e){e.create=function(e,t){return e===Number.MAX_VALUE&&(e=oe.MAX_VALUE),t===Number.MAX_VALUE&&(t=oe.MAX_VALUE),{line:e,character:t}},e.is=function(e){let t=e;return Ct.objectLiteral(t)&&Ct.uinteger(t.line)&&Ct.uinteger(t.character)}}(ce||(ce={})),function(e){e.create=function(e,t,n,r){if(Ct.uinteger(e)&&Ct.uinteger(t)&&Ct.uinteger(n)&&Ct.uinteger(r))return{start:ce.create(e,t),end:ce.create(n,r)};if(ce.is(e)&&ce.is(t))return{start:e,end:t};throw new Error(`Range#create called with invalid arguments[${e}, ${t}, ${n}, ${r}]`)},e.is=function(e){let t=e;return Ct.objectLiteral(t)&&ce.is(t.start)&&ce.is(t.end)}}(le||(le={})),function(e){e.create=function(e,t){return{uri:e,range:t}},e.is=function(e){let t=e;return Ct.objectLiteral(t)&&le.is(t.range)&&(Ct.string(t.uri)||Ct.undefined(t.uri))}}(ue||(ue={})),function(e){e.create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},e.is=function(e){let t=e;return Ct.objectLiteral(t)&&le.is(t.targetRange)&&Ct.string(t.targetUri)&&le.is(t.targetSelectionRange)&&(le.is(t.originSelectionRange)||Ct.undefined(t.originSelectionRange))}}(de||(de={})),function(e){e.create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},e.is=function(e){const t=e;return Ct.objectLiteral(t)&&Ct.numberRange(t.red,0,1)&&Ct.numberRange(t.green,0,1)&&Ct.numberRange(t.blue,0,1)&&Ct.numberRange(t.alpha,0,1)}}(he||(he={})),function(e){e.create=function(e,t){return{range:e,color:t}},e.is=function(e){const t=e;return Ct.objectLiteral(t)&&le.is(t.range)&&he.is(t.color)}}(fe||(fe={})),function(e){e.create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},e.is=function(e){const t=e;return Ct.objectLiteral(t)&&Ct.string(t.label)&&(Ct.undefined(t.textEdit)||$e.is(t))&&(Ct.undefined(t.additionalTextEdits)||Ct.typedArray(t.additionalTextEdits,$e.is))}}(pe||(pe={})),function(e){e.Comment="comment",e.Imports="imports",e.Region="region"}(me||(me={})),function(e){e.create=function(e,t,n,r,i,s){const a={startLine:e,endLine:t};return Ct.defined(n)&&(a.startCharacter=n),Ct.defined(r)&&(a.endCharacter=r),Ct.defined(i)&&(a.kind=i),Ct.defined(s)&&(a.collapsedText=s),a},e.is=function(e){const t=e;return Ct.objectLiteral(t)&&Ct.uinteger(t.startLine)&&Ct.uinteger(t.startLine)&&(Ct.undefined(t.startCharacter)||Ct.uinteger(t.startCharacter))&&(Ct.undefined(t.endCharacter)||Ct.uinteger(t.endCharacter))&&(Ct.undefined(t.kind)||Ct.string(t.kind))}}(ge||(ge={})),function(e){e.create=function(e,t){return{location:e,message:t}},e.is=function(e){let t=e;return Ct.defined(t)&&ue.is(t.location)&&Ct.string(t.message)}}(ye||(ye={})),function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4}(Ae||(Ae={})),function(e){e.Unnecessary=1,e.Deprecated=2}(Te||(Te={})),function(e){e.is=function(e){const t=e;return Ct.objectLiteral(t)&&Ct.string(t.href)}}(ve||(ve={})),function(e){e.create=function(e,t,n,r,i,s){let a={range:e,message:t};return Ct.defined(n)&&(a.severity=n),Ct.defined(r)&&(a.code=r),Ct.defined(i)&&(a.source=i),Ct.defined(s)&&(a.relatedInformation=s),a},e.is=function(e){var t;let n=e;return Ct.defined(n)&&le.is(n.range)&&Ct.string(n.message)&&(Ct.number(n.severity)||Ct.undefined(n.severity))&&(Ct.integer(n.code)||Ct.string(n.code)||Ct.undefined(n.code))&&(Ct.undefined(n.codeDescription)||Ct.string(null===(t=n.codeDescription)||void 0===t?void 0:t.href))&&(Ct.string(n.source)||Ct.undefined(n.source))&&(Ct.undefined(n.relatedInformation)||Ct.typedArray(n.relatedInformation,ye.is))}}(Re||(Re={})),function(e){e.create=function(e,t,...n){let r={title:e,command:t};return Ct.defined(n)&&n.length>0&&(r.arguments=n),r},e.is=function(e){let t=e;return Ct.defined(t)&&Ct.string(t.title)&&Ct.string(t.command)}}(Ee||(Ee={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){const t=e;return Ct.objectLiteral(t)&&Ct.string(t.newText)&&le.is(t.range)}}($e||($e={})),function(e){e.create=function(e,t,n){const r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},e.is=function(e){const t=e;return Ct.objectLiteral(t)&&Ct.string(t.label)&&(Ct.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(Ct.string(t.description)||void 0===t.description)}}(ke||(ke={})),function(e){e.is=function(e){const t=e;return Ct.string(t)}}(xe||(xe={})),function(e){e.replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},e.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},e.del=function(e,t){return{range:e,newText:"",annotationId:t}},e.is=function(e){const t=e;return $e.is(t)&&(ke.is(t.annotationId)||xe.is(t.annotationId))}}(Ie||(Ie={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){let t=e;return Ct.defined(t)&&_e.is(t.textDocument)&&Array.isArray(t.edits)}}(Se||(Se={})),function(e){e.create=function(e,t,n){let r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){let t=e;return t&&"create"===t.kind&&Ct.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||Ct.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Ct.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||xe.is(t.annotationId))}}(Ne||(Ne={})),function(e){e.create=function(e,t,n,r){let i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},e.is=function(e){let t=e;return t&&"rename"===t.kind&&Ct.string(t.oldUri)&&Ct.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||Ct.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Ct.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||xe.is(t.annotationId))}}(we||(we={})),function(e){e.create=function(e,t,n){let r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){let t=e;return t&&"delete"===t.kind&&Ct.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||Ct.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||Ct.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||xe.is(t.annotationId))}}(Ce||(Ce={})),function(e){e.is=function(e){let t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every(e=>Ct.string(e.kind)?Ne.is(e)||we.is(e)||Ce.is(e):Se.is(e)))}}(Le||(Le={}));!function(e){e.create=function(e){return{uri:e}},e.is=function(e){let t=e;return Ct.defined(t)&&Ct.string(t.uri)}}(be||(be={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){let t=e;return Ct.defined(t)&&Ct.string(t.uri)&&Ct.integer(t.version)}}(Oe||(Oe={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){let t=e;return Ct.defined(t)&&Ct.string(t.uri)&&(null===t.version||Ct.integer(t.version))}}(_e||(_e={})),function(e){e.create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},e.is=function(e){let t=e;return Ct.defined(t)&&Ct.string(t.uri)&&Ct.string(t.languageId)&&Ct.integer(t.version)&&Ct.string(t.text)}}(Pe||(Pe={})),function(e){e.PlainText="plaintext",e.Markdown="markdown",e.is=function(t){const n=t;return n===e.PlainText||n===e.Markdown}}(Me||(Me={})),function(e){e.is=function(e){const t=e;return Ct.objectLiteral(e)&&Me.is(t.kind)&&Ct.string(t.value)}}(De||(De={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(Ue||(Ue={})),function(e){e.PlainText=1,e.Snippet=2}(Fe||(Fe={})),function(e){e.Deprecated=1}(Ge||(Ge={})),function(e){e.create=function(e,t,n){return{newText:e,insert:t,replace:n}},e.is=function(e){const t=e;return t&&Ct.string(t.newText)&&le.is(t.insert)&&le.is(t.replace)}}(Ke||(Ke={})),function(e){e.asIs=1,e.adjustIndentation=2}(Be||(Be={})),function(e){e.is=function(e){const t=e;return t&&(Ct.string(t.detail)||void 0===t.detail)&&(Ct.string(t.description)||void 0===t.description)}}(je||(je={})),function(e){e.create=function(e){return{label:e}}}(Ve||(Ve={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(He||(He={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){const t=e;return Ct.string(t)||Ct.objectLiteral(t)&&Ct.string(t.language)&&Ct.string(t.value)}}(We||(We={})),function(e){e.is=function(e){let t=e;return!!t&&Ct.objectLiteral(t)&&(De.is(t.contents)||We.is(t.contents)||Ct.typedArray(t.contents,We.is))&&(void 0===e.range||le.is(e.range))}}(ze||(ze={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(Ye||(Ye={})),function(e){e.create=function(e,t,...n){let r={label:e};return Ct.defined(t)&&(r.documentation=t),Ct.defined(n)?r.parameters=n:r.parameters=[],r}}(Xe||(Xe={})),function(e){e.Text=1,e.Read=2,e.Write=3}(qe||(qe={})),function(e){e.create=function(e,t){let n={range:e};return Ct.number(t)&&(n.kind=t),n}}(Qe||(Qe={})),function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26}(Ze||(Ze={})),function(e){e.Deprecated=1}(Je||(Je={})),function(e){e.create=function(e,t,n,r,i){let s={name:e,kind:t,location:{uri:r,range:n}};return i&&(s.containerName=i),s}}(et||(et={})),function(e){e.create=function(e,t,n,r){return void 0!==r?{name:e,kind:t,location:{uri:n,range:r}}:{name:e,kind:t,location:{uri:n}}}}(tt||(tt={})),function(e){e.create=function(e,t,n,r,i,s){let a={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==s&&(a.children=s),a},e.is=function(e){let t=e;return t&&Ct.string(t.name)&&Ct.number(t.kind)&&le.is(t.range)&&le.is(t.selectionRange)&&(void 0===t.detail||Ct.string(t.detail))&&(void 0===t.deprecated||Ct.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))}}(nt||(nt={})),function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"}(rt||(rt={})),function(e){e.Invoked=1,e.Automatic=2}(it||(it={})),function(e){e.create=function(e,t,n){let r={diagnostics:e};return null!=t&&(r.only=t),null!=n&&(r.triggerKind=n),r},e.is=function(e){let t=e;return Ct.defined(t)&&Ct.typedArray(t.diagnostics,Re.is)&&(void 0===t.only||Ct.typedArray(t.only,Ct.string))&&(void 0===t.triggerKind||t.triggerKind===it.Invoked||t.triggerKind===it.Automatic)}}(st||(st={})),function(e){e.create=function(e,t,n){let r={title:e},i=!0;return"string"==typeof t?(i=!1,r.kind=t):Ee.is(t)?r.command=t:r.edit=t,i&&void 0!==n&&(r.kind=n),r},e.is=function(e){let t=e;return t&&Ct.string(t.title)&&(void 0===t.diagnostics||Ct.typedArray(t.diagnostics,Re.is))&&(void 0===t.kind||Ct.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||Ee.is(t.command))&&(void 0===t.isPreferred||Ct.boolean(t.isPreferred))&&(void 0===t.edit||Le.is(t.edit))}}(at||(at={})),function(e){e.create=function(e,t){let n={range:e};return Ct.defined(t)&&(n.data=t),n},e.is=function(e){let t=e;return Ct.defined(t)&&le.is(t.range)&&(Ct.undefined(t.command)||Ee.is(t.command))}}(ot||(ot={})),function(e){e.create=function(e,t){return{tabSize:e,insertSpaces:t}},e.is=function(e){let t=e;return Ct.defined(t)&&Ct.uinteger(t.tabSize)&&Ct.boolean(t.insertSpaces)}}(ct||(ct={})),function(e){e.create=function(e,t,n){return{range:e,target:t,data:n}},e.is=function(e){let t=e;return Ct.defined(t)&&le.is(t.range)&&(Ct.undefined(t.target)||Ct.string(t.target))}}(lt||(lt={})),function(e){e.create=function(e,t){return{range:e,parent:t}},e.is=function(t){let n=t;return Ct.objectLiteral(n)&&le.is(n.range)&&(void 0===n.parent||e.is(n.parent))}}(ut||(ut={})),function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"}(dt||(dt={})),function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"}(ht||(ht={})),function(e){e.is=function(e){const t=e;return Ct.objectLiteral(t)&&(void 0===t.resultId||"string"==typeof t.resultId)&&Array.isArray(t.data)&&(0===t.data.length||"number"==typeof t.data[0])}}(ft||(ft={})),function(e){e.create=function(e,t){return{range:e,text:t}},e.is=function(e){const t=e;return null!=t&&le.is(t.range)&&Ct.string(t.text)}}(pt||(pt={})),function(e){e.create=function(e,t,n){return{range:e,variableName:t,caseSensitiveLookup:n}},e.is=function(e){const t=e;return null!=t&&le.is(t.range)&&Ct.boolean(t.caseSensitiveLookup)&&(Ct.string(t.variableName)||void 0===t.variableName)}}(mt||(mt={})),function(e){e.create=function(e,t){return{range:e,expression:t}},e.is=function(e){const t=e;return null!=t&&le.is(t.range)&&(Ct.string(t.expression)||void 0===t.expression)}}(gt||(gt={})),function(e){e.create=function(e,t){return{frameId:e,stoppedLocation:t}},e.is=function(e){const t=e;return Ct.defined(t)&&le.is(e.stoppedLocation)}}(yt||(yt={})),function(e){e.Type=1,e.Parameter=2,e.is=function(e){return 1===e||2===e}}(At||(At={})),function(e){e.create=function(e){return{value:e}},e.is=function(e){const t=e;return Ct.objectLiteral(t)&&(void 0===t.tooltip||Ct.string(t.tooltip)||De.is(t.tooltip))&&(void 0===t.location||ue.is(t.location))&&(void 0===t.command||Ee.is(t.command))}}(Tt||(Tt={})),function(e){e.create=function(e,t,n){const r={position:e,label:t};return void 0!==n&&(r.kind=n),r},e.is=function(e){const t=e;return Ct.objectLiteral(t)&&ce.is(t.position)&&(Ct.string(t.label)||Ct.typedArray(t.label,Tt.is))&&(void 0===t.kind||At.is(t.kind))&&void 0===t.textEdits||Ct.typedArray(t.textEdits,$e.is)&&(void 0===t.tooltip||Ct.string(t.tooltip)||De.is(t.tooltip))&&(void 0===t.paddingLeft||Ct.boolean(t.paddingLeft))&&(void 0===t.paddingRight||Ct.boolean(t.paddingRight))}}(vt||(vt={})),function(e){e.createSnippet=function(e){return{kind:"snippet",value:e}}}(Rt||(Rt={})),function(e){e.create=function(e,t,n,r){return{insertText:e,filterText:t,range:n,command:r}}}(Et||(Et={})),function(e){e.create=function(e){return{items:e}}}($t||($t={})),function(e){e.Invoked=0,e.Automatic=1}(kt||(kt={})),function(e){e.create=function(e,t){return{range:e,text:t}}}(xt||(xt={})),function(e){e.create=function(e,t){return{triggerKind:e,selectedCompletionInfo:t}}}(It||(It={})),function(e){e.is=function(e){const t=e;return Ct.objectLiteral(t)&&se.is(t.uri)&&Ct.string(t.name)}}(St||(St={}));var wt,Ct;!function(e){function t(e,n){if(e.length<=1)return e;const r=e.length/2|0,i=e.slice(0,r),s=e.slice(r);t(i,n),t(s,n);let a=0,o=0,c=0;for(;a<i.length&&o<s.length;){let t=n(i[a],s[o]);e[c++]=t<=0?i[a++]:s[o++]}for(;a<i.length;)e[c++]=i[a++];for(;o<s.length;)e[c++]=s[o++];return e}e.create=function(e,t,n,r){return new Lt(e,t,n,r)},e.is=function(e){let t=e;return!!(Ct.defined(t)&&Ct.string(t.uri)&&(Ct.undefined(t.languageId)||Ct.string(t.languageId))&&Ct.uinteger(t.lineCount)&&Ct.func(t.getText)&&Ct.func(t.positionAt)&&Ct.func(t.offsetAt))},e.applyEdits=function(e,n){let r=e.getText(),i=t(n,(e,t)=>{let n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n}),s=r.length;for(let t=i.length-1;t>=0;t--){let n=i[t],a=e.offsetAt(n.range.start),o=e.offsetAt(n.range.end);if(!(o<=s))throw new Error("Overlapping edit");r=r.substring(0,a)+n.newText+r.substring(o,r.length),s=a}return r}}(wt||(wt={}));class Lt{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(void 0===this._lineOffsets){let e=[],t=this._content,n=!0;for(let r=0;r<t.length;r++){n&&(e.push(r),n=!1);let i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return ce.create(0,e);for(;n<r;){let i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}let i=n-1;return ce.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)}get lineCount(){return this.getLineOffsets().length}}!function(e){const t=Object.prototype.toString;e.defined=function(e){return void 0!==e},e.undefined=function(e){return void 0===e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.numberRange=function(e,n,r){return"[object Number]"===t.call(e)&&n<=e&&e<=r},e.integer=function(e){return"[object Number]"===t.call(e)&&-2147483648<=e&&e<=2147483647},e.uinteger=function(e){return"[object Number]"===t.call(e)&&0<=e&&e<=2147483647},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"==typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(Ct||(Ct={}));class bt{constructor(){this.nodeStack=[]}get current(){var e;return null!==(e=this.nodeStack[this.nodeStack.length-1])&&void 0!==e?e:this.rootNode}buildRootNode(e){return this.rootNode=new Dt(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){const t=new Pt;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){const n=new _t(e.startOffset,e.image.length,(0,r.wf)(e),e.tokenType,!t);return n.grammarSource=t,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){const t=e.container;if(t){const n=t.content.indexOf(e);n>=0&&t.content.splice(n,1)}}addHiddenNodes(e){const t=[];for(const s of e){const e=new _t(s.startOffset,s.image.length,(0,r.wf)(s),s.tokenType,!0);e.root=this.rootNode,t.push(e)}let n=this.current,i=!1;if(n.content.length>0)n.content.push(...t);else{for(;n.container;){const e=n.container.content.indexOf(n);if(e>0){n.container.content.splice(e,0,...t),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...t)}}construct(e){const t=this.current;"string"==typeof e.$type&&(this.current.astNode=e),e.$cstNode=t;const n=this.nodeStack.pop();0===(null==n?void 0:n.content.length)&&this.removeNode(n)}}class Ot{get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,t;const n="string"==typeof(null===(e=this._astNode)||void 0===e?void 0:e.$type)?this._astNode:null===(t=this.container)||void 0===t?void 0:t.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}}class _t extends Ot{get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,n,r,i=!1){super(),this._hidden=i,this._offset=e,this._tokenType=r,this._length=t,this._range=n}}class Pt extends Ot{constructor(){super(...arguments),this.content=new Mt(this)}get children(){return this.content}get offset(){var e,t;return null!==(t=null===(e=this.firstNonHiddenNode)||void 0===e?void 0:e.offset)&&void 0!==t?t:0}get length(){return this.end-this.offset}get end(){var e,t;return null!==(t=null===(e=this.lastNonHiddenNode)||void 0===e?void 0:e.end)&&void 0!==t?t:0}get range(){const e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(void 0===this._rangeCache){const{range:n}=e,{range:r}=t;this._rangeCache={start:n.start,end:r.end.line<n.start.line?n.start:r.end}}return this._rangeCache}return{start:ce.create(0,0),end:ce.create(0,0)}}get firstNonHiddenNode(){for(const e of this.content)if(!e.hidden)return e;return this.content[0]}get lastNonHiddenNode(){for(let e=this.content.length-1;e>=0;e--){const t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}}class Mt extends Array{constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,Mt.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,t,...n){return this.addParents(n),super.splice(e,t,...n)}addParents(e){for(const t of e)t.container=this.parent}}class Dt extends Pt{get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=null!=e?e:""}}const Ut=Symbol("Datatype");function Ft(e){return e.$type===Ut}const Gt=e=>e.endsWith("\u200b")?e:e+"\u200b";class Kt{constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;const t=this.lexer.definition,n="production"===e.LanguageMetaData.mode;this.wrapper=new zt(t,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}}class Bt extends Kt{get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new bt,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){const n=this.computeRuleType(e),r=this.wrapper.DEFINE_RULE(Gt(e.name),this.startImplementation(n,t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}computeRuleType(e){if(!e.fragment){if((0,i.Xq)(e))return Ut;{const t=(0,i.PV)(e);return null!=t?t:e.name}}}parse(e,t={}){this.nodeBuilder.buildRootNode(e);const n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;const r=t.rule?this.allRules.get(t.rule):this.mainRule;if(!r)throw new Error(t.rule?`No rule found with name '${t.rule}'`:"No main rule available.");const i=r.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:i,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,t){return n=>{const r=!this.isRecording()&&void 0!==e;if(r){const t={$type:e};this.stack.push(t),e===Ut&&(t.value="")}let i;try{i=t(n)}catch(s){i=void 0}return void 0===i&&r&&(i=this.construct()),i}}extractHiddenTokens(e){const t=this.lexerResult.hidden;if(!t.length)return[];const n=e.startOffset;for(let r=0;r<t.length;r++){if(t[r].startOffset>n)return t.splice(0,r)}return t.splice(0,t.length)}consume(e,t,n){const r=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(r)){const e=this.extractHiddenTokens(r);this.nodeBuilder.addHiddenNodes(e);const t=this.nodeBuilder.buildLeafNode(r,n),{assignment:i,isCrossRef:s}=this.getAssignment(n),o=this.current;if(i){const e=(0,a.wb)(n)?r.image:this.converter.convert(r.image,t);this.assign(i.operator,i.feature,e,t,s)}else if(Ft(o)){let e=r.image;(0,a.wb)(n)||(e=this.converter.convert(e,t).toString()),o.value+=e}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&"number"==typeof e.endOffset&&!isNaN(e.endOffset)}subrule(e,t,n,r,i){let s;this.isRecording()||n||(s=this.nodeBuilder.buildCompositeNode(r));const a=this.wrapper.wrapSubrule(e,t,i);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(a,r,s)}performSubruleAssignment(e,t,n){const{assignment:r,isCrossRef:i}=this.getAssignment(t);if(r)this.assign(r.operator,r.feature,e,n,i);else if(!r){const t=this.current;if(Ft(t))t.value+=e.toString();else if("object"==typeof e&&e){const n=this.assignWithoutOverride(e,t);this.stack.pop(),this.stack.push(n)}}}action(e,t){if(!this.isRecording()){let n=this.current;if(t.feature&&t.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode);this.nodeBuilder.buildCompositeNode(t).content.push(n.$cstNode);const r={$type:e};this.stack.push(r),this.assign(t.operator,t.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;const e=this.current;return(0,Nt.SD)(e),this.nodeBuilder.construct(e),this.stack.pop(),Ft(e)?this.converter.convert(e.value,e.$cstNode):((0,Nt.OP)(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){const t=(0,Nt.XG)(e,a.wh);this.assignmentMap.set(e,{assignment:t,isCrossRef:!!t&&(0,a._c)(t.terminal)})}return this.assignmentMap.get(e)}assign(e,t,n,r,i){const s=this.current;let a;switch(a=i&&"string"==typeof n?this.linker.buildReference(s,t,r,n):n,e){case"=":s[t]=a;break;case"?=":s[t]=!0;break;case"+=":Array.isArray(s[t])||(s[t]=[]),s[t].push(a)}}assignWithoutOverride(e,t){for(const[r,i]of Object.entries(t)){const t=e[r];void 0===t?e[r]=i:Array.isArray(t)&&Array.isArray(i)&&(i.push(...t),e[r]=i)}const n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}}class jt{buildMismatchTokenMessage(e){return o.my.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return o.my.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return o.my.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return o.my.buildEarlyExitMessage(e)}}class Vt extends jt{buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}}class Ht extends Kt{constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();const t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){const n=this.wrapper.DEFINE_RULE(Gt(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{const n=this.keepStackSize();try{e(t)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){const e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,n){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,n,r,i){this.before(r),this.wrapper.wrapSubrule(e,t,i),this.after(r)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){const t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}}const Wt={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new Vt};class zt extends o.jr{constructor(e,t){const n=t&&"maxLookahead"in t;super(e,Object.assign(Object.assign(Object.assign({},Wt),{lookaheadStrategy:n?new o.T6({maxLookahead:t.maxLookahead}):new j({logging:t.skipValidations?()=>{}:void 0})}),t))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t){return this.RULE(e,t)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t)}wrapSubrule(e,t,n){return this.subrule(e,t,{ARGS:[n]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}}var Yt=n(36610),Xt=n(93897);function qt(e,t,n){return function(e,t){const n=(0,i.YV)(t,!1),r=(0,Xt.Td)(t.rules).filter(a.s7).filter(e=>n.has(e));for(const i of r){const t=Object.assign(Object.assign({},e),{consume:1,optional:1,subrule:1,many:1,or:1});e.parser.rule(i,Qt(t,i.definition))}}({parser:t,tokens:n,ruleNames:new Map},e),t}function Qt(e,t,n=!1){let r;if((0,a.wb)(t))r=function(e,t){const n=e.consume++,r=e.tokens[t.value];if(!r)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(n,r,t)}(e,t);else if((0,a.ve)(t))r=function(e,t){const n=(0,i.Uz)(t);return()=>e.parser.action(n,t)}(e,t);else if((0,a.wh)(t))r=Qt(e,t.terminal);else if((0,a._c)(t))r=en(e,t);else if((0,a.$g)(t))r=function(e,t){const n=t.rule.ref;if((0,a.s7)(n)){const r=e.subrule++,i=n.fragment,s=t.arguments.length>0?function(e,t){const n=t.map(e=>Zt(e.value));return t=>{const r={};for(let i=0;i<n.length;i++){const s=e.parameters[i],a=n[i];r[s.name]=a(t)}return r}}(n,t.arguments):()=>({});return a=>e.parser.subrule(r,nn(e,n),i,t,s(a))}if((0,a.rE)(n)){const r=e.consume++,i=rn(e,n.name);return()=>e.parser.consume(r,i,t)}if(!n)throw new Yt.W(t.$cstNode,`Undefined rule: ${t.rule.$refText}`);(0,Yt.d)(n)}(e,t);else if((0,a.jp)(t))r=function(e,t){if(1===t.elements.length)return Qt(e,t.elements[0]);{const n=[];for(const i of t.elements){const t={ALT:Qt(e,i,!0)},r=Jt(i);r&&(t.GATE=Zt(r)),n.push(t)}const r=e.or++;return t=>e.parser.alternatives(r,n.map(e=>{const n={ALT:()=>e.ALT(t)},r=e.GATE;return r&&(n.GATE=()=>r(t)),n}))}}(e,t);else if((0,a.cY)(t))r=function(e,t){if(1===t.elements.length)return Qt(e,t.elements[0]);const n=[];for(const o of t.elements){const t={ALT:Qt(e,o,!0)},r=Jt(o);r&&(t.GATE=Zt(r)),n.push(t)}const r=e.or++,i=(e,t)=>`uGroup_${e}_${t.getRuleStack().join("-")}`,s=t=>e.parser.alternatives(r,n.map((n,s)=>{const a={ALT:()=>!0},o=e.parser;a.ALT=()=>{if(n.ALT(t),!o.isRecording()){const e=i(r,o);o.unorderedGroups.get(e)||o.unorderedGroups.set(e,[]);const t=o.unorderedGroups.get(e);void 0===(null==t?void 0:t[s])&&(t[s]=!0)}};const c=n.GATE;return a.GATE=c?()=>c(t):()=>{const e=o.unorderedGroups.get(i(r,o));return!(null==e?void 0:e[s])},a})),a=tn(e,Jt(t),s,"*");return t=>{a(t),e.parser.isRecording()||e.parser.unorderedGroups.delete(i(r,e.parser))}}(e,t);else if((0,a.IZ)(t))r=function(e,t){const n=t.elements.map(t=>Qt(e,t));return e=>n.forEach(t=>t(e))}(e,t);else{if(!(0,a.FO)(t))throw new Yt.W(t.$cstNode,`Unexpected element type: ${t.$type}`);{const n=e.consume++;r=()=>e.parser.consume(n,o.LT,t)}}return tn(e,n?void 0:Jt(t),r,t.cardinality)}function Zt(e){if((0,a.RP)(e)){const t=Zt(e.left),n=Zt(e.right);return e=>t(e)||n(e)}if((0,a.Tu)(e)){const t=Zt(e.left),n=Zt(e.right);return e=>t(e)&&n(e)}if((0,a.Ct)(e)){const t=Zt(e.value);return e=>!t(e)}if((0,a.TF)(e)){const t=e.parameter.ref.name;return e=>void 0!==e&&!0===e[t]}if((0,a.Cz)(e)){const t=Boolean(e.true);return()=>t}(0,Yt.d)(e)}function Jt(e){if((0,a.IZ)(e))return e.guardCondition}function en(e,t,n=t.terminal){if(n){if((0,a.$g)(n)&&(0,a.s7)(n.rule.ref)){const r=n.rule.ref,i=e.subrule++;return n=>e.parser.subrule(i,nn(e,r),!1,t,n)}if((0,a.$g)(n)&&(0,a.rE)(n.rule.ref)){const r=e.consume++,i=rn(e,n.rule.ref.name);return()=>e.parser.consume(r,i,t)}if((0,a.wb)(n)){const r=e.consume++,i=rn(e,n.value);return()=>e.parser.consume(r,i,t)}throw new Error("Could not build cross reference parser")}{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);const n=(0,i.U5)(t.type.ref),r=null==n?void 0:n.terminal;if(!r)throw new Error("Could not find name assignment for type: "+(0,i.Uz)(t.type.ref));return en(e,t,r)}}function tn(e,t,n,r){const i=t&&Zt(t);if(!r){if(i){const t=e.or++;return r=>e.parser.alternatives(t,[{ALT:()=>n(r),GATE:()=>i(r)},{ALT:(0,o.mT)(),GATE:()=>!i(r)}])}return n}if("*"===r){const t=e.many++;return r=>e.parser.many(t,{DEF:()=>n(r),GATE:i?()=>i(r):void 0})}if("+"===r){const t=e.many++;if(i){const r=e.or++;return s=>e.parser.alternatives(r,[{ALT:()=>e.parser.atLeastOne(t,{DEF:()=>n(s)}),GATE:()=>i(s)},{ALT:(0,o.mT)(),GATE:()=>!i(s)}])}return r=>e.parser.atLeastOne(t,{DEF:()=>n(r)})}if("?"===r){const t=e.optional++;return r=>e.parser.optional(t,{DEF:()=>n(r),GATE:i?()=>i(r):void 0})}(0,Yt.d)(r)}function nn(e,t){const n=function(e,t){if((0,a.s7)(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let n=t,r=n.$container,i=t.$type;for(;!(0,a.s7)(r);){if((0,a.IZ)(r)||(0,a.jp)(r)||(0,a.cY)(r)){i=r.elements.indexOf(n).toString()+":"+i}n=r,r=r.$container}return i=r.name+":"+i,e.ruleNames.set(t,i),i}}(e,t),r=e.parser.getRule(n);if(!r)throw new Error(`Rule "${n}" not found."`);return r}function rn(e,t){const n=e.tokens[t];if(!n)throw new Error(`Token "${t}" not found."`);return n}function sn(e){const t=function(e){const t=e.Grammar,n=e.parser.Lexer,r=new Bt(e);return qt(t,r,n.definition)}(e);return t.finalize(),t}var an=n(89212),on=n(12223),cn=n(20202),ln=n(64913);let un=0,dn=10;const hn=Symbol("OperationCancelled");function fn(e){return e===hn}async function pn(e){if(e===cn.XO.None)return;const t=performance.now();if(t-un>=dn&&(un=t,await new Promise(e=>{"undefined"==typeof setImmediate?setTimeout(e,0):setImmediate(e)}),un=performance.now()),e.isCancellationRequested)throw hn}class mn{constructor(){this.promise=new Promise((e,t)=>{this.resolve=t=>(e(t),this),this.reject=e=>(t(e),this)})}}class gn{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){const t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){for(const n of e)if(gn.isIncremental(n)){const e=Rn(n.range),t=this.offsetAt(e.start),r=this.offsetAt(e.end);this._content=this._content.substring(0,t)+n.text+this._content.substring(r,this._content.length);const i=Math.max(e.start.line,0),s=Math.max(e.end.line,0);let a=this._lineOffsets;const o=Tn(n.text,!1,t);if(s-i===o.length)for(let n=0,l=o.length;n<l;n++)a[n+i+1]=o[n];else o.length<1e4?a.splice(i+1,s-i,...o):this._lineOffsets=a=a.slice(0,i+1).concat(o,a.slice(s+1));const c=n.text.length-(r-t);if(0!==c)for(let n=i+1+o.length,l=a.length;n<l;n++)a[n]=a[n]+c}else{if(!gn.isFull(n))throw new Error("Unknown change event received");this._content=n.text,this._lineOffsets=void 0}this._version=t}getLineOffsets(){return void 0===this._lineOffsets&&(this._lineOffsets=Tn(this._content,!0)),this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);const t=this.getLineOffsets();let n=0,r=t.length;if(0===r)return{line:0,character:e};for(;n<r;){const i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}const i=n-1;return{line:i,character:(e=this.ensureBeforeEOL(e,t[i]))-t[i]}}offsetAt(e){const t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;const n=t[e.line];if(e.character<=0)return n;const r=e.line+1<t.length?t[e.line+1]:this._content.length,i=Math.min(n+e.character,r);return this.ensureBeforeEOL(i,n)}ensureBeforeEOL(e,t){for(;e>t&&vn(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)}static isFull(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength}}var yn;function An(e,t){if(e.length<=1)return e;const n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);An(r,t),An(i,t);let s=0,a=0,o=0;for(;s<r.length&&a<i.length;){const n=t(r[s],i[a]);e[o++]=n<=0?r[s++]:i[a++]}for(;s<r.length;)e[o++]=r[s++];for(;a<i.length;)e[o++]=i[a++];return e}function Tn(e,t,n=0){const r=t?[n]:[];for(let i=0;i<e.length;i++){const t=e.charCodeAt(i);vn(t)&&(13===t&&i+1<e.length&&10===e.charCodeAt(i+1)&&i++,r.push(n+i+1))}return r}function vn(e){return 13===e||10===e}function Rn(e){const t=e.start,n=e.end;return t.line>n.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function En(e){const t=Rn(e.range);return t!==e.range?{newText:e.newText,range:t}:e}!function(e){e.create=function(e,t,n,r){return new gn(e,t,n,r)},e.update=function(e,t,n){if(e instanceof gn)return e.update(t,n),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")},e.applyEdits=function(e,t){const n=e.getText(),r=An(t.map(En),(e,t)=>{const n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n});let i=0;const s=[];for(const a of r){const t=e.offsetAt(a.range.start);if(t<i)throw new Error("Overlapping edit");t>i&&s.push(n.substring(i,t)),a.newText.length&&s.push(a.newText),i=e.offsetAt(a.range.end)}return s.push(n.substr(i)),s.join("")}}(yn||(yn={}));var $n,kn=n(55216);!function(e){e[e.Changed=0]="Changed",e[e.Parsed=1]="Parsed",e[e.IndexedContent=2]="IndexedContent",e[e.ComputedScopes=3]="ComputedScopes",e[e.Linked=4]="Linked",e[e.IndexedReferences=5]="IndexedReferences",e[e.Validated=6]="Validated"}($n||($n={}));class xn{constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=cn.XO.None){const n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,t)}fromTextDocument(e,t,n){return t=null!=t?t:kn.r.parse(e.uri),cn.XO.is(n)?this.createAsync(t,e,n):this.create(t,e,n)}fromString(e,t,n){return cn.XO.is(n)?this.createAsync(t,e,n):this.create(t,e,n)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,n){if("string"==typeof t){const r=this.parse(e,t,n);return this.createLangiumDocument(r,e,void 0,t)}if("$model"in t){const n={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}{const r=this.parse(e,t.getText(),n);return this.createLangiumDocument(r,e,t)}}async createAsync(e,t,n){if("string"==typeof t){const r=await this.parseAsync(e,t,n);return this.createLangiumDocument(r,e,void 0,t)}{const r=await this.parseAsync(e,t.getText(),n);return this.createLangiumDocument(r,e,t)}}createLangiumDocument(e,t,n,r){let i;if(n)i={parseResult:e,uri:t,state:$n.Parsed,references:[],textDocument:n};else{const n=this.createTextDocumentGetter(t,r);i={parseResult:e,uri:t,state:$n.Parsed,references:[],get textDocument(){return n()}}}return e.value.$document=i,i}async update(e,t){var n,r;const i=null===(n=e.parseResult.value.$cstNode)||void 0===n?void 0:n.root.fullText,s=null===(r=this.textDocuments)||void 0===r?void 0:r.get(e.uri.toString()),a=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{const t=this.createTextDocumentGetter(e.uri,a);Object.defineProperty(e,"textDocument",{get:t})}return i!==a&&(e.parseResult=await this.parseAsync(e.uri,a,t),e.parseResult.value.$document=e),e.state=$n.Parsed,e}parse(e,t,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,n)}parseAsync(e,t,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,n)}createTextDocumentGetter(e,t){const n=this.serviceRegistry;let r;return()=>null!=r?r:r=yn.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,null!=t?t:"")}}class In{constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return(0,Xt.Td)(this.documentMap.values())}addDocument(e){const t=e.uri.toString();if(this.documentMap.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentMap.set(t,e)}getDocument(e){const t=e.toString();return this.documentMap.get(t)}async getOrCreateDocument(e,t){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(n),n)}createDocument(e,t,n){if(n)return this.langiumDocumentFactory.fromString(t,e,n).then(e=>(this.addDocument(e),e));{const n=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(n),n}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){const t=e.toString(),n=this.documentMap.get(t);if(n){this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=$n.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0}return n}deleteDocument(e){const t=e.toString(),n=this.documentMap.get(t);return n&&(n.state=$n.Changed,this.documentMap.delete(t)),n}}const Sn=Symbol("ref_resolving");class Nn{constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,t=cn.XO.None){for(const n of(0,Nt.jm)(e.parseResult.value))await pn(t),(0,Nt.DM)(n).forEach(t=>this.doLink(t,e))}doLink(e,t){var n;const r=e.reference;if(void 0===r._ref){r._ref=Sn;try{const t=this.getCandidate(e);if((0,ln.Zl)(t))r._ref=t;else if(r._nodeDescription=t,this.langiumDocuments().hasDocument(t.documentUri)){const n=this.loadAstNode(t);r._ref=null!=n?n:this.createLinkingError(e,t)}else r._ref=void 0}catch(i){console.error(`An error occurred while resolving reference to '${r.$refText}':`,i);const t=null!==(n=i.message)&&void 0!==n?n:String(i);r._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${r.$refText}': ${t}`})}t.references.push(r)}}unlink(e){for(const t of e.references)delete t._ref,delete t._nodeDescription;e.references=[]}getCandidate(e){const t=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return null!=t?t:this.createLinkingError(e)}buildReference(e,t,n,r){const i=this,s={$refNode:n,$refText:r,get ref(){var n;if((0,ln.ng)(this._ref))return this._ref;if((0,ln.Nr)(this._nodeDescription)){const n=i.loadAstNode(this._nodeDescription);this._ref=null!=n?n:i.createLinkingError({reference:s,container:e,property:t},this._nodeDescription)}else if(void 0===this._ref){this._ref=Sn;const r=(0,Nt.cQ)(e).$document,a=i.getLinkedNode({reference:s,container:e,property:t});if(a.error&&r&&r.state<$n.ComputedScopes)return this._ref=void 0;this._ref=null!==(n=a.node)&&void 0!==n?n:a.error,this._nodeDescription=a.descr,null==r||r.references.push(this)}else if(this._ref===Sn)throw new Error(`Cyclic reference resolution detected: ${i.astNodeLocator.getAstNodePath(e)}/${t} (symbol '${r}')`);return(0,ln.ng)(this._ref)?this._ref:void 0},get $nodeDescription(){return this._nodeDescription},get error(){return(0,ln.Zl)(this._ref)?this._ref:void 0}};return s}getLinkedNode(e){var t;try{const t=this.getCandidate(e);if((0,ln.Zl)(t))return{error:t};const n=this.loadAstNode(t);return n?{node:n,descr:t}:{descr:t,error:this.createLinkingError(e,t)}}catch(n){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,n);const r=null!==(t=n.message)&&void 0!==t?t:String(n);return{error:Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${e.reference.$refText}': ${r}`})}}}loadAstNode(e){if(e.node)return e.node;const t=this.langiumDocuments().getDocument(e.documentUri);return t?this.astNodeLocator.getAstNode(t.parseResult.value,e.path):void 0}createLinkingError(e,t){const n=(0,Nt.cQ)(e.container).$document;n&&n.state<$n.ComputedScopes&&console.warn(`Attempted reference resolution before document reached ComputedScopes state (${n.uri}).`);const r=this.reflection.getReferenceType(e);return Object.assign(Object.assign({},e),{message:`Could not resolve reference to ${r} named '${e.reference.$refText}'.`,targetDescription:t})}}class wn{getName(e){if(function(e){return"string"==typeof e.name}(e))return e.name}getNameNode(e){return(0,i.qO)(e.$cstNode,"name")}}var Cn;!function(e){e.basename=kn.A.basename,e.dirname=kn.A.dirname,e.extname=kn.A.extname,e.joinPath=kn.A.joinPath,e.resolvePath=kn.A.resolvePath,e.equals=function(e,t){return(null==e?void 0:e.toString())===(null==t?void 0:t.toString())},e.relative=function(e,t){const n="string"==typeof e?e:e.path,r="string"==typeof t?t:t.path,i=n.split("/").filter(e=>e.length>0),s=r.split("/").filter(e=>e.length>0);let a=0;for(;a<i.length&&i[a]===s[a];a++);return"../".repeat(i.length-a)+s.slice(a).join("/")},e.normalize=function(e){return kn.r.parse(e.toString()).toString()}}(Cn||(Cn={}));class Ln{constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){const t=(0,i.Rp)(e),n=e.astNode;if(t&&n){const r=n[t.feature];if((0,ln.A_)(r))return r.ref;if(Array.isArray(r))for(const t of r)if((0,ln.A_)(t)&&t.$refNode&&t.$refNode.offset<=e.offset&&t.$refNode.end>=e.end)return t.ref}if(n){const t=this.nameProvider.getNameNode(n);if(t&&(t===e||(0,r.pO)(e,t)))return n}}}findDeclarationNode(e){const t=this.findDeclaration(e);if(null==t?void 0:t.$cstNode){const e=this.nameProvider.getNameNode(t);return null!=e?e:t.$cstNode}}findReferences(e,t){const n=[];if(t.includeDeclaration){const t=this.getReferenceToSelf(e);t&&n.push(t)}let r=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(r=r.filter(e=>Cn.equals(e.sourceUri,t.documentUri))),n.push(...r),(0,Xt.Td)(n)}getReferenceToSelf(e){const t=this.nameProvider.getNameNode(e);if(t){const n=(0,Nt.YE)(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:(0,r.SX)(t),local:!0}}}}class bn{constructor(e){if(this.map=new Map,e)for(const[t,n]of e)this.add(t,n)}get size(){return Xt.iD.sum((0,Xt.Td)(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(void 0===t)return this.map.delete(e);{const n=this.map.get(e);if(n){const r=n.indexOf(t);if(r>=0)return 1===n.length?this.map.delete(e):n.splice(r,1),!0}return!1}}get(e){var t;return null!==(t=this.map.get(e))&&void 0!==t?t:[]}has(e,t){if(void 0===t)return this.map.has(e);{const n=this.map.get(e);return!!n&&n.indexOf(t)>=0}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,n)=>t.forEach(t=>e(t,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return(0,Xt.Td)(this.map.entries()).flatMap(([e,t])=>t.map(t=>[e,t]))}keys(){return(0,Xt.Td)(this.map.keys())}values(){return(0,Xt.Td)(this.map.values()).flat()}entriesGroupedByKey(){return(0,Xt.Td)(this.map.entries())}}class On{get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(const[t,n]of e)this.set(t,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){const t=this.map.get(e);return void 0!==t&&(this.map.delete(e),this.inverse.delete(t),!0)}}class _n{constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,t=cn.XO.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,t)}async computeExportsForNode(e,t,n=Nt.VN,r=cn.XO.None){const i=[];this.exportNode(e,i,t);for(const s of n(e))await pn(r),this.exportNode(s,i,t);return i}exportNode(e,t,n){const r=this.nameProvider.getName(e);r&&t.push(this.descriptions.createDescription(e,r,n))}async computeLocalScopes(e,t=cn.XO.None){const n=e.parseResult.value,r=new bn;for(const i of(0,Nt.Uo)(n))await pn(t),this.processNode(i,e,r);return r}processNode(e,t,n){const r=e.$container;if(r){const i=this.nameProvider.getName(e);i&&n.add(r,this.descriptions.createDescription(e,i,t))}}}class Pn{constructor(e,t,n){var r;this.elements=e,this.outerScope=t,this.caseInsensitive=null!==(r=null==n?void 0:n.caseInsensitive)&&void 0!==r&&r}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){const t=this.caseInsensitive?this.elements.find(t=>t.name.toLowerCase()===e.toLowerCase()):this.elements.find(t=>t.name===e);return t||(this.outerScope?this.outerScope.getElement(e):void 0)}}class Mn{constructor(e,t,n){var r;this.elements=new Map,this.caseInsensitive=null!==(r=null==n?void 0:n.caseInsensitive)&&void 0!==r&&r;for(const i of e){const e=this.caseInsensitive?i.name.toLowerCase():i.name;this.elements.set(e,i)}this.outerScope=t}getElement(e){const t=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(t);return n||(this.outerScope?this.outerScope.getElement(e):void 0)}getAllElements(){let e=(0,Xt.Td)(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}}class Dn{constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}}class Un extends Dn{constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){const n=t();return this.cache.set(e,n),n}}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}}class Fn extends Dn{constructor(e){super(),this.cache=new Map,this.converter=null!=e?e:e=>e}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,n){this.throwIfDisposed(),this.cacheForContext(e).set(t,n)}get(e,t,n){this.throwIfDisposed();const r=this.cacheForContext(e);if(r.has(t))return r.get(t);if(n){const e=n();return r.set(t,e),e}}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){const t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){const t=this.converter(e);let n=this.cache.get(t);return n||(n=new Map,this.cache.set(t,n)),n}}class Gn extends Un{constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((e,t)=>{t.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}class Kn{constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new Gn(e.shared)}getScope(e){const t=[],n=this.reflection.getReferenceType(e),r=(0,Nt.YE)(e.container).precomputedScopes;if(r){let i=e.container;do{const e=r.get(i);e.length>0&&t.push((0,Xt.Td)(e).filter(e=>this.reflection.isSubtype(e.type,n))),i=i.$container}while(i)}let i=this.getGlobalScope(n,e);for(let s=t.length-1;s>=0;s--)i=this.createScope(t[s],i);return i}createScope(e,t,n){return new Pn((0,Xt.Td)(e),t,n)}createScopeForNodes(e,t,n){const r=(0,Xt.Td)(e).map(e=>{const t=this.nameProvider.getName(e);if(t)return this.descriptions.createDescription(e,t)}).nonNullable();return new Pn(r,t,n)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new Mn(this.indexManager.allElements(e)))}}function Bn(e){return"object"==typeof e&&!!e&&("$ref"in e||"$error"in e)}class jn{constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){const n=null!=t?t:{},r=null==t?void 0:t.replacer,i=(e,t)=>this.replacer(e,t,n),s=r?(e,t)=>r(e,t,i):i;try{return this.currentDocument=(0,Nt.YE)(e),JSON.stringify(e,s,null==t?void 0:t.space)}finally{this.currentDocument=void 0}}deserialize(e,t){const n=null!=t?t:{},r=JSON.parse(e);return this.linkNode(r,r,n),r}replacer(e,t,{refText:n,sourceText:r,textRegions:i,comments:s,uriConverter:a}){var o,c,l,u;if(!this.ignoreProperties.has(e)){if((0,ln.A_)(t)){const e=t.ref,r=n?t.$refText:void 0;if(e){const n=(0,Nt.YE)(e);let i="";this.currentDocument&&this.currentDocument!==n&&(i=a?a(n.uri,t):n.uri.toString());return{$ref:`${i}#${this.astNodeLocator.getAstNodePath(e)}`,$refText:r}}return{$error:null!==(c=null===(o=t.error)||void 0===o?void 0:o.message)&&void 0!==c?c:"Could not resolve reference",$refText:r}}if((0,ln.ng)(t)){let n;if(i&&(n=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},t)),e&&!t.$document||!(null==n?void 0:n.$textRegion)||(n.$textRegion.documentURI=null===(l=this.currentDocument)||void 0===l?void 0:l.uri.toString())),r&&!e&&(null!=n||(n=Object.assign({},t)),n.$sourceText=null===(u=t.$cstNode)||void 0===u?void 0:u.text),s){null!=n||(n=Object.assign({},t));const e=this.commentProvider.getComment(t);e&&(n.$comment=e.replace(/\r/g,""))}return null!=n?n:t}return t}}addAstNodeRegionWithAssignmentsTo(e){const t=e=>({offset:e.offset,end:e.end,length:e.length,range:e.range});if(e.$cstNode){const n=(e.$textRegion=t(e.$cstNode)).assignments={};return Object.keys(e).filter(e=>!e.startsWith("$")).forEach(r=>{const s=(0,i.Bd)(e.$cstNode,r).map(t);0!==s.length&&(n[r]=s)}),e}}linkNode(e,t,n,r,i,s){for(const[o,c]of Object.entries(e))if(Array.isArray(c))for(let r=0;r<c.length;r++){const i=c[r];Bn(i)?c[r]=this.reviveReference(e,o,t,i,n):(0,ln.ng)(i)&&this.linkNode(i,t,n,e,o,r)}else Bn(c)?e[o]=this.reviveReference(e,o,t,c,n):(0,ln.ng)(c)&&this.linkNode(c,t,n,e,o);const a=e;a.$container=r,a.$containerProperty=i,a.$containerIndex=s}reviveReference(e,t,n,r,i){let s=r.$refText,a=r.$error;if(r.$ref){const e=this.getRefNode(n,r.$ref,i.uriConverter);if((0,ln.ng)(e))return s||(s=this.nameProvider.getName(e)),{$refText:null!=s?s:"",ref:e};a=e}if(a){const n={$refText:null!=s?s:""};return n.error={container:e,property:t,message:a,reference:n},n}}getRefNode(e,t,n){try{const r=t.indexOf("#");if(0===r){const n=this.astNodeLocator.getAstNode(e,t.substring(1));return n||"Could not resolve path: "+t}if(r<0){const e=n?n(t):kn.r.parse(t),r=this.langiumDocuments.getDocument(e);return r?r.parseResult.value:"Could not find document for URI: "+t}const i=n?n(t.substring(0,r)):kn.r.parse(t.substring(0,r)),s=this.langiumDocuments.getDocument(i);if(!s)return"Could not find document for URI: "+t;if(r===t.length-1)return s.parseResult.value;const a=this.astNodeLocator.getAstNode(s.parseResult.value,t.substring(r+1));return a||"Could not resolve URI: "+t}catch(r){return String(r)}}}class Vn{get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=null==e?void 0:e.workspace.TextDocuments}register(e){const t=e.LanguageMetaData;for(const n of t.fileExtensions)this.fileExtensionMap.has(n)&&console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${t.languageId}'.`),this.fileExtensionMap.set(n,e);this.languageIdMap.set(t.languageId,e),1===this.languageIdMap.size?this.singleton=e:this.singleton=void 0}getServices(e){var t,n;if(void 0!==this.singleton)return this.singleton;if(0===this.languageIdMap.size)throw new Error("The service registry is empty. Use `register` to register the services of a language.");const r=null===(n=null===(t=this.textDocuments)||void 0===t?void 0:t.get(e))||void 0===n?void 0:n.languageId;if(void 0!==r){const e=this.languageIdMap.get(r);if(e)return e}const i=Cn.extname(e),s=this.fileExtensionMap.get(i);if(!s)throw r?new Error(`The service registry contains no services for the extension '${i}' for language '${r}'.`):new Error(`The service registry contains no services for the extension '${i}'.`);return s}hasServices(e){try{return this.getServices(e),!0}catch(t){return!1}}get all(){return Array.from(this.languageIdMap.values())}}function Hn(e){return{code:e}}var Wn,zn;!function(e){e.all=["fast","slow","built-in"]}(Wn||(Wn={}));class Yn{constructor(e){this.entries=new bn,this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,t=this,n="fast"){if("built-in"===n)throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(const[r,i]of Object.entries(e)){const e=i;if(Array.isArray(e))for(const i of e){const e={check:this.wrapValidationException(i,t),category:n};this.addEntry(r,e)}else if("function"==typeof e){const i={check:this.wrapValidationException(e,t),category:n};this.addEntry(r,i)}else(0,Yt.d)(e)}}wrapValidationException(e,t){return async(n,r,i)=>{await this.handleException(()=>e.call(t,n,r,i),"An error occurred during validation",r,n)}}async handleException(e,t,n,r){try{await e()}catch(i){if(fn(i))throw i;console.error(`${t}:`,i),i instanceof Error&&i.stack&&console.error(i.stack);n("error",`${t}: ${i instanceof Error?i.message:String(i)}`,{node:r})}}addEntry(e,t){if("AstNode"!==e)for(const n of this.reflection.getAllSubTypes(e))this.entries.add(n,t);else this.entries.add("AstNode",t)}getChecks(e,t){let n=(0,Xt.Td)(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(n=n.filter(e=>t.includes(e.category))),n.map(e=>e.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,n){return async(r,i,s,a)=>{await this.handleException(()=>e.call(n,r,i,s,a),t,i,r)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}class Xn{constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,t={},n=cn.XO.None){const r=e.parseResult,i=[];if(await pn(n),!t.categories||t.categories.includes("built-in")){if(this.processLexingErrors(r,i,t),t.stopAfterLexingErrors&&i.some(e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===zn.LexingError}))return i;if(this.processParsingErrors(r,i,t),t.stopAfterParsingErrors&&i.some(e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===zn.ParsingError}))return i;if(this.processLinkingErrors(e,i,t),t.stopAfterLinkingErrors&&i.some(e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===zn.LinkingError}))return i}try{i.push(...await this.validateAst(r.value,t,n))}catch(s){if(fn(s))throw s;console.error("An error occurred during validation:",s)}return await pn(n),i}processLexingErrors(e,t,n){var r,i,s;const a=[...e.lexerErrors,...null!==(i=null===(r=e.lexerReport)||void 0===r?void 0:r.diagnostics)&&void 0!==i?i:[]];for(const o of a){const e=null!==(s=o.severity)&&void 0!==s?s:"error",n={severity:Qn(e),range:{start:{line:o.line-1,character:o.column-1},end:{line:o.line-1,character:o.column+o.length-1}},message:o.message,data:Zn(e),source:this.getSource()};t.push(n)}}processParsingErrors(e,t,n){for(const i of e.parserErrors){let e;if(isNaN(i.token.startOffset)){if("previousToken"in i){const t=i.previousToken;if(isNaN(t.startOffset)){const t={line:0,character:0};e={start:t,end:t}}else{const n={line:t.endLine-1,character:t.endColumn};e={start:n,end:n}}}}else e=(0,r.wf)(i.token);if(e){const n={severity:Qn("error"),range:e,message:i.message,data:Hn(zn.ParsingError),source:this.getSource()};t.push(n)}}}processLinkingErrors(e,t,n){for(const r of e.references){const e=r.error;if(e){const n={node:e.container,property:e.property,index:e.index,data:{code:zn.LinkingError,containerType:e.container.$type,property:e.property,refText:e.reference.$refText}};t.push(this.toDiagnostic("error",e.message,n))}}}async validateAst(e,t,n=cn.XO.None){const r=[],i=(e,t,n)=>{r.push(this.toDiagnostic(e,t,n))};return await this.validateAstBefore(e,t,i,n),await this.validateAstNodes(e,t,i,n),await this.validateAstAfter(e,t,i,n),r}async validateAstBefore(e,t,n,r=cn.XO.None){var i;const s=this.validationRegistry.checksBefore;for(const a of s)await pn(r),await a(e,n,null!==(i=t.categories)&&void 0!==i?i:[],r)}async validateAstNodes(e,t,n,r=cn.XO.None){await Promise.all((0,Nt.jm)(e).map(async e=>{await pn(r);const i=this.validationRegistry.getChecks(e.$type,t.categories);for(const t of i)await t(e,n,r)}))}async validateAstAfter(e,t,n,r=cn.XO.None){var i;const s=this.validationRegistry.checksAfter;for(const a of s)await pn(r),await a(e,n,null!==(i=t.categories)&&void 0!==i?i:[],r)}toDiagnostic(e,t,n){return{message:t,range:qn(n),severity:Qn(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}}function qn(e){if(e.range)return e.range;let t;return"string"==typeof e.property?t=(0,i.qO)(e.node.$cstNode,e.property,e.index):"string"==typeof e.keyword&&(t=(0,i.SS)(e.node.$cstNode,e.keyword,e.index)),null!=t||(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}function Qn(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}function Zn(e){switch(e){case"error":return Hn(zn.LexingError);case"warning":return Hn(zn.LexingWarning);case"info":return Hn(zn.LexingInfo);case"hint":return Hn(zn.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}!function(e){e.LexingError="lexing-error",e.LexingWarning="lexing-warning",e.LexingInfo="lexing-info",e.LexingHint="lexing-hint",e.ParsingError="parsing-error",e.LinkingError="linking-error"}(zn||(zn={}));class Jn{constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,n){const i=null!=n?n:(0,Nt.YE)(e);null!=t||(t=this.nameProvider.getName(e));const s=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${s} has no name.`);let a;const o=()=>{var t;return null!=a?a:a=(0,r.SX)(null!==(t=this.nameProvider.getNameNode(e))&&void 0!==t?t:e.$cstNode)};return{node:e,name:t,get nameSegment(){return o()},selectionSegment:(0,r.SX)(e.$cstNode),type:e.$type,documentUri:i.uri,path:s}}}class er{constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=cn.XO.None){const n=[],r=e.parseResult.value;for(const i of(0,Nt.jm)(r))await pn(t),(0,Nt.DM)(i).filter(e=>!(0,ln.Zl)(e)).forEach(e=>{const t=this.createDescription(e);t&&n.push(t)});return n}createDescription(e){const t=e.reference.$nodeDescription,n=e.reference.$refNode;if(!t||!n)return;const i=(0,Nt.YE)(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:t.documentUri,targetPath:t.path,segment:(0,r.SX)(n),local:Cn.equals(t.documentUri,i)}}}class tr{constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){const t=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return t+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return void 0!==t?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((e,t)=>{if(!e||0===t.length)return e;const n=t.indexOf(this.indexSeparator);if(n>0){const r=t.substring(0,n),i=parseInt(t.substring(n+1)),s=e[r];return null==s?void 0:s[i]}return e[t]},e)}}var nr,rr=n(40436);class ir{constructor(e){this._ready=new mn,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new rr.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var t,n;this.workspaceConfig=null!==(n=null===(t=e.capabilities.workspace)||void 0===t?void 0:t.configuration)&&void 0!==n&&n}async initialized(e){if(this.workspaceConfig){if(e.register){const t=this.serviceRegistry.all;e.register({section:t.map(e=>this.toSectionName(e.LanguageMetaData.languageId))})}if(e.fetchConfiguration){const t=this.serviceRegistry.all.map(e=>({section:this.toSectionName(e.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(t);t.forEach((e,t)=>{this.updateSectionConfiguration(e.section,n[t])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(t=>{const n=e.settings[t];this.updateSectionConfiguration(t,n),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:n})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;const n=this.toSectionName(e);if(this.settings[n])return this.settings[n][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}!function(e){e.create=function(e){return{dispose:async()=>await e()}}}(nr||(nr={}));class sr{constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new bn,this.documentPhaseListeners=new bn,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=$n.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},n=cn.XO.None){var r,i;for(const s of e){const e=s.uri.toString();if(s.state===$n.Validated){if("boolean"==typeof t.validation&&t.validation)s.state=$n.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(e);else if("object"==typeof t.validation){const n=this.buildState.get(e),a=null===(r=null==n?void 0:n.result)||void 0===r?void 0:r.validationChecks;if(a){const r=(null!==(i=t.validation.categories)&&void 0!==i?i:Wn.all).filter(e=>!a.includes(e));r.length>0&&(this.buildState.set(e,{completed:!1,options:{validation:Object.assign(Object.assign({},t.validation),{categories:r})},result:n.result}),s.state=$n.IndexedReferences)}}}else this.buildState.delete(e)}this.currentState=$n.Changed,await this.emitUpdate(e.map(e=>e.uri),[]),await this.buildDocuments(e,t,n)}async update(e,t,n=cn.XO.None){this.currentState=$n.Changed;for(const s of t)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(const s of e){if(!this.langiumDocuments.invalidateDocument(s)){const e=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);e.state=$n.Changed,this.langiumDocuments.addDocument(e)}this.buildState.delete(s.toString())}const r=(0,Xt.Td)(e).concat(t).map(e=>e.toString()).toSet();this.langiumDocuments.all.filter(e=>!r.has(e.uri.toString())&&this.shouldRelink(e,r)).forEach(e=>{this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e),e.state=Math.min(e.state,$n.ComputedScopes),e.diagnostics=void 0}),await this.emitUpdate(e,t),await pn(n);const i=this.sortDocuments(this.langiumDocuments.all.filter(e=>{var t;return e.state<$n.Linked||!(null===(t=this.buildState.get(e.uri.toString()))||void 0===t?void 0:t.completed)}).toArray());await this.buildDocuments(i,this.updateBuildOptions,n)}async emitUpdate(e,t){await Promise.all(this.updateListeners.map(n=>n(e,t)))}sortDocuments(e){let t=0,n=e.length-1;for(;t<n;){for(;t<e.length&&this.hasTextDocument(e[t]);)t++;for(;n>=0&&!this.hasTextDocument(e[n]);)n--;t<n&&([e[t],e[n]]=[e[n],e[t]])}return e}hasTextDocument(e){var t;return Boolean(null===(t=this.textDocuments)||void 0===t?void 0:t.get(e.uri))}shouldRelink(e,t){return!!e.references.some(e=>void 0!==e.error)||this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),nr.create(()=>{const t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}async buildDocuments(e,t,n){this.prepareBuild(e,t),await this.runCancelable(e,$n.Parsed,n,e=>this.langiumDocumentFactory.update(e,n)),await this.runCancelable(e,$n.IndexedContent,n,e=>this.indexManager.updateContent(e,n)),await this.runCancelable(e,$n.ComputedScopes,n,async e=>{const t=this.serviceRegistry.getServices(e.uri).references.ScopeComputation;e.precomputedScopes=await t.computeLocalScopes(e,n)}),await this.runCancelable(e,$n.Linked,n,e=>this.serviceRegistry.getServices(e.uri).references.Linker.link(e,n)),await this.runCancelable(e,$n.IndexedReferences,n,e=>this.indexManager.updateReferences(e,n));const r=e.filter(e=>this.shouldValidate(e));await this.runCancelable(r,$n.Validated,n,e=>this.validate(e,n));for(const i of e){const e=this.buildState.get(i.uri.toString());e&&(e.completed=!0)}}prepareBuild(e,t){for(const n of e){const e=n.uri.toString(),r=this.buildState.get(e);r&&!r.completed||this.buildState.set(e,{completed:!1,options:t,result:null==r?void 0:r.result})}}async runCancelable(e,t,n,r){const i=e.filter(e=>e.state<t);for(const a of i)await pn(n),await r(a),a.state=t,await this.notifyDocumentPhase(a,t,n);const s=e.filter(e=>e.state===t);await this.notifyBuildPhase(s,t,n),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),nr.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),nr.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,n){let r;if(t&&"path"in t?r=t:n=t,null!=n||(n=cn.XO.None),r){const t=this.langiumDocuments.getDocument(r);if(t&&t.state>e)return Promise.resolve(r)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(hn):new Promise((t,i)=>{const s=this.onBuildPhase(e,()=>{if(s.dispose(),a.dispose(),r){const e=this.langiumDocuments.getDocument(r);t(null==e?void 0:e.uri)}else t(void 0)}),a=n.onCancellationRequested(()=>{s.dispose(),a.dispose(),i(hn)})})}async notifyDocumentPhase(e,t,n){const r=this.documentPhaseListeners.get(t).slice();for(const s of r)try{await s(e,n)}catch(i){if(!fn(i))throw i}}async notifyBuildPhase(e,t,n){if(0===e.length)return;const r=this.buildPhaseListeners.get(t).slice();for(const i of r)await pn(n),await i(e,n)}shouldValidate(e){return Boolean(this.getBuildOptions(e).validation)}async validate(e,t){var n,r;const i=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,a="object"==typeof s?s:void 0,o=await i.validateDocument(e,a,t);e.diagnostics?e.diagnostics.push(...o):e.diagnostics=o;const c=this.buildState.get(e.uri.toString());if(c){null!==(n=c.result)&&void 0!==n||(c.result={});const e=null!==(r=null==a?void 0:a.categories)&&void 0!==r?r:Wn.all;c.result.validationChecks?c.result.validationChecks.push(...e):c.result.validationChecks=[...e]}}getBuildOptions(e){var t,n;return null!==(n=null===(t=this.buildState.get(e.uri.toString()))||void 0===t?void 0:t.options)&&void 0!==n?n:{}}}class ar{constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new Fn,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){const n=(0,Nt.YE)(e).uri,r=[];return this.referenceIndex.forEach(e=>{e.forEach(e=>{Cn.equals(e.targetUri,n)&&e.targetPath===t&&r.push(e)})}),(0,Xt.Td)(r)}allElements(e,t){let n=(0,Xt.Td)(this.symbolIndex.keys());return t&&(n=n.filter(e=>!t||t.has(e))),n.map(t=>this.getFileDescriptions(t,e)).flat()}getFileDescriptions(e,t){var n;if(!t)return null!==(n=this.symbolIndex.get(e))&&void 0!==n?n:[];const r=this.symbolByTypeIndex.get(e,t,()=>{var n;return(null!==(n=this.symbolIndex.get(e))&&void 0!==n?n:[]).filter(e=>this.astReflection.isSubtype(e.type,t))});return r}remove(e){const t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t),this.referenceIndex.delete(t)}async updateContent(e,t=cn.XO.None){const n=this.serviceRegistry.getServices(e.uri),r=await n.references.ScopeComputation.computeExports(e,t),i=e.uri.toString();this.symbolIndex.set(i,r),this.symbolByTypeIndex.clear(i)}async updateReferences(e,t=cn.XO.None){const n=this.serviceRegistry.getServices(e.uri),r=await n.workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),r)}isAffected(e,t){const n=this.referenceIndex.get(e.uri.toString());return!!n&&n.some(e=>!e.local&&t.has(e.targetUri.toString()))}}class or{constructor(e){this.initialBuildOptions={},this._ready=new mn,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var t;this.folders=null!==(t=e.workspaceFolders)&&void 0!==t?t:void 0}initialized(e){return this.mutex.write(e=>{var t;return this.initializeWorkspace(null!==(t=this.folders)&&void 0!==t?t:[],e)})}async initializeWorkspace(e,t=cn.XO.None){const n=await this.performStartup(e);await pn(t),await this.documentBuilder.build(n,this.initialBuildOptions,t)}async performStartup(e){const t=this.serviceRegistry.all.flatMap(e=>e.LanguageMetaData.fileExtensions),n=[],r=e=>{n.push(e),this.langiumDocuments.hasDocument(e.uri)||this.langiumDocuments.addDocument(e)};return await this.loadAdditionalDocuments(e,r),await Promise.all(e.map(e=>[e,this.getRootFolder(e)]).map(async e=>this.traverseFolder(...e,t,r))),this._ready.resolve(),n}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return kn.r.parse(e.uri)}async traverseFolder(e,t,n,r){const i=await this.fileSystemProvider.readDirectory(t);await Promise.all(i.map(async t=>{if(this.includeEntry(e,t,n))if(t.isDirectory)await this.traverseFolder(e,t.uri,n,r);else if(t.isFile){const e=await this.langiumDocuments.getOrCreateDocument(t.uri);r(e)}}))}includeEntry(e,t,n){const r=Cn.basename(t.uri);if(r.startsWith("."))return!1;if(t.isDirectory)return"node_modules"!==r&&"out"!==r;if(t.isFile){const e=Cn.extname(t.uri);return n.includes(e)}return!1}}class cr{buildUnexpectedCharactersMessage(e,t,n,r,i){return o.PW.buildUnexpectedCharactersMessage(e,t,n,r,i)}buildUnableToPopLexerModeMessage(e){return o.PW.buildUnableToPopLexerModeMessage(e)}}const lr={mode:"full"};class ur{constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;const t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);const n=hr(t)?Object.values(t):t,r="production"===e.LanguageMetaData.mode;this.chevrotainLexer=new o.JG(n,{positionTracking:"full",skipValidations:r,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=lr){var n,r,i;const s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:null!==(n=s.groups.hidden)&&void 0!==n?n:[],report:null===(i=(r=this.tokenBuilder).flushLexingReport)||void 0===i?void 0:i.call(r,e)}}toTokenTypeDictionary(e){if(hr(e))return e;const t=dr(e)?Object.values(e.modes).flat():e,n={};return t.forEach(e=>n[e.name]=e),n}}function dr(e){return e&&"modes"in e&&"defaultMode"in e}function hr(e){return!function(e){return Array.isArray(e)&&(0===e.length||"name"in e[0])}(e)&&!dr(e)}function fr(e,t,n){let r,i;"string"==typeof e?(i=t,r=n):(i=e.range.start,r=t),i||(i=ce.create(0,0));const s=function(e){var t,n,r;const i=[];let s=e.position.line,a=e.position.character;for(let o=0;o<e.lines.length;o++){const c=0===o,l=o===e.lines.length-1;let u=e.lines[o],d=0;if(c&&e.options.start){const n=null===(t=e.options.start)||void 0===t?void 0:t.exec(u);n&&(d=n.index+n[0].length)}else{const t=null===(n=e.options.line)||void 0===n?void 0:n.exec(u);t&&(d=t.index+t[0].length)}if(l){const t=null===(r=e.options.end)||void 0===r?void 0:r.exec(u);t&&(u=u.substring(0,t.index))}u=u.substring(0,Rr(u));if(vr(u,d)>=u.length){if(i.length>0){const e=ce.create(s,a);i.push({type:"break",content:"",range:le.create(e,e)})}}else{mr.lastIndex=d;const e=mr.exec(u);if(e){const t=e[0],n=e[1],r=ce.create(s,a+d),o=ce.create(s,a+d+t.length);i.push({type:"tag",content:n,range:le.create(r,o)}),d+=t.length,d=vr(u,d)}if(d<u.length){const e=u.substring(d),t=Array.from(e.matchAll(gr));i.push(...yr(t,e,s,a+d))}}s++,a=0}if(i.length>0&&"break"===i[i.length-1].type)return i.slice(0,-1);return i}({lines:pr(e),position:i,options:Sr(r)});return function(e){var t,n,r,i;const s=ce.create(e.position.line,e.position.character);if(0===e.tokens.length)return new wr([],le.create(s,s));const a=[];for(;e.index<e.tokens.length;){const t=Er(e,a[a.length-1]);t&&a.push(t)}const o=null!==(n=null===(t=a[0])||void 0===t?void 0:t.range.start)&&void 0!==n?n:s,c=null!==(i=null===(r=a[a.length-1])||void 0===r?void 0:r.range.end)&&void 0!==i?i:s;return new wr(a,le.create(o,c))}({index:0,tokens:s,position:i})}function pr(e){let t="";t="string"==typeof e?e:e.text;return t.split(s.TH)}const mr=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,gr=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;function yr(e,t,n,r){const i=[];if(0===e.length){const e=ce.create(n,r),s=ce.create(n,r+t.length);i.push({type:"text",content:t,range:le.create(e,s)})}else{let s=0;for(const o of e){const e=o.index,a=t.substring(s,e);a.length>0&&i.push({type:"text",content:t.substring(s,e),range:le.create(ce.create(n,s+r),ce.create(n,e+r))});let c=a.length+1;const l=o[1];if(i.push({type:"inline-tag",content:l,range:le.create(ce.create(n,s+c+r),ce.create(n,s+c+l.length+r))}),c+=l.length,4===o.length){c+=o[2].length;const e=o[3];i.push({type:"text",content:e,range:le.create(ce.create(n,s+c+r),ce.create(n,s+c+e.length+r))})}else i.push({type:"text",content:"",range:le.create(ce.create(n,s+c+r),ce.create(n,s+c+r))});s=e+o[0].length}const a=t.substring(s);a.length>0&&i.push({type:"text",content:a,range:le.create(ce.create(n,s+r),ce.create(n,s+r+a.length))})}return i}const Ar=/\S/,Tr=/\s*$/;function vr(e,t){const n=e.substring(t).match(Ar);return n?t+n.index:e.length}function Rr(e){const t=e.match(Tr);if(t&&"number"==typeof t.index)return t.index}function Er(e,t){const n=e.tokens[e.index];return"tag"===n.type?xr(e,!1):"text"===n.type||"inline-tag"===n.type?$r(e):(function(e,t){if(t){const n=new br("",e.range);"inlines"in t?t.inlines.push(n):t.content.inlines.push(n)}}(n,t),void e.index++)}function $r(e){let t=e.tokens[e.index];const n=t;let r=t;const i=[];for(;t&&"break"!==t.type&&"tag"!==t.type;)i.push(kr(e)),r=t,t=e.tokens[e.index];return new Lr(i,le.create(n.range.start,r.range.end))}function kr(e){return"inline-tag"===e.tokens[e.index].type?xr(e,!0):Ir(e)}function xr(e,t){const n=e.tokens[e.index++],r=n.content.substring(1),i=e.tokens[e.index];if("text"===(null==i?void 0:i.type)){if(t){const i=Ir(e);return new Cr(r,new Lr([i],i.range),t,le.create(n.range.start,i.range.end))}{const i=$r(e);return new Cr(r,i,t,le.create(n.range.start,i.range.end))}}{const e=n.range;return new Cr(r,new Lr([],e),t,e)}}function Ir(e){const t=e.tokens[e.index++];return new br(t.content,t.range)}function Sr(e){if(!e)return Sr({start:"/**",end:"*/",line:"*"});const{start:t,end:n,line:r}=e;return{start:Nr(t,!0),end:Nr(n,!1),line:Nr(r,!0)}}function Nr(e,t){if("string"==typeof e||"object"==typeof e){const n="string"==typeof e?(0,s.Nt)(e):e.source;return t?new RegExp(`^\\s*${n}`):new RegExp(`\\s*${n}\\s*$`)}return e}class wr{constructor(e,t){this.elements=e,this.range=t}getTag(e){return this.getAllTags().find(t=>t.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(const t of this.elements)if(0===e.length)e=t.toString();else{const n=t.toString();e+=Or(e)+n}return e.trim()}toMarkdown(e){let t="";for(const n of this.elements)if(0===t.length)t=n.toMarkdown(e);else{const r=n.toMarkdown(e);t+=Or(t)+r}return t.trim()}}class Cr{constructor(e,t,n,r){this.name=e,this.content=t,this.inline=n,this.range=r}toString(){let e=`@${this.name}`;const t=this.content.toString();return 1===this.content.inlines.length?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e}\n${t}`),this.inline?`{${e}}`:e}toMarkdown(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.renderTag)||void 0===t?void 0:t.call(e,this))&&void 0!==n?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){const t=this.content.toMarkdown(e);if(this.inline){const n=function(e,t,n){var r,i;if("linkplain"===e||"linkcode"===e||"link"===e){const s=t.indexOf(" ");let a=t;if(s>0){const e=vr(t,s);a=t.substring(e),t=t.substring(0,s)}("linkcode"===e||"link"===e&&"code"===n.link)&&(a=`\`${a}\``);const o=null!==(i=null===(r=n.renderLink)||void 0===r?void 0:r.call(n,t,a))&&void 0!==i?i:function(e,t){try{return kn.r.parse(e,!0),`[${t}](${e})`}catch(r){return e}}(t,a);return o}return}(this.name,t,null!=e?e:{});if("string"==typeof n)return n}let n="";"italic"===(null==e?void 0:e.tag)||void 0===(null==e?void 0:e.tag)?n="*":"bold"===(null==e?void 0:e.tag)?n="**":"bold-italic"===(null==e?void 0:e.tag)&&(n="***");let r=`${n}@${this.name}${n}`;return 1===this.content.inlines.length?r=`${r} \u2014 ${t}`:this.content.inlines.length>1&&(r=`${r}\n${t}`),this.inline?`{${r}}`:r}}class Lr{constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;t<this.inlines.length;t++){const n=this.inlines[t],r=this.inlines[t+1];e+=n.toString(),r&&r.range.start.line>n.range.start.line&&(e+="\n")}return e}toMarkdown(e){let t="";for(let n=0;n<this.inlines.length;n++){const r=this.inlines[n],i=this.inlines[n+1];t+=r.toMarkdown(e),i&&i.range.start.line>r.range.start.line&&(t+="\n")}return t}}class br{constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}}function Or(e){return e.endsWith("\n")?"\n":"\n\n"}class _r{constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){const t=this.commentProvider.getComment(e);if(t&&function(e,t){const n=Sr(t),r=pr(e);if(0===r.length)return!1;const i=r[0],s=r[r.length-1],a=n.start,o=n.end;return Boolean(null==a?void 0:a.exec(i))&&Boolean(null==o?void 0:o.exec(s))}(t)){return fr(t).toMarkdown({renderLink:(t,n)=>this.documentationLinkRenderer(e,t,n),renderTag:t=>this.documentationTagRenderer(e,t)})}}documentationLinkRenderer(e,t,n){var r;const i=null!==(r=this.findNameInPrecomputedScopes(e,t))&&void 0!==r?r:this.findNameInGlobalScope(e,t);if(i&&i.nameSegment){const e=i.nameSegment.range.start.line+1,t=i.nameSegment.range.start.character+1;return`[${n}](${i.documentUri.with({fragment:`L${e},${t}`}).toString()})`}}documentationTagRenderer(e,t){}findNameInPrecomputedScopes(e,t){const n=(0,Nt.YE)(e).precomputedScopes;if(!n)return;let r=e;do{const e=n.get(r).find(e=>e.name===t);if(e)return e;r=r.$container}while(r)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(e=>e.name===t)}}class Pr{constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var t;return function(e){return"string"==typeof e.$comment}(e)?e.$comment:null===(t=(0,r.v)(e.$cstNode,this.grammarConfig().multilineCommentRules))||void 0===t?void 0:t.text}}class Mr{constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}}class Dr{constructor(){this.previousTokenSource=new cn.Qi,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();const t=(un=performance.now(),new cn.Qi);return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,n=cn.XO.None){const r=new mn,i={action:t,deferred:r,cancellationToken:n};return e.push(i),this.performNextOperation(),r.promise}async performNextOperation(){if(!this.done)return;const e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else{if(!(this.readQueue.length>0))return;e.push(...this.readQueue.splice(0,this.readQueue.length))}this.done=!1,await Promise.all(e.map(async({action:e,deferred:t,cancellationToken:n})=>{try{const r=await Promise.resolve().then(()=>e(n));t.resolve(r)}catch(r){fn(r)?t.resolve(void 0):t.reject(r)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}class Ur{constructor(e){this.grammarElementIdMap=new On,this.tokenTypeIdMap=new On,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(e=>Object.assign(Object.assign({},e),{message:e.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){const t=new Map,n=new Map;for(const r of(0,Nt.jm)(e))t.set(r,{});if(e.$cstNode)for(const i of(0,r.NS)(e.$cstNode))n.set(i,{});return{astNodes:t,cstNodes:n}}dehydrateAstNode(e,t){const n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,void 0!==e.$cstNode&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(const[r,i]of Object.entries(e))if(!r.startsWith("$"))if(Array.isArray(i)){const e=[];n[r]=e;for(const n of i)(0,ln.ng)(n)?e.push(this.dehydrateAstNode(n,t)):(0,ln.A_)(n)?e.push(this.dehydrateReference(n,t)):e.push(n)}else(0,ln.ng)(i)?n[r]=this.dehydrateAstNode(i,t):(0,ln.A_)(i)?n[r]=this.dehydrateReference(i,t):void 0!==i&&(n[r]=i);return n}dehydrateReference(e,t){const n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=t.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,t){const n=t.cstNodes.get(e);return(0,ln.br)(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=t.astNodes.get(e.astNode),(0,ln.mD)(e)?n.content=e.content.map(e=>this.dehydrateCstNode(e,t)):(0,ln.FC)(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){const t=e.value,n=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,n)}}createHydrationContext(e){const t=new Map,n=new Map;for(const r of(0,Nt.jm)(e))t.set(r,{});let i;if(e.$cstNode)for(const s of(0,r.NS)(e.$cstNode)){let e;"fullText"in s?(e=new Dt(s.fullText),i=e):"content"in s?e=new Pt:"tokenType"in s&&(e=this.hydrateCstLeafNode(s)),e&&(n.set(s,e),e.root=i)}return{astNodes:t,cstNodes:n}}hydrateAstNode(e,t){const n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=t.cstNodes.get(e.$cstNode));for(const[r,i]of Object.entries(e))if(!r.startsWith("$"))if(Array.isArray(i)){const e=[];n[r]=e;for(const s of i)(0,ln.ng)(s)?e.push(this.setParent(this.hydrateAstNode(s,t),n)):(0,ln.A_)(s)?e.push(this.hydrateReference(s,n,r,t)):e.push(s)}else(0,ln.ng)(i)?n[r]=this.setParent(this.hydrateAstNode(i,t),n):(0,ln.A_)(i)?n[r]=this.hydrateReference(i,n,r,t):void 0!==i&&(n[r]=i);return n}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,n,r){return this.linker.buildReference(t,n,r.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,n=0){const r=t.cstNodes.get(e);if("number"==typeof e.grammarSource&&(r.grammarSource=this.getGrammarElement(e.grammarSource)),r.astNode=t.astNodes.get(e.astNode),(0,ln.mD)(r))for(const i of e.content){const e=this.hydrateCstNode(i,t,n++);r.content.push(e)}return r}hydrateCstLeafNode(e){const t=this.getTokenType(e.tokenType),n=e.offset,r=e.length,i=e.startLine,s=e.startColumn,a=e.endLine,o=e.endColumn,c=e.hidden;return new _t(n,r,{start:{line:i,character:s},end:{line:a,character:o}},t,c)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return 0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap();return this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(const t of(0,Nt.jm)(this.grammar))(0,a.r1)(t)&&this.grammarElementIdMap.set(t,e++)}}function Fr(e){return{documentation:{CommentProvider:e=>new Pr(e),DocumentationProvider:e=>new _r(e)},parser:{AsyncParser:e=>new Mr(e),GrammarConfig:e=>function(e){const t=[],n=e.Grammar;for(const r of n.rules)(0,a.rE)(r)&&(0,i.eb)(r)&&(0,s.lU)((0,i.S)(r))&&t.push(r.name);return{multilineCommentRules:t,nameRegexp:r.El}}(e),LangiumParser:e=>sn(e),CompletionParser:e=>function(e){const t=e.Grammar,n=e.parser.Lexer,r=new Ht(e);return qt(t,r,n.definition),r.finalize(),r}(e),ValueConverter:()=>new on.d,TokenBuilder:()=>new an.Q,Lexer:e=>new ur(e),ParserErrorMessageProvider:()=>new Vt,LexerErrorMessageProvider:()=>new cr},workspace:{AstNodeLocator:()=>new tr,AstNodeDescriptionProvider:e=>new Jn(e),ReferenceDescriptionProvider:e=>new er(e)},references:{Linker:e=>new Nn(e),NameProvider:()=>new wn,ScopeProvider:e=>new Kn(e),ScopeComputation:e=>new _n(e),References:e=>new Ln(e)},serializer:{Hydrator:e=>new Ur(e),JsonSerializer:e=>new jn(e)},validation:{DocumentValidator:e=>new Xn(e),ValidationRegistry:e=>new Yn(e)},shared:()=>e.shared}}function Gr(e){return{ServiceRegistry:e=>new Vn(e),workspace:{LangiumDocuments:e=>new In(e),LangiumDocumentFactory:e=>new xn(e),DocumentBuilder:e=>new sr(e),IndexManager:e=>new ar(e),WorkspaceManager:e=>new or(e),FileSystemProvider:t=>e.fileSystemProvider(t),WorkspaceLock:()=>new Dr,ConfigurationProvider:e=>new ir(e)}}}},11921:(e,t,n)=>{function r(e){return e.charCodeAt(0)}function i(e,t){Array.isArray(e)?e.forEach(function(e){t.push(e)}):t.push(e)}function s(e,t){if(!0===e[t])throw"duplicate flag "+t;e[t];e[t]=!0}function a(e){if(void 0===e)throw Error("Internal Error - Should never get here!");return!0}function o(){throw Error("Internal Error - Should never get here!")}function c(e){return"Character"===e.type}n.d(t,{z:()=>g,H:()=>m});const l=[];for(let y=r("0");y<=r("9");y++)l.push(y);const u=[r("_")].concat(l);for(let y=r("a");y<=r("z");y++)u.push(y);for(let y=r("A");y<=r("Z");y++)u.push(y);const d=[r(" "),r("\f"),r("\n"),r("\r"),r("\t"),r("\v"),r("\t"),r("\xa0"),r("\u1680"),r("\u2000"),r("\u2001"),r("\u2002"),r("\u2003"),r("\u2004"),r("\u2005"),r("\u2006"),r("\u2007"),r("\u2008"),r("\u2009"),r("\u200a"),r("\u2028"),r("\u2029"),r("\u202f"),r("\u205f"),r("\u3000"),r("\ufeff")],h=/[0-9a-fA-F]/,f=/[0-9]/,p=/[1-9]/;class m{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");const t=this.disjunction();this.consumeChar("/");const n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":s(n,"global");break;case"i":s(n,"ignoreCase");break;case"m":s(n,"multiLine");break;case"u":s(n,"unicode");break;case"y":s(n,"sticky")}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:t,loc:this.loc(0)}}disjunction(){const e=[],t=this.idx;for(e.push(this.alternative());"|"===this.peekChar();)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){const e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":let t;switch(this.consumeChar("?"),this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead"}a(t);const n=this.disjunction();return this.consumeChar(")"),{type:t,value:n,loc:this.loc(e)}}return o()}quantifier(e=!1){let t;const n=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":const n=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:n,atMost:n};break;case",":let e;this.isDigit()?(e=this.integerIncludingZero(),t={atLeast:n,atMost:e}):t={atLeast:n,atMost:1/0},this.consumeChar("}")}if(!0===e&&void 0===t)return;a(t)}if(!0!==e||void 0!==t)return a(t)?("?"===this.peekChar(0)?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(n),t):void 0}atom(){let e;const t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group()}return void 0===e&&this.isPatternCharacter()&&(e=this.patternCharacter()),a(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):o()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[r("\n"),r("\r"),r("\u2028"),r("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=l;break;case"D":e=l,t=!0;break;case"s":e=d;break;case"S":e=d,t=!0;break;case"w":e=u;break;case"W":e=u,t=!0}return a(e)?{type:"Set",value:e,complement:t}:o()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=r("\f");break;case"n":e=r("\n");break;case"r":e=r("\r");break;case"t":e=r("\t");break;case"v":e=r("\v")}return a(e)?{type:"Character",value:e}:o()}controlLetterEscapeAtom(){this.consumeChar("c");const e=this.popChar();if(!1===/[a-zA-Z]/.test(e))throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:r("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){return{type:"Character",value:r(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case"\n":case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:return{type:"Character",value:r(this.popChar())}}}characterClass(){const e=[];let t=!1;for(this.consumeChar("["),"^"===this.peekChar(0)&&(this.consumeChar("^"),t=!0);this.isClassAtom();){const t=this.classAtom();t.type;if(c(t)&&this.isRangeDash()){this.consumeChar("-");const n=this.classAtom();n.type;if(c(n)){if(n.value<t.value)throw Error("Range out of order in character class");e.push({from:t.value,to:n.value})}else i(t.value,e),e.push(r("-")),i(n.value,e)}else i(t.value,e)}return this.consumeChar("]"),{type:"Set",complement:t,value:e}}classAtom(){switch(this.peekChar()){case"]":case"\n":case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}}classEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:r("\b")};case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}group(){let e=!0;if(this.consumeChar("("),"?"===this.peekChar(0))this.consumeChar("?"),this.consumeChar(":"),e=!1;else this.groupIdx++;const t=this.disjunction();this.consumeChar(")");const n={type:"Group",capturing:e,value:t};return e&&(n.idx=this.groupIdx),n}positiveInteger(){let e=this.popChar();if(!1===p.test(e))throw Error("Expecting a positive integer");for(;f.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}integerIncludingZero(){let e=this.popChar();if(!1===f.test(e))throw Error("Expecting an integer");for(;f.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}patternCharacter(){const e=this.popChar();switch(e){case"\n":case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:r(e)}}}isRegExpFlag(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}}isRangeDash(){return"-"===this.peekChar()&&this.isClassAtom(1)}isDigit(){return f.test(this.peekChar(0))}isClassAtom(e=0){switch(this.peekChar(e)){case"]":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}isTerm(){return this.isAtom()||this.isAssertion()}isAtom(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case".":case"\\":case"[":case"(":return!0;default:return!1}}isAssertion(){switch(this.peekChar(0)){case"^":case"$":return!0;case"\\":switch(this.peekChar(1)){case"b":case"B":return!0;default:return!1}case"(":return"?"===this.peekChar(1)&&("="===this.peekChar(2)||"!"===this.peekChar(2));default:return!1}}isQuantifier(){const e=this.saveState();try{return void 0!==this.quantifier(!0)}catch(t){return!1}finally{this.restoreState(e)}}isPatternCharacter(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(e){let t="";for(let n=0;n<e;n++){const e=this.popChar();if(!1===h.test(e))throw Error("Expecting a HexDecimal digits");t+=e}return{type:"Character",value:parseInt(t,16)}}peekChar(e=0){return this.input[this.idx+e]}popChar(){const e=this.peekChar(0);return this.consumeChar(void 0),e}consumeChar(e){if(void 0!==e&&this.input[this.idx]!==e)throw Error("Expected: '"+e+"' but found: '"+this.input[this.idx]+"' at offset: "+this.idx);if(this.idx>=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}class g{visitChildren(e){for(const t in e){const n=e[t];e.hasOwnProperty(t)&&(void 0!==n.type?this.visit(n):Array.isArray(n)&&n.forEach(e=>{this.visit(e)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e)}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}},12223:(e,t,n)=>{n.d(t,{d:()=>a});var r,i=n(34813),s=n(29520);class a{convert(e,t){let n=t.grammarSource;if((0,i._c)(n)&&(n=(0,s.g4)(n)),(0,i.$g)(n)){const r=n.rule.ref;if(!r)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(r,e,t)}return e}runConverter(e,t,n){var i;switch(e.name.toUpperCase()){case"INT":return r.convertInt(t);case"STRING":return r.convertString(t);case"ID":return r.convertID(t)}switch(null===(i=(0,s.P3)(e))||void 0===i?void 0:i.toLowerCase()){case"number":return r.convertNumber(t);case"boolean":return r.convertBoolean(t);case"bigint":return r.convertBigint(t);case"date":return r.convertDate(t);default:return t}}}!function(e){function t(e){switch(e){case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";case"v":return"\v";case"0":return"\0";default:return e}}e.convertString=function(e){let n="";for(let r=1;r<e.length-1;r++){const i=e.charAt(r);if("\\"===i){n+=t(e.charAt(++r))}else n+=i}return n},e.convertID=function(e){return"^"===e.charAt(0)?e.substring(1):e},e.convertInt=function(e){return parseInt(e)},e.convertBigint=function(e){return BigInt(e)},e.convertDate=function(e){return new Date(e)},e.convertNumber=function(e){return Number(e)},e.convertBoolean=function(e){return"true"===e.toLowerCase()}}(r||(r={}))},13884:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(13027);const i=function(e,t,n){for(var i=-1,s=e.length;++i<s;){var a=e[i],o=t(a);if(null!=o&&(void 0===c?o==o&&!(0,r.A)(o):n(o,c)))var c=o,l=a}return l}},15618:(e,t,n)=>{n.d(t,{b:()=>l});var r=n(34939),i=n(96103),s=n(95846),a=n(8158),o=class extends r.mR{static{(0,r.K2)(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},c={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function l(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.eZ,c);return t.ServiceRegistry.register(n),{shared:t,GitGraph:n}}(0,r.K2)(l,"createGitGraphServices")},20202:(e,t,n)=>{t.Qi=t.XO=void 0;const r=n(406),i=n(78137),s=n(40436);var a;!function(e){e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:s.Event.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:s.Event.None}),e.is=function(t){const n=t;return n&&(n===e.None||n===e.Cancelled||i.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}}(a||(t.XO=a={}));const o=Object.freeze(function(e,t){const n=(0,r.default)().timer.setTimeout(e.bind(t),0);return{dispose(){n.dispose()}}});class c{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?o:(this._emitter||(this._emitter=new s.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}}t.Qi=class{get token(){return this._token||(this._token=new c),this._token}cancel(){this._token?this._token.cancel():this._token=a.Cancelled}dispose(){this._token?this._token instanceof c&&this._token.dispose():this._token=a.None}}},22675:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(13884),i=n(23855),s=n(56117);const a=function(e){return e&&e.length?(0,r.A)(e,s.A,i.A):void 0}},23855:(e,t,n)=>{n.d(t,{A:()=>r});const r=function(e,t){return e<t}},24828:(e,t,n)=>{n.d(t,{f:()=>l});var r=n(34939),i=n(96103),s=n(95846),a=n(8158),o=class extends r.mR{static{(0,r.K2)(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},c={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function l(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.YP,c);return t.ServiceRegistry.register(n),{shared:t,Radar:n}}(0,r.K2)(l,"createRadarServices")},25381:(e,t,n)=>{n.d(t,{qg:()=>a});n(15618),n(5236),n(60511),n(59331),n(77480),n(24828);var r=n(34939),i={},s={info:(0,r.K2)(async()=>{const{createInfoServices:e}=await n.e(8134).then(n.bind(n,18134)),t=e().Info.parser.LangiumParser;i.info=t},"info"),packet:(0,r.K2)(async()=>{const{createPacketServices:e}=await n.e(5176).then(n.bind(n,15176)),t=e().Packet.parser.LangiumParser;i.packet=t},"packet"),pie:(0,r.K2)(async()=>{const{createPieServices:e}=await n.e(9860).then(n.bind(n,99860)),t=e().Pie.parser.LangiumParser;i.pie=t},"pie"),architecture:(0,r.K2)(async()=>{const{createArchitectureServices:e}=await n.e(2462).then(n.bind(n,12462)),t=e().Architecture.parser.LangiumParser;i.architecture=t},"architecture"),gitGraph:(0,r.K2)(async()=>{const{createGitGraphServices:e}=await n.e(4576).then(n.bind(n,84576)),t=e().GitGraph.parser.LangiumParser;i.gitGraph=t},"gitGraph"),radar:(0,r.K2)(async()=>{const{createRadarServices:e}=await n.e(3566).then(n.bind(n,13566)),t=e().Radar.parser.LangiumParser;i.radar=t},"radar")};async function a(e,t){const n=s[e];if(!n)throw new Error(`Unknown diagram type: ${e}`);i[e]||await n();const r=i[e].parse(t);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new o(r);return r.value}(0,r.K2)(a,"parse");var o=class extends Error{constructor(e){super(`Parsing failed: ${e.lexerErrors.map(e=>e.message).join("\n")} ${e.parserErrors.map(e=>e.message).join("\n")}`),this.result=e}static{(0,r.K2)(this,"MermaidParseError")}}},29520:(e,t,n)=>{n.d(t,{Bd:()=>f,P3:()=>x,PV:()=>$,Rp:()=>A,S:()=>I,SS:()=>g,U5:()=>T,Uz:()=>k,Xq:()=>R,YV:()=>l,eb:()=>h,g4:()=>d,qO:()=>p});var r=n(36610),i=n(34813),s=n(64913),a=n(64561),o=n(67567),c=n(49948);function l(e,t){const n=new Set,r=function(e){return e.rules.find(e=>i.s7(e)&&e.entry)}(e);if(!r)return new Set(e.rules);const s=[r].concat(function(e){return e.rules.filter(e=>i.rE(e)&&e.hidden)}(e));for(const i of s)u(i,n,t);const a=new Set;for(const o of e.rules)(n.has(o.name)||i.rE(o)&&o.hidden)&&a.add(o);return a}function u(e,t,n){t.add(e.name),(0,a.Uo)(e).forEach(e=>{if(i.$g(e)||n&&i.lF(e)){const r=e.rule.ref;r&&!t.has(r.name)&&u(r,t,n)}})}function d(e){if(e.terminal)return e.terminal;if(e.type.ref){const t=T(e.type.ref);return null==t?void 0:t.terminal}}function h(e){return e.hidden&&!(0,c.Yv)(I(e))}function f(e,t){return e&&t?m(e,t,e.astNode,!0):[]}function p(e,t,n){if(!e||!t)return;const r=m(e,t,e.astNode,!0);return 0!==r.length?r[n=void 0!==n?Math.max(0,Math.min(n,r.length-1)):0]:void 0}function m(e,t,n,r){if(!r){const n=(0,a.XG)(e.grammarSource,i.wh);if(n&&n.feature===t)return[e]}return(0,s.mD)(e)&&e.astNode===n?e.content.flatMap(e=>m(e,t,n,!1)):[]}function g(e,t,n){if(!e)return;const r=y(e,t,null==e?void 0:e.astNode);return 0!==r.length?r[n=void 0!==n?Math.max(0,Math.min(n,r.length-1)):0]:void 0}function y(e,t,n){if(e.astNode!==n)return[];if(i.wb(e.grammarSource)&&e.grammarSource.value===t)return[e];const r=(0,o.NS)(e).iterator();let s;const a=[];do{if(s=r.next(),!s.done){const e=s.value;e.astNode===n?i.wb(e.grammarSource)&&e.grammarSource.value===t&&a.push(e):r.prune()}}while(!s.done);return a}function A(e){var t;const n=e.astNode;for(;n===(null===(t=e.container)||void 0===t?void 0:t.astNode);){const t=(0,a.XG)(e.grammarSource,i.wh);if(t)return t;e=e.container}}function T(e){let t=e;return i.SP(t)&&(i.ve(t.$container)?t=t.$container.$container:i.s7(t.$container)?t=t.$container:(0,r.d)(t.$container)),v(e,t,new Map)}function v(e,t,n){var r;function s(t,r){let s;return(0,a.XG)(t,i.wh)||(s=v(r,r,n)),n.set(e,s),s}if(n.has(e))return n.get(e);n.set(e,void 0);for(const o of(0,a.Uo)(t)){if(i.wh(o)&&"name"===o.feature.toLowerCase())return n.set(e,o),o;if(i.$g(o)&&i.s7(o.rule.ref))return s(o,o.rule.ref);if(i.D8(o)&&(null===(r=o.typeRef)||void 0===r?void 0:r.ref))return s(o,o.typeRef.ref)}}function R(e){return E(e,new Set)}function E(e,t){if(t.has(e))return!0;t.add(e);for(const n of(0,a.Uo)(e))if(i.$g(n)){if(!n.rule.ref)return!1;if(i.s7(n.rule.ref)&&!E(n.rule.ref,t))return!1}else{if(i.wh(n))return!1;if(i.ve(n))return!1}return Boolean(e.definition)}function $(e){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){const t=e.returnType.ref;if(t){if(i.s7(t))return t.name;if(i.S2(t)||i.Xj(t))return t.name}}}function k(e){var t;if(i.s7(e))return R(e)?e.name:null!==(t=$(e))&&void 0!==t?t:e.name;if(i.S2(e)||i.Xj(e)||i.fG(e))return e.name;if(i.ve(e)){const t=function(e){var t;if(e.inferredType)return e.inferredType.name;if(null===(t=e.type)||void 0===t?void 0:t.ref)return k(e.type.ref);return}(e);if(t)return t}else if(i.SP(e))return e.name;throw new Error("Cannot get name of Unknown Type")}function x(e){var t,n,r;return i.rE(e)?null!==(n=null===(t=e.type)||void 0===t?void 0:t.name)&&void 0!==n?n:"string":null!==(r=$(e))&&void 0!==r?r:e.name}function I(e){const t={s:!1,i:!1,u:!1},n=N(e.definition,t),r=Object.entries(t).filter(([,e])=>e).map(([e])=>e).join("");return new RegExp(n,r)}const S=/[\s\S]/.source;function N(e,t){if(i.Fy(e))return C((a=e).elements.map(e=>N(e)).join("|"),{cardinality:a.cardinality,lookahead:a.lookahead});if(i.O4(e))return C((s=e).elements.map(e=>N(e)).join(""),{cardinality:s.cardinality,lookahead:s.lookahead});if(i.Bg(e))return function(e){if(e.right)return C(`[${w(e.left)}-${w(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1});return C(w(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1})}(e);if(i.lF(e)){const t=e.rule.ref;if(!t)throw new Error("Missing rule reference.");return C(N(t.definition),{cardinality:e.cardinality,lookahead:e.lookahead})}if(i.GL(e))return C(`(?!${N((r=e).terminal)})${S}*?`,{cardinality:r.cardinality,lookahead:r.lookahead});if(i.Mz(e))return C(`${S}*?${N((n=e).terminal)}`,{cardinality:n.cardinality,lookahead:n.lookahead});if(i.vd(e)){const n=e.regex.lastIndexOf("/"),r=e.regex.substring(1,n),i=e.regex.substring(n+1);return t&&(t.i=i.includes("i"),t.s=i.includes("s"),t.u=i.includes("u")),C(r,{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1})}if(i.z2(e))return C(S,{cardinality:e.cardinality,lookahead:e.lookahead});throw new Error(`Invalid terminal element: ${null==e?void 0:e.$type}`);var n,r,s,a}function w(e){return(0,c.Nt)(e.value)}function C(e,t){var n;return(!1!==t.wrap||t.lookahead)&&(e=`(${null!==(n=t.lookahead)&&void 0!==n?n:""}${e})`),t.cardinality?`${e}${t.cardinality}`:e}},31361:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(44753),i=n(42849);const s=function(e,t){var n=-1,s=(0,i.A)(e)?Array(e.length):[];return(0,r.A)(e,function(e,r,i){s[++n]=t(e,r,i)}),s}},34813:(e,t,n)=>{n.d(t,{$g:()=>fe,Bg:()=>J,Ct:()=>S,Cz:()=>p,D8:()=>U,FO:()=>re,Fy:()=>me,GL:()=>le,IZ:()=>se,Mz:()=>$e,O4:()=>ye,QX:()=>Ie,RP:()=>A,S2:()=>k,SP:()=>E,TF:()=>L,Tu:()=>g,Xj:()=>j,_c:()=>te,cY:()=>Re,fG:()=>M,jp:()=>X,lF:()=>Te,r1:()=>u,rE:()=>K,s7:()=>O,vd:()=>de,ve:()=>z,wb:()=>oe,wh:()=>Q,z2:()=>xe});var r=n(64913);const i="AbstractRule";const s="AbstractType";const a="Condition";const o="TypeDefinition";const c="ValueLiteral";const l="AbstractElement";function u(e){return Se.isInstance(e,l)}const d="ArrayLiteral";const h="ArrayType";const f="BooleanLiteral";function p(e){return Se.isInstance(e,f)}const m="Conjunction";function g(e){return Se.isInstance(e,m)}const y="Disjunction";function A(e){return Se.isInstance(e,y)}const T="Grammar";const v="GrammarImport";const R="InferredType";function E(e){return Se.isInstance(e,R)}const $="Interface";function k(e){return Se.isInstance(e,$)}const x="NamedArgument";const I="Negation";function S(e){return Se.isInstance(e,I)}const N="NumberLiteral";const w="Parameter";const C="ParameterReference";function L(e){return Se.isInstance(e,C)}const b="ParserRule";function O(e){return Se.isInstance(e,b)}const _="ReferenceType";const P="ReturnType";function M(e){return Se.isInstance(e,P)}const D="SimpleType";function U(e){return Se.isInstance(e,D)}const F="StringLiteral";const G="TerminalRule";function K(e){return Se.isInstance(e,G)}const B="Type";function j(e){return Se.isInstance(e,B)}const V="TypeAttribute";const H="UnionType";const W="Action";function z(e){return Se.isInstance(e,W)}const Y="Alternatives";function X(e){return Se.isInstance(e,Y)}const q="Assignment";function Q(e){return Se.isInstance(e,q)}const Z="CharacterRange";function J(e){return Se.isInstance(e,Z)}const ee="CrossReference";function te(e){return Se.isInstance(e,ee)}const ne="EndOfFile";function re(e){return Se.isInstance(e,ne)}const ie="Group";function se(e){return Se.isInstance(e,ie)}const ae="Keyword";function oe(e){return Se.isInstance(e,ae)}const ce="NegatedToken";function le(e){return Se.isInstance(e,ce)}const ue="RegexToken";function de(e){return Se.isInstance(e,ue)}const he="RuleCall";function fe(e){return Se.isInstance(e,he)}const pe="TerminalAlternatives";function me(e){return Se.isInstance(e,pe)}const ge="TerminalGroup";function ye(e){return Se.isInstance(e,ge)}const Ae="TerminalRuleCall";function Te(e){return Se.isInstance(e,Ae)}const ve="UnorderedGroup";function Re(e){return Se.isInstance(e,ve)}const Ee="UntilToken";function $e(e){return Se.isInstance(e,Ee)}const ke="Wildcard";function xe(e){return Se.isInstance(e,ke)}class Ie extends r.kD{getAllTypes(){return[l,i,s,W,Y,d,h,q,f,Z,a,m,ee,y,ne,T,v,ie,R,$,ae,x,ce,I,N,w,C,b,_,ue,P,he,D,F,pe,ge,G,Ae,B,V,o,H,ve,Ee,c,ke]}computeIsSubtype(e,t){switch(e){case W:case Y:case q:case Z:case ee:case ne:case ie:case ae:case ce:case ue:case he:case pe:case ge:case Ae:case ve:case Ee:case ke:return this.isSubtype(l,t);case d:case N:case F:return this.isSubtype(c,t);case h:case _:case D:case H:return this.isSubtype(o,t);case f:return this.isSubtype(a,t)||this.isSubtype(c,t);case m:case y:case I:case C:return this.isSubtype(a,t);case R:case $:case B:return this.isSubtype(s,t);case b:return this.isSubtype(i,t)||this.isSubtype(s,t);case G:return this.isSubtype(i,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;switch(t){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return s;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return i;case"Grammar:usedGrammars":return T;case"NamedArgument:parameter":case"ParameterReference:parameter":return w;case"TerminalRuleCall:rule":return G;default:throw new Error(`${t} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case l:return{name:l,properties:[{name:"cardinality"},{name:"lookahead"}]};case d:return{name:d,properties:[{name:"elements",defaultValue:[]}]};case h:return{name:h,properties:[{name:"elementType"}]};case f:return{name:f,properties:[{name:"true",defaultValue:!1}]};case m:return{name:m,properties:[{name:"left"},{name:"right"}]};case y:return{name:y,properties:[{name:"left"},{name:"right"}]};case T:return{name:T,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case v:return{name:v,properties:[{name:"path"}]};case R:return{name:R,properties:[{name:"name"}]};case $:return{name:$,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case x:return{name:x,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case I:return{name:I,properties:[{name:"value"}]};case N:return{name:N,properties:[{name:"value"}]};case w:return{name:w,properties:[{name:"name"}]};case C:return{name:C,properties:[{name:"parameter"}]};case b:return{name:b,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case _:return{name:_,properties:[{name:"referenceType"}]};case P:return{name:P,properties:[{name:"name"}]};case D:return{name:D,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case F:return{name:F,properties:[{name:"value"}]};case G:return{name:G,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case B:return{name:B,properties:[{name:"name"},{name:"type"}]};case V:return{name:V,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case H:return{name:H,properties:[{name:"types",defaultValue:[]}]};case W:return{name:W,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Y:return{name:Y,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case q:return{name:q,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Z:return{name:Z,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case ee:return{name:ee,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case ne:return{name:ne,properties:[{name:"cardinality"},{name:"lookahead"}]};case ie:return{name:ie,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case ae:return{name:ae,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case ce:return{name:ce,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case ue:return{name:ue,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case he:return{name:he,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case pe:return{name:pe,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case ge:return{name:ge,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Ae:return{name:Ae,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case ve:return{name:ve,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Ee:return{name:Ee,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case ke:return{name:ke,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}}const Se=new Ie},34939:(e,t,n)=>{n.d(t,{mR:()=>me,dg:()=>fe,jE:()=>le,Tm:()=>pe,eZ:()=>ue,e5:()=>ae,sr:()=>se,AM:()=>oe,KX:()=>ce,YP:()=>de,K2:()=>m});var r=n(64913),i=n(8158),s=n(95846),a=n(34813),o=n(96103),c=n(55216);const l={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},u={AstReflection:()=>new a.QX};function d(e){var t;const n=function(){const e=(0,s.WQ)((0,i.u)(o.D),u),t=(0,s.WQ)((0,i.t)({shared:e}),l);return e.ServiceRegistry.register(t),t}(),r=n.serializer.JsonSerializer.deserialize(e);return n.shared.workspace.LangiumDocumentFactory.fromModel(r,c.r.parse(`memory://${null!==(t=r.name)&&void 0!==t?t:"grammar"}.langium`)),r}var h=n(12223),f=n(89212),p=Object.defineProperty,m=(e,t)=>p(e,"name",{value:t,configurable:!0}),g="Statement",y="Architecture";m(function(e){return W.isInstance(e,y)},"isArchitecture");var A="Axis",T="Branch";m(function(e){return W.isInstance(e,T)},"isBranch");var v="Checkout",R="CherryPicking",E="Commit";m(function(e){return W.isInstance(e,E)},"isCommit");var $="Curve",k="Edge",x="Entry",I="GitGraph";m(function(e){return W.isInstance(e,I)},"isGitGraph");var S="Group",N="Info";m(function(e){return W.isInstance(e,N)},"isInfo");var w="Junction",C="Merge";m(function(e){return W.isInstance(e,C)},"isMerge");var L="Option",b="Packet";m(function(e){return W.isInstance(e,b)},"isPacket");var O="PacketBlock";m(function(e){return W.isInstance(e,O)},"isPacketBlock");var _="Pie";m(function(e){return W.isInstance(e,_)},"isPie");var P="PieSection";m(function(e){return W.isInstance(e,P)},"isPieSection");var M,D,U,F,G,K,B="Radar",j="Service",V="Direction",H=class extends r.kD{static{m(this,"MermaidAstReflection")}getAllTypes(){return[y,A,T,v,R,E,$,V,k,x,I,S,N,w,C,L,b,O,_,P,B,j,g]}computeIsSubtype(e,t){switch(e){case T:case v:case R:case E:case C:return this.isSubtype(g,t);case V:return this.isSubtype(I,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;if("Entry:axis"===t)return A;throw new Error(`${t} is not a valid reference id.`)}getTypeMetaData(e){switch(e){case y:return{name:y,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case A:return{name:A,properties:[{name:"label"},{name:"name"}]};case T:return{name:T,properties:[{name:"name"},{name:"order"}]};case v:return{name:v,properties:[{name:"branch"}]};case R:return{name:R,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case E:return{name:E,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case $:return{name:$,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case k:return{name:k,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case x:return{name:x,properties:[{name:"axis"},{name:"value"}]};case I:return{name:I,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case S:return{name:S,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case N:return{name:N,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case w:return{name:w,properties:[{name:"id"},{name:"in"}]};case C:return{name:C,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case L:return{name:L,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case b:return{name:b,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case O:return{name:O,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case _:return{name:_,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case P:return{name:P,properties:[{name:"label"},{name:"value"}]};case B:return{name:B,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case j:return{name:j,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case V:return{name:V,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};default:return{name:e,properties:[]}}}},W=new H,z=m(()=>M??(M=d('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"InfoGrammar"),Y=m(()=>D??(D=d('{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"packet-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"PacketGrammar"),X=m(()=>U??(U=d('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"PieGrammar"),q=m(()=>F??(F=d('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"ArchitectureGrammar"),Q=m(()=>G??(G=d('{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"GitGraphGrammar"),Z=m(()=>K??(K=d('{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}')),"RadarGrammar"),J={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ee={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},te={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ne={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},re={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ie={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},se={AstReflection:m(()=>new H,"AstReflection")},ae={Grammar:m(()=>z(),"Grammar"),LanguageMetaData:m(()=>J,"LanguageMetaData"),parser:{}},oe={Grammar:m(()=>Y(),"Grammar"),LanguageMetaData:m(()=>ee,"LanguageMetaData"),parser:{}},ce={Grammar:m(()=>X(),"Grammar"),LanguageMetaData:m(()=>te,"LanguageMetaData"),parser:{}},le={Grammar:m(()=>q(),"Grammar"),LanguageMetaData:m(()=>ne,"LanguageMetaData"),parser:{}},ue={Grammar:m(()=>Q(),"Grammar"),LanguageMetaData:m(()=>re,"LanguageMetaData"),parser:{}},de={Grammar:m(()=>Z(),"Grammar"),LanguageMetaData:m(()=>ie,"LanguageMetaData"),parser:{}},he={ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/accTitle[\t ]*:([^\n\r]*)/,TITLE:/title([\t ][^\n\r]*|)/},fe=class extends h.d{static{m(this,"AbstractMermaidValueConverter")}runConverter(e,t,n){let r=this.runCommonConverter(e,t,n);return void 0===r&&(r=this.runCustomConverter(e,t,n)),void 0===r?super.runConverter(e,t,n):r}runCommonConverter(e,t,n){const r=he[e.name];if(void 0===r)return;const i=r.exec(t);return null!==i?void 0!==i[1]?i[1].trim().replace(/[\t ]{2,}/gm," "):void 0!==i[2]?i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,"\n"):void 0:void 0}},pe=class extends fe{static{m(this,"CommonValueConverter")}runCustomConverter(e,t,n){}},me=class extends f.Q{static{m(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,n){const r=super.buildKeywordTokens(e,t,n);return r.forEach(e=>{this.keywords.has(e.name)&&void 0!==e.PATTERN&&(e.PATTERN=new RegExp(e.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),r}};(class extends me{static{m(this,"CommonTokenBuilder")}})},36610:(e,t,n)=>{n.d(t,{W:()=>r,d:()=>i});class r extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}}function i(e){throw new Error("Error! The input value was not handled.")}},38817:(e,t,n)=>{n.d(t,{ak:()=>V,mT:()=>Pr,LT:()=>Xt,jr:()=>Dr,T6:()=>dr,JG:()=>Mt,wL:()=>M,c$:()=>F,Y2:()=>B,$P:()=>G,Cy:()=>K,Pp:()=>j,BK:()=>H,PW:()=>Ot,my:()=>Zt,jk:()=>$n,Sk:()=>Dt,G:()=>Qt});var r=n(83129),i=n(6064),s=n(90570),a=n(72185),o=n(52540),c=n(64350);function l(e){function t(){}t.prototype=e;const n=new t;function r(){return typeof n.bar}return r(),r(),e}const u=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(i);++r<i;)s[r]=e[r+t];return s};var d=n(81066);const h=function(e,t,n){var r=null==e?0:e.length;return r?(t=n||void 0===t?1:(0,d.A)(t),u(e,t<0?0:t,r)):[]};var f=n(50586),p=n(63406),m=n(88168),g=n(47848),y=n(42849),A=n(39458),T=n(22859),v=Object.prototype.hasOwnProperty;const R=(0,g.A)(function(e,t){if((0,A.A)(t)||(0,y.A)(t))(0,m.A)(t,(0,T.A)(t),e);else for(var n in t)v.call(t,n)&&(0,p.A)(e,n,t[n])});var E=n(22663),$=n(76095),k=n(71159),x=n(47042);const I=function(e,t){if(null==e)return{};var n=(0,E.A)((0,x.A)(e),function(e){return[e]});return t=(0,$.A)(t),(0,k.A)(e,n,function(e,n){return t(e,n[0])})};var S=n(80565),N=n(97427);const w=function(e){return(0,N.A)(e)&&"[object RegExp]"==(0,S.A)(e)};var C=n(5220),L=n(10130),b=L.A&&L.A.isRegExp;const O=b?(0,C.A)(b):w;function _(e){return t=e,(0,f.A)(t.LABEL)&&""!==t.LABEL?e.LABEL:e.name;var t}class P{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),(0,r.A)(this.definition,t=>{t.accept(e)})}}class M extends P{constructor(e){super([]),this.idx=1,R(this,I(e,e=>void 0!==e))}set definition(e){}get definition(){return void 0!==this.referencedRule?this.referencedRule.definition:[]}accept(e){e.visit(this)}}class D extends P{constructor(e){super(e.definition),this.orgText="",R(this,I(e,e=>void 0!==e))}}class U extends P{constructor(e){super(e.definition),this.ignoreAmbiguities=!1,R(this,I(e,e=>void 0!==e))}}class F extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class G extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class K extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class B extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class j extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class V extends P{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,R(this,I(e,e=>void 0!==e))}}class H{constructor(e){this.idx=1,R(this,I(e,e=>void 0!==e))}accept(e){e.visit(this)}}function W(e){function t(e){return(0,a.A)(e,W)}if(e instanceof M){const t={type:"NonTerminal",name:e.nonTerminalName,idx:e.idx};return(0,f.A)(e.label)&&(t.label=e.label),t}if(e instanceof U)return{type:"Alternative",definition:t(e.definition)};if(e instanceof F)return{type:"Option",idx:e.idx,definition:t(e.definition)};if(e instanceof G)return{type:"RepetitionMandatory",idx:e.idx,definition:t(e.definition)};if(e instanceof K)return{type:"RepetitionMandatoryWithSeparator",idx:e.idx,separator:W(new H({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof j)return{type:"RepetitionWithSeparator",idx:e.idx,separator:W(new H({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof B)return{type:"Repetition",idx:e.idx,definition:t(e.definition)};if(e instanceof V)return{type:"Alternation",idx:e.idx,definition:t(e.definition)};if(e instanceof H){const t={type:"Terminal",name:e.terminalType.name,label:_(e.terminalType),idx:e.idx};(0,f.A)(e.label)&&(t.terminalLabel=e.label);const n=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(t.pattern=O(n)?n.source:n),t}if(e instanceof D)return{type:"Rule",name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error("non exhaustive match")}class z{visit(e){const t=e;switch(t.constructor){case M:return this.visitNonTerminal(t);case U:return this.visitAlternative(t);case F:return this.visitOption(t);case G:return this.visitRepetitionMandatory(t);case K:return this.visitRepetitionMandatoryWithSeparator(t);case j:return this.visitRepetitionWithSeparator(t);case B:return this.visitRepetition(t);case V:return this.visitAlternation(t);case H:return this.visitTerminal(t);case D:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}var Y=n(25601),X=n(44753);const q=function(e,t){var n;return(0,X.A)(e,function(e,r,i){return!(n=t(e,r,i))}),!!n};var Q=n(95526),Z=n(16599);const J=function(e,t,n){var r=(0,Q.A)(e)?Y.A:q;return n&&(0,Z.A)(e,t,n)&&(t=void 0),r(e,(0,$.A)(t,3))};var ee=n(37617),te=Math.max;const ne=function(e,t,n,r){e=(0,y.A)(e)?e:(0,i.A)(e),n=n&&!r?(0,d.A)(n):0;var s=e.length;return n<0&&(n=te(s+n,0)),(0,f.A)(e)?n<=s&&e.indexOf(t,n)>-1:!!s&&(0,ee.A)(e,t,n)>-1};const re=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0};const ie=function(e,t){var n=!0;return(0,X.A)(e,function(e,r,i){return n=!!t(e,r,i)}),n};const se=function(e,t,n){var r=(0,Q.A)(e)?re:ie;return n&&(0,Z.A)(e,t,n)&&(t=void 0),r(e,(0,$.A)(t,3))};function ae(e,t=[]){return!!(e instanceof F||e instanceof B||e instanceof j)||(e instanceof V?J(e.definition,e=>ae(e,t)):!(e instanceof M&&ne(t,e))&&(e instanceof P&&(e instanceof M&&t.push(e),se(e.definition,e=>ae(e,t)))))}function oe(e){if(e instanceof M)return"SUBRULE";if(e instanceof F)return"OPTION";if(e instanceof V)return"OR";if(e instanceof G)return"AT_LEAST_ONE";if(e instanceof K)return"AT_LEAST_ONE_SEP";if(e instanceof j)return"MANY_SEP";if(e instanceof B)return"MANY";if(e instanceof H)return"CONSUME";throw Error("non exhaustive match")}class ce{walk(e,t=[]){(0,r.A)(e.definition,(n,r)=>{const i=h(e.definition,r+1);if(n instanceof M)this.walkProdRef(n,i,t);else if(n instanceof H)this.walkTerminal(n,i,t);else if(n instanceof U)this.walkFlat(n,i,t);else if(n instanceof F)this.walkOption(n,i,t);else if(n instanceof G)this.walkAtLeastOne(n,i,t);else if(n instanceof K)this.walkAtLeastOneSep(n,i,t);else if(n instanceof j)this.walkManySep(n,i,t);else if(n instanceof B)this.walkMany(n,i,t);else{if(!(n instanceof V))throw Error("non exhaustive match");this.walkOr(n,i,t)}})}walkTerminal(e,t,n){}walkProdRef(e,t,n){}walkFlat(e,t,n){const r=t.concat(n);this.walk(e,r)}walkOption(e,t,n){const r=t.concat(n);this.walk(e,r)}walkAtLeastOne(e,t,n){const r=[new F({definition:e.definition})].concat(t,n);this.walk(e,r)}walkAtLeastOneSep(e,t,n){const r=le(e,t,n);this.walk(e,r)}walkMany(e,t,n){const r=[new F({definition:e.definition})].concat(t,n);this.walk(e,r)}walkManySep(e,t,n){const r=le(e,t,n);this.walk(e,r)}walkOr(e,t,n){const i=t.concat(n);(0,r.A)(e.definition,e=>{const t=new U({definition:[e]});this.walk(t,i)})}}function le(e,t,n){return[new F({definition:[new H({terminalType:e.separator})].concat(e.definition)})].concat(t,n)}var ue=n(80171);const de=function(e){return e&&e.length?(0,ue.A)(e):[]};var he=n(60129);function fe(e){if(e instanceof M)return fe(e.referencedRule);if(e instanceof H)return[e.terminalType];if(function(e){return e instanceof U||e instanceof F||e instanceof B||e instanceof G||e instanceof K||e instanceof j||e instanceof H||e instanceof D}(e))return function(e){let t=[];const n=e.definition;let r,i=0,s=n.length>i,a=!0;for(;s&&a;)r=n[i],a=ae(r),t=t.concat(fe(r)),i+=1,s=n.length>i;return de(t)}(e);if(function(e){return e instanceof V}(e))return function(e){const t=(0,a.A)(e.definition,e=>fe(e));return de((0,he.A)(t))}(e);throw Error("non exhaustive match")}const pe="_~IN~_";class me extends ce{constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,n){}walkProdRef(e,t,n){const r=(i=e.referencedRule,s=e.idx,i.name+s+pe+this.topProd.name);var i,s;const a=t.concat(n),o=fe(new U({definition:a}));this.follows[r]=o}}var ge=n(60707),ye=n(11921),Ae=n(5237),Te=n(71031),ve=n(52837);const Re=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}};const Ee=function(e,t){return((0,Q.A)(e)?Te.A:ve.A)(e,Re((0,$.A)(t,3)))};var $e=n(41863),ke=Math.max;const xe=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:(0,d.A)(n);return i<0&&(i=ke(r+i,0)),(0,ee.A)(e,t,i)};var Ie=n(96800),Se=n(89949),Ne=n(46691),we=n(9532),Ce=n(53924),Le=n(9584);const be=function(e,t,n,r){var i=-1,s=we.A,a=!0,o=e.length,c=[],l=t.length;if(!o)return c;n&&(t=(0,E.A)(t,(0,C.A)(n))),r?(s=Ce.A,a=!1):t.length>=200&&(s=Le.A,a=!1,t=new Ne.A(t));e:for(;++i<o;){var u=e[i],d=null==n?u:n(u);if(u=r||0!==u?u:0,a&&d==d){for(var h=l;h--;)if(t[h]===d)continue e;c.push(u)}else s(t,d,r)||c.push(u)}return c};var Oe=n(49759),_e=n(34713),Pe=n(33998);const Me=(0,_e.A)(function(e,t){return(0,Pe.A)(e)?be(e,(0,Oe.A)(t,1,Pe.A,!0)):[]});const De=function(e){for(var t=-1,n=null==e?0:e.length,r=0,i=[];++t<n;){var s=e[t];s&&(i[r++]=s)}return i};const Ue=function(e){return e&&e.length?e[0]:void 0};var Fe=n(3602);function Ge(e){console&&console.error&&console.error(`Error: ${e}`)}function Ke(e){console&&console.warn&&console.warn(`Warning: ${e}`)}let Be={};const je=new ye.H;function Ve(e){const t=e.toString();if(Be.hasOwnProperty(t))return Be[t];{const e=je.pattern(t);return Be[t]=e,e}}const He="Complement Sets are not supported for first char optimization",We='Unable to use "first char" lexer optimizations:\n';function ze(e,t=!1){try{const t=Ve(e);return Ye(t.value,{},t.flags.ignoreCase)}catch(n){if(n.message===He)t&&Ke(`${We}\tUnable to optimize: < ${e.toString()} >\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";t&&(n="\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."),Ge(`${We}\n\tFailed parsing: < ${e.toString()} >\n\tUsing the @chevrotain/regexp-to-ast library\n\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function Ye(e,t,n){switch(e.type){case"Disjunction":for(let r=0;r<e.value.length;r++)Ye(e.value[r],t,n);break;case"Alternative":const i=e.value;for(let e=0;e<i.length;e++){const s=i[e];switch(s.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}const a=s;switch(a.type){case"Character":Xe(a.value,t,n);break;case"Set":if(!0===a.complement)throw Error(He);(0,r.A)(a.value,e=>{if("number"==typeof e)Xe(e,t,n);else{const r=e;if(!0===n)for(let e=r.from;e<=r.to;e++)Xe(e,t,n);else{for(let e=r.from;e<=r.to&&e<yt;e++)Xe(e,t,n);if(r.to>=yt){const e=r.from>=yt?r.from:yt,n=r.to,i=Tt(e),s=Tt(n);for(let r=i;r<=s;r++)t[r]=r}}}});break;case"Group":Ye(a.value,t,n);break;default:throw Error("Non Exhaustive Match")}const o=void 0!==a.quantifier&&0===a.quantifier.atLeast;if("Group"===a.type&&!1===Qe(a)||"Group"!==a.type&&!1===o)break}break;default:throw Error("non exhaustive match!")}return(0,i.A)(t)}function Xe(e,t,n){const r=Tt(e);t[r]=r,!0===n&&function(e,t){const n=String.fromCharCode(e),r=n.toUpperCase();if(r!==n){const e=Tt(r.charCodeAt(0));t[e]=e}else{const e=n.toLowerCase();if(e!==n){const n=Tt(e.charCodeAt(0));t[n]=n}}}(e,t)}function qe(e,t){return(0,Fe.A)(e.value,e=>{if("number"==typeof e)return ne(t,e);{const n=e;return void 0!==(0,Fe.A)(t,e=>n.from<=e&&e<=n.to)}})}function Qe(e){const t=e.quantifier;return!(!t||0!==t.atLeast)||!!e.value&&((0,Q.A)(e.value)?se(e.value,Qe):Qe(e.value))}class Ze extends ye.z{constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(!0!==this.found){switch(e.type){case"Lookahead":return void this.visitLookahead(e);case"NegativeLookahead":return void this.visitNegativeLookahead(e)}super.visitChildren(e)}}visitCharacter(e){ne(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?void 0===qe(e,this.targetCharCodes)&&(this.found=!0):void 0!==qe(e,this.targetCharCodes)&&(this.found=!0)}}function Je(e,t){if(t instanceof RegExp){const n=Ve(t),r=new Ze(e);return r.visit(n),r.found}return void 0!==(0,Fe.A)(t,t=>ne(e,t.charCodeAt(0)))}const et="PATTERN",tt="defaultMode",nt="modes";let rt="boolean"==typeof new RegExp("(?:)").sticky;function it(e,t){const n=(t=(0,Ae.A)(t,{useSticky:rt,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r","\n"],tracer:(e,t)=>t()})).tracer;let i;n("initCharCodeToOptimizedIndexMap",()=>{!function(){if((0,s.A)(At)){At=new Array(65536);for(let e=0;e<65536;e++)At[e]=e>255?255+~~(e/255):e}}()}),n("Reject Lexer.NA",()=>{i=Ee(e,e=>e[et]===Mt.NA)});let c,l,u,d,h,p,m,g,y,A,T,v=!1;n("Transform Patterns",()=>{v=!1,c=(0,a.A)(i,e=>{const n=e[et];if(O(n)){const e=n.source;return 1!==e.length||"^"===e||"$"===e||"."===e||n.ignoreCase?2!==e.length||"\\"!==e[0]||ne(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],e[1])?t.useSticky?lt(n):ct(n):e[1]:e}if((0,$e.A)(n))return v=!0,{exec:n};if("object"==typeof n)return v=!0,n;if("string"==typeof n){if(1===n.length)return n;{const e=n.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),r=new RegExp(e);return t.useSticky?lt(r):ct(r)}}throw Error("non exhaustive match")})}),n("misc mapping",()=>{l=(0,a.A)(i,e=>e.tokenTypeIdx),u=(0,a.A)(i,e=>{const t=e.GROUP;if(t!==Mt.SKIPPED){if((0,f.A)(t))return t;if((0,ge.A)(t))return!1;throw Error("non exhaustive match")}}),d=(0,a.A)(i,e=>{const t=e.LONGER_ALT;if(t){return(0,Q.A)(t)?(0,a.A)(t,e=>xe(i,e)):[xe(i,t)]}}),h=(0,a.A)(i,e=>e.PUSH_MODE),p=(0,a.A)(i,e=>(0,o.A)(e,"POP_MODE"))}),n("Line Terminator Handling",()=>{const e=mt(t.lineTerminatorCharacters);m=(0,a.A)(i,e=>!1),"onlyOffset"!==t.positionTracking&&(m=(0,a.A)(i,t=>(0,o.A)(t,"LINE_BREAKS")?!!t.LINE_BREAKS:!1===pt(t,e)&&Je(e,t.PATTERN)))}),n("Misc Mapping #2",()=>{g=(0,a.A)(i,dt),y=(0,a.A)(c,ht),A=(0,Ie.A)(i,(e,t)=>{const n=t.GROUP;return(0,f.A)(n)&&n!==Mt.SKIPPED&&(e[n]=[]),e},{}),T=(0,a.A)(c,(e,t)=>({pattern:c[t],longerAlt:d[t],canLineTerminator:m[t],isCustom:g[t],short:y[t],group:u[t],push:h[t],pop:p[t],tokenTypeIdx:l[t],tokenType:i[t]}))});let R=!0,E=[];return t.safeMode||n("First Char Optimization",()=>{E=(0,Ie.A)(i,(e,n,i)=>{if("string"==typeof n.PATTERN){const t=Tt(n.PATTERN.charCodeAt(0));gt(e,t,T[i])}else if((0,Q.A)(n.START_CHARS_HINT)){let t;(0,r.A)(n.START_CHARS_HINT,n=>{const r=Tt("string"==typeof n?n.charCodeAt(0):n);t!==r&&(t=r,gt(e,r,T[i]))})}else if(O(n.PATTERN))if(n.PATTERN.unicode)R=!1,t.ensureOptimizations&&Ge(`${We}\tUnable to analyze < ${n.PATTERN.toString()} > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{const a=ze(n.PATTERN,t.ensureOptimizations);(0,s.A)(a)&&(R=!1),(0,r.A)(a,t=>{gt(e,t,T[i])})}else t.ensureOptimizations&&Ge(`${We}\tTokenType: <${n.name}> is using a custom token pattern without providing <start_chars_hint> parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),R=!1;return e},[])}),{emptyGroups:A,patternIdxToConfig:T,charCodeToPatternIdxToConfig:E,hasCustom:v,canBeOptimized:R}}function st(e,t){let n=[];const i=function(e){const t=(0,Se.A)(e,e=>!(0,o.A)(e,et)),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- missing static 'PATTERN' property",type:_t.MISSING_PATTERN,tokenTypes:[e]})),r=Me(e,t);return{errors:n,valid:r}}(e);n=n.concat(i.errors);const s=function(e){const t=(0,Se.A)(e,e=>{const t=e[et];return!(O(t)||(0,$e.A)(t)||(0,o.A)(t,"exec")||(0,f.A)(t))}),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:_t.INVALID_PATTERN,tokenTypes:[e]})),r=Me(e,t);return{errors:n,valid:r}}(i.valid),c=s.valid;return n=n.concat(s.errors),n=n.concat(function(e){let t=[];const n=(0,Se.A)(e,e=>O(e[et]));return t=t.concat(function(e){class t extends ye.z{constructor(){super(...arguments),this.found=!1}visitEndAnchor(e){this.found=!0}}const n=(0,Se.A)(e,e=>{const n=e.PATTERN;try{const e=Ve(n),r=new t;return r.visit(e),r.found}catch(r){return at.test(n.source)}}),r=(0,a.A)(n,e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:_t.EOI_ANCHOR_FOUND,tokenTypes:[e]}));return r}(n)),t=t.concat(function(e){class t extends ye.z{constructor(){super(...arguments),this.found=!1}visitStartAnchor(e){this.found=!0}}const n=(0,Se.A)(e,e=>{const n=e.PATTERN;try{const e=Ve(n),r=new t;return r.visit(e),r.found}catch(r){return ot.test(n.source)}}),r=(0,a.A)(n,e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:_t.SOI_ANCHOR_FOUND,tokenTypes:[e]}));return r}(n)),t=t.concat(function(e){const t=(0,Se.A)(e,e=>{const t=e[et];return t instanceof RegExp&&(t.multiline||t.global)}),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:_t.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[e]}));return n}(n)),t=t.concat(function(e){const t=[];let n=(0,a.A)(e,n=>(0,Ie.A)(e,(e,r)=>(n.PATTERN.source!==r.PATTERN.source||ne(t,r)||r.PATTERN===Mt.NA||(t.push(r),e.push(r)),e),[]));n=De(n);const r=(0,Se.A)(n,e=>e.length>1),i=(0,a.A)(r,e=>{const t=(0,a.A)(e,e=>e.name);return{message:`The same RegExp pattern ->${Ue(e).PATTERN}<-has been used in all of the following Token Types: ${t.join(", ")} <-`,type:_t.DUPLICATE_PATTERNS_FOUND,tokenTypes:e}});return i}(n)),t=t.concat(function(e){const t=(0,Se.A)(e,e=>e.PATTERN.test("")),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' must not match an empty string",type:_t.EMPTY_MATCH_PATTERN,tokenTypes:[e]}));return n}(n)),t}(c)),n=n.concat(function(e){const t=(0,Se.A)(e,e=>{if(!(0,o.A)(e,"GROUP"))return!1;const t=e.GROUP;return t!==Mt.SKIPPED&&t!==Mt.NA&&!(0,f.A)(t)}),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:_t.INVALID_GROUP_TYPE_FOUND,tokenTypes:[e]}));return n}(c)),n=n.concat(function(e,t){const n=(0,Se.A)(e,e=>void 0!==e.PUSH_MODE&&!ne(t,e.PUSH_MODE)),r=(0,a.A)(n,e=>({message:`Token Type: ->${e.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${e.PUSH_MODE}<-which does not exist`,type:_t.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[e]}));return r}(c,t)),n=n.concat(function(e){const t=[],n=(0,Ie.A)(e,(e,t,n)=>{const r=t.PATTERN;return r===Mt.NA||((0,f.A)(r)?e.push({str:r,idx:n,tokenType:t}):O(r)&&function(e){const t=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return void 0===(0,Fe.A)(t,t=>-1!==e.source.indexOf(t))}(r)&&e.push({str:r.source,idx:n,tokenType:t})),e},[]);return(0,r.A)(e,(e,i)=>{(0,r.A)(n,({str:n,idx:r,tokenType:s})=>{if(i<r&&function(e,t){if(O(t)){const n=t.exec(e);return null!==n&&0===n.index}if((0,$e.A)(t))return t(e,0,[],{});if((0,o.A)(t,"exec"))return t.exec(e,0,[],{});if("string"==typeof t)return t===e;throw Error("non exhaustive match")}(n,e.PATTERN)){const n=`Token: ->${s.name}<- can never be matched.\nBecause it appears AFTER the Token Type ->${e.name}<-in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:n,type:_t.UNREACHABLE_PATTERN,tokenTypes:[e,s]})}})}),t}(c)),n}const at=/[^\\][$]/;const ot=/[^\\[][\^]|^\^/;function ct(e){const t=e.ignoreCase?"i":"";return new RegExp(`^(?:${e.source})`,t)}function lt(e){const t=e.ignoreCase?"iy":"y";return new RegExp(`${e.source}`,t)}function ut(e,t,n){const s=[];let a=!1;const c=De((0,he.A)((0,i.A)(e.modes))),l=Ee(c,e=>e[et]===Mt.NA),u=mt(n);return t&&(0,r.A)(l,e=>{const t=pt(e,u);if(!1!==t){const n=function(e,t){if(t.issue===_t.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.\n\tThe problem is in the <${e.name}> Token Type\n\t Root cause: ${t.errMsg}.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===_t.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.\n\tThe problem is in the <${e.name}> Token Type\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}(e,t),r={message:n,type:t.issue,tokenType:e};s.push(r)}else(0,o.A)(e,"LINE_BREAKS")?!0===e.LINE_BREAKS&&(a=!0):Je(u,e.PATTERN)&&(a=!0)}),t&&!a&&s.push({message:"Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n\tfor details.",type:_t.NO_LINE_BREAKS_FLAGS}),s}function dt(e){const t=e.PATTERN;if(O(t))return!1;if((0,$e.A)(t))return!0;if((0,o.A)(t,"exec"))return!0;if((0,f.A)(t))return!1;throw Error("non exhaustive match")}function ht(e){return!(!(0,f.A)(e)||1!==e.length)&&e.charCodeAt(0)}const ft={test:function(e){const t=e.length;for(let n=this.lastIndex;n<t;n++){const t=e.charCodeAt(n);if(10===t)return this.lastIndex=n+1,!0;if(13===t)return 10===e.charCodeAt(n+1)?this.lastIndex=n+2:this.lastIndex=n+1,!0}return!1},lastIndex:0};function pt(e,t){if((0,o.A)(e,"LINE_BREAKS"))return!1;if(O(e.PATTERN)){try{Je(t,e.PATTERN)}catch(n){return{issue:_t.IDENTIFY_TERMINATOR,errMsg:n.message}}return!1}if((0,f.A)(e.PATTERN))return!1;if(dt(e))return{issue:_t.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}function mt(e){return(0,a.A)(e,e=>(0,f.A)(e)?e.charCodeAt(0):e)}function gt(e,t,n){void 0===e[t]?e[t]=[n]:e[t].push(n)}const yt=256;let At=[];function Tt(e){return e<yt?e:At[e]}var vt=n(56117),Rt=n(16687),Et=n(48663);function $t(e){const t=(new Date).getTime(),n=e();return{time:(new Date).getTime()-t,value:n}}function kt(e,t){const n=e.tokenTypeIdx;return n===t.tokenTypeIdx||!0===t.isParent&&!0===t.categoryMatchesMap[n]}function xt(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}let It=1;const St={};function Nt(e){const t=function(e){let t=(0,c.A)(e),n=e,r=!0;for(;r;){n=De((0,he.A)((0,a.A)(n,e=>e.CATEGORIES)));const e=Me(n,t);t=t.concat(e),(0,s.A)(e)?r=!1:n=e}return t}(e);!function(e){(0,r.A)(e,e=>{var t;Ct(e)||(St[It]=e,e.tokenTypeIdx=It++),Lt(e)&&!(0,Q.A)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Lt(e)||(e.CATEGORIES=[]),t=e,(0,o.A)(t,"categoryMatches")||(e.categoryMatches=[]),function(e){return(0,o.A)(e,"categoryMatchesMap")}(e)||(e.categoryMatchesMap={})})}(t),function(e){(0,r.A)(e,e=>{wt([],e)})}(t),function(e){(0,r.A)(e,e=>{e.categoryMatches=[],(0,r.A)(e.categoryMatchesMap,(t,n)=>{e.categoryMatches.push(St[n].tokenTypeIdx)})})}(t),(0,r.A)(t,e=>{e.isParent=e.categoryMatches.length>0})}function wt(e,t){(0,r.A)(e,e=>{t.categoryMatchesMap[e.tokenTypeIdx]=!0}),(0,r.A)(t.CATEGORIES,n=>{const r=e.concat(t);ne(r,n)||wt(r,n)})}function Ct(e){return(0,o.A)(e,"tokenTypeIdx")}function Lt(e){return(0,o.A)(e,"CATEGORIES")}function bt(e){return(0,o.A)(e,"tokenTypeIdx")}const Ot={buildUnableToPopLexerModeMessage:e=>`Unable to pop Lexer Mode after encountering Token ->${e.image}<- The Mode Stack is empty`,buildUnexpectedCharactersMessage:(e,t,n,r,i)=>`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${n} characters.`};var _t;!function(e){e[e.MISSING_PATTERN=0]="MISSING_PATTERN",e[e.INVALID_PATTERN=1]="INVALID_PATTERN",e[e.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",e[e.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",e[e.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",e[e.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",e[e.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",e[e.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",e[e.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",e[e.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",e[e.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",e[e.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",e[e.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",e[e.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"}(_t||(_t={}));const Pt={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:["\n","\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:Ot,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Pt);class Mt{constructor(e,t=Pt){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(e,t)=>{if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${e}>`);const{time:r,value:i}=$t(t),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${e}> time: ${r}ms`),this.traceInitIndent--,i}return t()},"boolean"==typeof t)throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported");this.config=R({},Pt,t);const n=this.config.traceInitPerf;!0===n?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):"number"==typeof n&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let n,i=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Pt.lineTerminatorsPattern)this.config.lineTerminatorsPattern=ft;else if(this.config.lineTerminatorCharacters===Pt.lineTerminatorCharacters)throw Error("Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS");if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),(0,Q.A)(e)?n={modes:{defaultMode:(0,c.A)(e)},defaultMode:tt}:(i=!1,n=(0,c.A)(e))}),!1===this.config.skipValidations&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(function(e){const t=[];return(0,o.A)(e,tt)||t.push({message:"A MultiMode Lexer cannot be initialized without a <"+tt+"> property in its definition\n",type:_t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,o.A)(e,nt)||t.push({message:"A MultiMode Lexer cannot be initialized without a <modes> property in its definition\n",type:_t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,o.A)(e,nt)&&(0,o.A)(e,tt)&&!(0,o.A)(e.modes,e.defaultMode)&&t.push({message:`A MultiMode Lexer cannot be initialized with a ${tt}: <${e.defaultMode}>which does not exist\n`,type:_t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,o.A)(e,nt)&&(0,r.A)(e.modes,(e,n)=>{(0,r.A)(e,(i,s)=>{if((0,ge.A)(i))t.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${n}> at index: <${s}>\n`,type:_t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if((0,o.A)(i,"LONGER_ALT")){const s=(0,Q.A)(i.LONGER_ALT)?i.LONGER_ALT:[i.LONGER_ALT];(0,r.A)(s,r=>{(0,ge.A)(r)||ne(e,r)||t.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${r.name}> on token <${i.name}> outside of mode <${n}>\n`,type:_t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),t}(n,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(ut(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),n.modes=n.modes?n.modes:{},(0,r.A)(n.modes,(e,t)=>{n.modes[t]=Ee(e,e=>(0,ge.A)(e))});const u=(0,T.A)(n.modes);if((0,r.A)(n.modes,(e,n)=>{this.TRACE_INIT(`Mode: <${n}> processing`,()=>{if(this.modes.push(n),!1===this.config.skipValidations&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(st(e,u))}),(0,s.A)(this.lexerDefinitionErrors)){let r;Nt(e),this.TRACE_INIT("analyzeTokenTypes",()=>{r=it(e,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[n]=r.patternIdxToConfig,this.charCodeToPatternIdxToConfig[n]=r.charCodeToPatternIdxToConfig,this.emptyGroups=R({},this.emptyGroups,r.emptyGroups),this.hasCustom=r.hasCustom||this.hasCustom,this.canModeBeOptimized[n]=r.canBeOptimized}})}),this.defaultMode=n.defaultMode,!(0,s.A)(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const e=(0,a.A)(this.lexerDefinitionErrors,e=>e.message).join("-----------------------\n");throw new Error("Errors detected in definition of Lexer:\n"+e)}(0,r.A)(this.lexerDefinitionWarning,e=>{Ke(e.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(rt?(this.chopInput=vt.A,this.match=this.matchWithTest):(this.updateLastIndex=Rt.A,this.match=this.matchWithExec),i&&(this.handleModes=Rt.A),!1===this.trackStartLines&&(this.computeNewColumn=vt.A),!1===this.trackEndLines&&(this.updateTokenEndLineColumnLocation=Rt.A),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else{if(!/onlyOffset/i.test(this.config.positionTracking))throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);this.createTokenInstance=this.createOffsetOnlyToken}this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{const e=(0,Ie.A)(this.canModeBeOptimized,(e,t,n)=>(!1===t&&e.push(n),e),[]);if(t.ensureOptimizations&&!(0,s.A)(e))throw Error(`Lexer Modes: < ${e.join(", ")} > cannot be optimized.\n\t Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{Be={}}),this.TRACE_INIT("toFastProperties",()=>{l(this)})})}tokenize(e,t=this.defaultMode){if(!(0,s.A)(this.lexerDefinitionErrors)){const e=(0,a.A)(this.lexerDefinitionErrors,e=>e.message).join("-----------------------\n");throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n"+e)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let n,i,s,a,o,c,l,u,d,h,f,p,m,g,y;const A=e,v=A.length;let R=0,E=0;const $=this.hasCustom?0:Math.floor(e.length/10),k=new Array($),x=[];let I=this.trackStartLines?1:void 0,S=this.trackStartLines?1:void 0;const N=function(e){const t={},n=(0,T.A)(e);return(0,r.A)(n,n=>{const r=e[n];if(!(0,Q.A)(r))throw Error("non exhaustive match");t[n]=[]}),t}(this.emptyGroups),w=this.trackStartLines,C=this.config.lineTerminatorsPattern;let L=0,b=[],O=[];const _=[],P=[];let M;function D(){return b}function U(e){const t=Tt(e),n=O[t];return void 0===n?P:n}Object.freeze(P);const F=e=>{if(1===_.length&&void 0===e.tokenType.PUSH_MODE){const t=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(e);x.push({offset:e.startOffset,line:e.startLine,column:e.startColumn,length:e.image.length,message:t})}else{_.pop();const e=(0,Et.A)(_);b=this.patternIdxToConfig[e],O=this.charCodeToPatternIdxToConfig[e],L=b.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;M=O&&t?U:D}};function G(e){_.push(e),O=this.charCodeToPatternIdxToConfig[e],b=this.patternIdxToConfig[e],L=b.length,L=b.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;M=O&&t?U:D}let K;G.call(this,t);const B=this.config.recoveryEnabled;for(;R<v;){c=null;const t=A.charCodeAt(R),r=M(t),T=r.length;for(n=0;n<T;n++){K=r[n];const i=K.pattern;l=null;const d=K.short;if(!1!==d?t===d&&(c=i):!0===K.isCustom?(y=i.exec(A,R,k,N),null!==y?(c=y[0],void 0!==y.payload&&(l=y.payload)):c=null):(this.updateLastIndex(i,R),c=this.match(i,e,R)),null!==c){if(o=K.longerAlt,void 0!==o){const t=o.length;for(s=0;s<t;s++){const t=b[o[s]],n=t.pattern;if(u=null,!0===t.isCustom?(y=n.exec(A,R,k,N),null!==y?(a=y[0],void 0!==y.payload&&(u=y.payload)):a=null):(this.updateLastIndex(n,R),a=this.match(n,e,R)),a&&a.length>c.length){c=a,l=u,K=t;break}}}break}}if(null!==c){if(d=c.length,h=K.group,void 0!==h&&(f=K.tokenTypeIdx,p=this.createTokenInstance(c,R,f,K.tokenType,I,S,d),this.handlePayload(p,l),!1===h?E=this.addToken(k,E,p):N[h].push(p)),e=this.chopInput(e,d),R+=d,S=this.computeNewColumn(S,d),!0===w&&!0===K.canLineTerminator){let e,t,n=0;C.lastIndex=0;do{e=C.test(c),!0===e&&(t=C.lastIndex-1,n++)}while(!0===e);0!==n&&(I+=n,S=d-t,this.updateTokenEndLineColumnLocation(p,h,t,n,I,S,d))}this.handleModes(K,F,G,p)}else{const t=R,n=I,r=S;let s=!1===B;for(;!1===s&&R<v;)for(e=this.chopInput(e,1),R++,i=0;i<L;i++){const t=b[i],n=t.pattern,r=t.short;if(!1!==r?A.charCodeAt(R)===r&&(s=!0):!0===t.isCustom?s=null!==n.exec(A,R,k,N):(this.updateLastIndex(n,R),s=null!==n.exec(e)),!0===s)break}if(m=R-t,S=this.computeNewColumn(S,m),g=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(A,t,m,n,r),x.push({offset:t,line:n,column:r,length:m,message:g}),!1===B)break}}return this.hasCustom||(k.length=E),{tokens:k,groups:N,errors:x}}handleModes(e,t,n,r){if(!0===e.pop){const i=e.push;t(r),void 0!==i&&n.call(this,i)}else void 0!==e.push&&n.call(this,e.push)}chopInput(e,t){return e.substring(t)}updateLastIndex(e,t){e.lastIndex=t}updateTokenEndLineColumnLocation(e,t,n,r,i,s,a){let o,c;void 0!==t&&(o=n===a-1,c=o?-1:0,1===r&&!0===o||(e.endLine=i+c,e.endColumn=s-1-c))}computeNewColumn(e,t){return e+t}createOffsetOnlyToken(e,t,n,r){return{image:e,startOffset:t,tokenTypeIdx:n,tokenType:r}}createStartOnlyToken(e,t,n,r,i,s){return{image:e,startOffset:t,startLine:i,startColumn:s,tokenTypeIdx:n,tokenType:r}}createFullToken(e,t,n,r,i,s,a){return{image:e,startOffset:t,endOffset:t+a-1,startLine:i,endLine:i,startColumn:s,endColumn:s+a-1,tokenTypeIdx:n,tokenType:r}}addTokenUsingPush(e,t,n){return e.push(n),t}addTokenUsingMemberAccess(e,t,n){return e[t]=n,++t}handlePayloadNoCustom(e,t){}handlePayloadWithCustom(e,t){null!==t&&(e.payload=t)}matchWithTest(e,t,n){return!0===e.test(t)?t.substring(n,e.lastIndex):null}matchWithExec(e,t){const n=e.exec(t);return null!==n?n[0]:null}}function Dt(e){return Ut(e)?e.LABEL:e.name}function Ut(e){return(0,f.A)(e.LABEL)&&""!==e.LABEL}Mt.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",Mt.NA=/NOT_APPLICABLE/;const Ft="parent",Gt="categories",Kt="label",Bt="group",jt="push_mode",Vt="pop_mode",Ht="longer_alt",Wt="line_breaks",zt="start_chars_hint";function Yt(e){return function(e){const t=e.pattern,n={};n.name=e.name,(0,ge.A)(t)||(n.PATTERN=t);if((0,o.A)(e,Ft))throw"The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.";(0,o.A)(e,Gt)&&(n.CATEGORIES=e[Gt]);Nt([n]),(0,o.A)(e,Kt)&&(n.LABEL=e[Kt]);(0,o.A)(e,Bt)&&(n.GROUP=e[Bt]);(0,o.A)(e,Vt)&&(n.POP_MODE=e[Vt]);(0,o.A)(e,jt)&&(n.PUSH_MODE=e[jt]);(0,o.A)(e,Ht)&&(n.LONGER_ALT=e[Ht]);(0,o.A)(e,Wt)&&(n.LINE_BREAKS=e[Wt]);(0,o.A)(e,zt)&&(n.START_CHARS_HINT=e[zt]);return n}(e)}const Xt=Yt({name:"EOF",pattern:Mt.NA});function qt(e,t,n,r,i,s,a,o){return{image:t,startOffset:n,endOffset:r,startLine:i,endLine:s,startColumn:a,endColumn:o,tokenTypeIdx:e.tokenTypeIdx,tokenType:e}}function Qt(e,t){return kt(e,t)}Nt([Xt]);const Zt={buildMismatchTokenMessage:({expected:e,actual:t,previous:n,ruleName:r})=>`Expecting ${Ut(e)?`--\x3e ${Dt(e)} <--`:`token of type --\x3e ${e.name} <--`} but found --\x3e '${t.image}' <--`,buildNotAllInputParsedMessage:({firstRedundant:e,ruleName:t})=>"Redundant input, expecting EOF but found: "+e.image,buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:n,customUserDescription:r,ruleName:i}){const s="Expecting: ",o="\nbut found: '"+Ue(t).image+"'";if(r)return s+r+o;{const t=(0,Ie.A)(e,(e,t)=>e.concat(t),[]),n=(0,a.A)(t,e=>`[${(0,a.A)(e,e=>Dt(e)).join(", ")}]`);return s+`one of these possible Token sequences:\n${(0,a.A)(n,(e,t)=>` ${t+1}. ${e}`).join("\n")}`+o}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:n,ruleName:r}){const i="Expecting: ",s="\nbut found: '"+Ue(t).image+"'";if(n)return i+n+s;return i+`expecting at least one iteration which starts with one of these possible Token sequences::\n <${(0,a.A)(e,e=>`[${(0,a.A)(e,e=>Dt(e)).join(",")}]`).join(" ,")}>`+s}};Object.freeze(Zt);const Jt={buildRuleNotFoundError:(e,t)=>"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+"<-\ninside top level rule: ->"+e.name+"<-"},en={buildDuplicateFoundError(e,t){const n=e.name,r=Ue(t),i=r.idx,s=oe(r),a=(o=r)instanceof H?o.terminalType.name:o instanceof M?o.nonTerminalName:"";var o;let c=`->${s}${i>0?i:""}<- ${a?`with argument: ->${a}<-`:""}\n appears more than once (${t.length} times) in the top level rule: ->${n}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,"\n"),c},buildNamespaceConflictError:e=>`Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${e.name}>.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`,buildAlternationPrefixAmbiguityError(e){const t=(0,a.A)(e.prefixPath,e=>Dt(e)).join(", "),n=0===e.alternation.idx?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix\nin <OR${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\nSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`},buildAlternationAmbiguityError(e){const t=(0,a.A)(e.prefixPath,e=>Dt(e)).join(", "),n=0===e.alternation.idx?"":e.alternation.idx;let r=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in <OR${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r},buildEmptyRepetitionError(e){let t=oe(e.repetition);0!==e.repetition.idx&&(t+=e.repetition.idx);return`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens.\nThis could lead to an infinite loop.`},buildTokenNameError:e=>"deprecated",buildEmptyAlternationError:e=>`Ambiguous empty alternative: <${e.emptyChoiceIdx+1}> in <OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.\nOnly the last alternative may be an empty alternative.`,buildTooManyAlternativesError:e=>`An Alternation cannot have more than 256 alternatives:\n<OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.\n has ${e.alternation.definition.length+1} alternatives.`,buildLeftRecursionError(e){const t=e.topLevelRule.name;return`Left Recursion found in grammar.\nrule: <${t}> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n ${`${t} --\x3e ${(0,a.A)(e.leftRecursionPath,e=>e.name).concat([t]).join(" --\x3e ")}`}\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError:e=>"deprecated",buildDuplicateRuleNameError(e){let t;t=e.topLevelRule instanceof D?e.topLevelRule.name:e.topLevelRule;return`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};class tn extends z{constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){(0,r.A)((0,i.A)(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){const t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{const t=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:t,type:Or.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}var nn=n(64620),rn=n(35745);const sn=function(e,t,n,r){for(var i=-1,s=null==e?0:e.length;++i<s;){var a=e[i];t(r,a,n(a),e)}return r};const an=function(e,t,n,r){return(0,X.A)(e,function(e,i,s){t(r,e,n(e),s)}),r};const on=function(e,t){return function(n,r){var i=(0,Q.A)(n)?sn:an,s=t?t():{};return i(n,e,(0,$.A)(r,2),s)}};var cn=Object.prototype.hasOwnProperty;const ln=on(function(e,t,n){cn.call(e,n)?e[n].push(t):(0,rn.A)(e,n,[t])});const un=function(e,t,n){var r=null==e?0:e.length;return r?(t=n||void 0===t?1:(0,d.A)(t),u(e,0,(t=r-t)<0?0:t)):[]};class dn extends ce{constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,c.A)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,c.A)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){const r=t.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,r)}}updateExpectedNext(){(0,s.A)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}}class hn extends dn{constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){const e=t.concat(n),r=new U({definition:e});this.possibleTokTypes=fe(r),this.found=!0}}}class fn extends ce{constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}}class pn extends fn{walkMany(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkMany(e,t,n)}}class mn extends fn{walkManySep(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkManySep(e,t,n)}}class gn extends fn{walkAtLeastOne(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkAtLeastOne(e,t,n)}}class yn extends fn{walkAtLeastOneSep(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkAtLeastOneSep(e,t,n)}}function An(e,t,n=[]){n=(0,c.A)(n);let i=[],a=0;function o(r){const s=An(r.concat(h(e,a+1)),t,n);return i.concat(s)}for(;n.length<t&&a<e.length;){const t=e[a];if(t instanceof U)return o(t.definition);if(t instanceof M)return o(t.definition);if(t instanceof F)i=o(t.definition);else{if(t instanceof G){return o(t.definition.concat([new B({definition:t.definition})]))}if(t instanceof K){return o([new U({definition:t.definition}),new B({definition:[new H({terminalType:t.separator})].concat(t.definition)})])}if(t instanceof j){const e=t.definition.concat([new B({definition:[new H({terminalType:t.separator})].concat(t.definition)})]);i=o(e)}else if(t instanceof B){const e=t.definition.concat([new B({definition:t.definition})]);i=o(e)}else{if(t instanceof V)return(0,r.A)(t.definition,e=>{!1===(0,s.A)(e.definition)&&(i=o(e.definition))}),i;if(!(t instanceof H))throw Error("non exhaustive match");n.push(t.terminalType)}}a++}return i.push({partialPath:n,suffixDef:h(e,a)}),i}function Tn(e,t,n,r){const i="EXIT_NONE_TERMINAL",a=[i],o="EXIT_ALTERNATIVE";let l=!1;const u=t.length,d=u-r-1,f=[],p=[];for(p.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!(0,s.A)(p);){const e=p.pop();if(e===o){l&&(0,Et.A)(p).idx<=d&&p.pop();continue}const r=e.def,m=e.idx,g=e.ruleStack,y=e.occurrenceStack;if((0,s.A)(r))continue;const A=r[0];if(A===i){const e={idx:m,def:h(r),ruleStack:un(g),occurrenceStack:un(y)};p.push(e)}else if(A instanceof H)if(m<u-1){const e=m+1;if(n(t[e],A.terminalType)){const t={idx:e,def:h(r),ruleStack:g,occurrenceStack:y};p.push(t)}}else{if(m!==u-1)throw Error("non exhaustive match");f.push({nextTokenType:A.terminalType,nextTokenOccurrence:A.idx,ruleStack:g,occurrenceStack:y}),l=!0}else if(A instanceof M){const e=(0,c.A)(g);e.push(A.nonTerminalName);const t=(0,c.A)(y);t.push(A.idx);const n={idx:m,def:A.definition.concat(a,h(r)),ruleStack:e,occurrenceStack:t};p.push(n)}else if(A instanceof F){const e={idx:m,def:h(r),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o);const t={idx:m,def:A.definition.concat(h(r)),ruleStack:g,occurrenceStack:y};p.push(t)}else if(A instanceof G){const e=new B({definition:A.definition,idx:A.idx}),t={idx:m,def:A.definition.concat([e],h(r)),ruleStack:g,occurrenceStack:y};p.push(t)}else if(A instanceof K){const e=new H({terminalType:A.separator}),t=new B({definition:[e].concat(A.definition),idx:A.idx}),n={idx:m,def:A.definition.concat([t],h(r)),ruleStack:g,occurrenceStack:y};p.push(n)}else if(A instanceof j){const e={idx:m,def:h(r),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o);const t=new H({terminalType:A.separator}),n=new B({definition:[t].concat(A.definition),idx:A.idx}),i={idx:m,def:A.definition.concat([n],h(r)),ruleStack:g,occurrenceStack:y};p.push(i)}else if(A instanceof B){const e={idx:m,def:h(r),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o);const t=new B({definition:A.definition,idx:A.idx}),n={idx:m,def:A.definition.concat([t],h(r)),ruleStack:g,occurrenceStack:y};p.push(n)}else if(A instanceof V)for(let t=A.definition.length-1;t>=0;t--){const e={idx:m,def:A.definition[t].definition.concat(h(r)),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o)}else if(A instanceof U)p.push({idx:m,def:A.definition.concat(h(r)),ruleStack:g,occurrenceStack:y});else{if(!(A instanceof D))throw Error("non exhaustive match");p.push(vn(A,m,g,y))}}return f}function vn(e,t,n,r){const i=(0,c.A)(n);i.push(e.name);const s=(0,c.A)(r);return s.push(1),{idx:t,def:e.definition,ruleStack:i,occurrenceStack:s}}var Rn;function En(e){if(e instanceof F||"Option"===e)return Rn.OPTION;if(e instanceof B||"Repetition"===e)return Rn.REPETITION;if(e instanceof G||"RepetitionMandatory"===e)return Rn.REPETITION_MANDATORY;if(e instanceof K||"RepetitionMandatoryWithSeparator"===e)return Rn.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof j||"RepetitionWithSeparator"===e)return Rn.REPETITION_WITH_SEPARATOR;if(e instanceof V||"Alternation"===e)return Rn.ALTERNATION;throw Error("non exhaustive match")}function $n(e){const{occurrence:t,rule:n,prodType:r,maxLookahead:i}=e,s=En(r);return s===Rn.ALTERNATION?bn(t,n,i):On(t,n,s,i)}function kn(e,t,n,i){const s=e.length,c=se(e,e=>se(e,e=>1===e.length));if(t)return function(t){const r=(0,a.A)(t,e=>e.GATE);for(let i=0;i<s;i++){const t=e[i],s=t.length,a=r[i];if(void 0===a||!1!==a.call(this))e:for(let e=0;e<s;e++){const r=t[e],s=r.length;for(let e=0;e<s;e++){const t=this.LA(e+1);if(!1===n(t,r[e]))continue e}return i}}};if(c&&!i){const t=(0,a.A)(e,e=>(0,he.A)(e)),n=(0,Ie.A)(t,(e,t,n)=>((0,r.A)(t,t=>{(0,o.A)(e,t.tokenTypeIdx)||(e[t.tokenTypeIdx]=n),(0,r.A)(t.categoryMatches,t=>{(0,o.A)(e,t)||(e[t]=n)})}),e),{});return function(){const e=this.LA(1);return n[e.tokenTypeIdx]}}return function(){for(let t=0;t<s;t++){const r=e[t],i=r.length;e:for(let e=0;e<i;e++){const i=r[e],s=i.length;for(let e=0;e<s;e++){const t=this.LA(e+1);if(!1===n(t,i[e]))continue e}return t}}}}function xn(e,t,n){const i=se(e,e=>1===e.length),a=e.length;if(i&&!n){const t=(0,he.A)(e);if(1===t.length&&(0,s.A)(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=(0,Ie.A)(t,(e,t,n)=>(e[t.tokenTypeIdx]=!0,(0,r.A)(t.categoryMatches,t=>{e[t]=!0}),e),[]);return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){e:for(let n=0;n<a;n++){const r=e[n],i=r.length;for(let e=0;e<i;e++){const n=this.LA(e+1);if(!1===t(n,r[e]))continue e}return!0}return!1}}!function(e){e[e.OPTION=0]="OPTION",e[e.REPETITION=1]="REPETITION",e[e.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",e[e.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",e[e.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",e[e.ALTERNATION=5]="ALTERNATION"}(Rn||(Rn={}));class In extends ce{constructor(e,t,n){super(),this.topProd=e,this.targetOccurrence=t,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,t,n,r){return e.idx===this.targetOccurrence&&this.targetProdType===t&&(this.restDef=n.concat(r),!0)}walkOption(e,t,n){this.checkIsTarget(e,Rn.OPTION,t,n)||super.walkOption(e,t,n)}walkAtLeastOne(e,t,n){this.checkIsTarget(e,Rn.REPETITION_MANDATORY,t,n)||super.walkOption(e,t,n)}walkAtLeastOneSep(e,t,n){this.checkIsTarget(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR,t,n)||super.walkOption(e,t,n)}walkMany(e,t,n){this.checkIsTarget(e,Rn.REPETITION,t,n)||super.walkOption(e,t,n)}walkManySep(e,t,n){this.checkIsTarget(e,Rn.REPETITION_WITH_SEPARATOR,t,n)||super.walkOption(e,t,n)}}class Sn extends z{constructor(e,t,n){super(),this.targetOccurrence=e,this.targetProdType=t,this.targetRef=n,this.result=[]}checkIsTarget(e,t){e.idx!==this.targetOccurrence||this.targetProdType!==t||void 0!==this.targetRef&&e!==this.targetRef||(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,Rn.OPTION)}visitRepetition(e){this.checkIsTarget(e,Rn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,Rn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,Rn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,Rn.ALTERNATION)}}function Nn(e){const t=new Array(e);for(let n=0;n<e;n++)t[n]=[];return t}function wn(e){let t=[""];for(let n=0;n<e.length;n++){const r=e[n],i=[];for(let e=0;e<t.length;e++){const n=t[e];i.push(n+"_"+r.tokenTypeIdx);for(let e=0;e<r.categoryMatches.length;e++){const t="_"+r.categoryMatches[e];i.push(n+t)}}t=i}return t}function Cn(e,t,n){for(let r=0;r<e.length;r++){if(r===n)continue;const i=e[r];for(let e=0;e<t.length;e++){if(!0===i[t[e]])return!1}}return!0}function Ln(e,t){const n=(0,a.A)(e,e=>An([e],1)),i=Nn(n.length),o=(0,a.A)(n,e=>{const t={};return(0,r.A)(e,e=>{const n=wn(e.partialPath);(0,r.A)(n,e=>{t[e]=!0})}),t});let c=n;for(let a=1;a<=t;a++){const e=c;c=Nn(e.length);for(let n=0;n<e.length;n++){const l=e[n];for(let e=0;e<l.length;e++){const u=l[e].partialPath,d=l[e].suffixDef,h=wn(u);if(Cn(o,h,n)||(0,s.A)(d)||u.length===t){const e=i[n];if(!1===_n(e,u)){e.push(u);for(let e=0;e<h.length;e++){const t=h[e];o[n][t]=!0}}}else{const e=An(d,a+1,u);c[n]=c[n].concat(e),(0,r.A)(e,e=>{const t=wn(e.partialPath);(0,r.A)(t,e=>{o[n][e]=!0})})}}}}return i}function bn(e,t,n,r){const i=new Sn(e,Rn.ALTERNATION,r);return t.accept(i),Ln(i.result,n)}function On(e,t,n,r){const i=new Sn(e,n);t.accept(i);const s=i.result,a=new In(t,e,n).startWalking();return Ln([new U({definition:s}),new U({definition:a})],r)}function _n(e,t){e:for(let n=0;n<e.length;n++){const r=e[n];if(r.length===t.length){for(let e=0;e<r.length;e++){const n=t[e],i=r[e];if(!1===(n===i||void 0!==i.categoryMatchesMap[n.tokenTypeIdx]))continue e}return!0}}return!1}function Pn(e){return se(e,e=>se(e,e=>se(e,e=>(0,s.A)(e.categoryMatches))))}function Mn(e,t,n,s){const o=(0,nn.A)(e,e=>function(e,t){const n=new Fn;e.accept(n);const r=n.allProductions,s=ln(r,Dn),o=I(s,e=>e.length>1),c=(0,a.A)((0,i.A)(o),n=>{const r=Ue(n),i=t.buildDuplicateFoundError(e,n),s=oe(r),a={message:i,type:Or.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:s,occurrence:r.idx},o=Un(r);return o&&(a.parameter=o),a});return c}(e,n)),c=function(e,t,n){const i=[],s=(0,a.A)(t,e=>e.name);return(0,r.A)(e,e=>{const t=e.name;if(ne(s,t)){const r=n.buildNamespaceConflictError(e);i.push({message:r,type:Or.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:t})}}),i}(e,t,n),l=(0,nn.A)(e,e=>function(e,t){const n=new Bn;e.accept(n);const r=n.alternations,i=(0,nn.A)(r,n=>n.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:n}),type:Or.TOO_MANY_ALTS,ruleName:e.name,occurrence:n.idx}]:[]);return i}(e,n)),u=(0,nn.A)(e,t=>function(e,t,n,r){const i=[],s=(0,Ie.A)(t,(t,n)=>n.name===e.name?t+1:t,0);if(s>1){const t=r.buildDuplicateRuleNameError({topLevelRule:e,grammarName:n});i.push({message:t,type:Or.DUPLICATE_RULE_NAME,ruleName:e.name})}return i}(t,e,s,n));return o.concat(c,l,u)}function Dn(e){return`${oe(e)}_#_${e.idx}_#_${Un(e)}`}function Un(e){return e instanceof H?e.terminalType.name:e instanceof M?e.nonTerminalName:""}class Fn extends z{constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}}function Gn(e,t,n,r=[]){const i=[],a=Kn(t.definition);if((0,s.A)(a))return[];{const t=e.name;ne(a,e)&&i.push({message:n.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:r}),type:Or.LEFT_RECURSION,ruleName:t});const s=Me(a,r.concat([e])),o=(0,nn.A)(s,t=>{const i=(0,c.A)(r);return i.push(t),Gn(e,t,n,i)});return i.concat(o)}}function Kn(e){let t=[];if((0,s.A)(e))return t;const n=Ue(e);if(n instanceof M)t.push(n.referencedRule);else if(n instanceof U||n instanceof F||n instanceof G||n instanceof K||n instanceof j||n instanceof B)t=t.concat(Kn(n.definition));else if(n instanceof V)t=(0,he.A)((0,a.A)(n.definition,e=>Kn(e.definition)));else if(!(n instanceof H))throw Error("non exhaustive match");const r=ae(n),i=e.length>1;if(r&&i){const n=h(e);return t.concat(Kn(n))}return t}class Bn extends z{constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}}function jn(e,t,n){const i=new Bn;e.accept(i);let s=i.alternations;s=Ee(s,e=>!0===e.ignoreAmbiguities);const o=(0,nn.A)(s,i=>{const s=i.idx,o=i.maxLookahead||t,c=bn(s,e,o,i),l=function(e,t,n,i){const s=[],o=(0,Ie.A)(e,(n,i,a)=>(!0===t.definition[a].ignoreAmbiguities||(0,r.A)(i,i=>{const o=[a];(0,r.A)(e,(e,n)=>{a!==n&&_n(e,i)&&!0!==t.definition[n].ignoreAmbiguities&&o.push(n)}),o.length>1&&!_n(s,i)&&(s.push(i),n.push({alts:o,path:i}))}),n),[]),c=(0,a.A)(o,e=>{const r=(0,a.A)(e.alts,e=>e+1);return{message:i.buildAlternationAmbiguityError({topLevelRule:n,alternation:t,ambiguityIndices:r,prefixPath:e.path}),type:Or.AMBIGUOUS_ALTS,ruleName:n.name,occurrence:t.idx,alternatives:e.alts}});return c}(c,i,e,n),u=function(e,t,n,r){const i=(0,Ie.A)(e,(e,t,n)=>{const r=(0,a.A)(t,e=>({idx:n,path:e}));return e.concat(r)},[]),s=De((0,nn.A)(i,e=>{if(!0===t.definition[e.idx].ignoreAmbiguities)return[];const s=e.idx,o=e.path,c=(0,Se.A)(i,e=>{return!0!==t.definition[e.idx].ignoreAmbiguities&&e.idx<s&&(n=e.path,r=o,n.length<r.length&&se(n,(e,t)=>{const n=r[t];return e===n||n.categoryMatchesMap[e.tokenTypeIdx]}));var n,r});return(0,a.A)(c,e=>{const i=[e.idx+1,s+1],a=0===t.idx?"":t.idx;return{message:r.buildAlternationPrefixAmbiguityError({topLevelRule:n,alternation:t,ambiguityIndices:i,prefixPath:e.path}),type:Or.AMBIGUOUS_PREFIX_ALTS,ruleName:n.name,occurrence:a,alternatives:i}})}));return s}(c,i,e,n);return l.concat(u)});return o}class Vn extends z{constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}}function Hn(e){const t=(0,Ae.A)(e,{errMsgProvider:Jt}),n={};return(0,r.A)(e.rules,e=>{n[e.name]=e}),function(e,t){const n=new tn(e,t);return n.resolveRefs(),n.errors}(n,t.errMsgProvider)}const Wn="MismatchedTokenException",zn="NoViableAltException",Yn="EarlyExitException",Xn="NotAllInputParsedException",qn=[Wn,zn,Yn,Xn];function Qn(e){return ne(qn,e.name)}Object.freeze(qn);class Zn extends Error{constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}class Jn extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=Wn}}class er extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=zn}}class tr extends Zn{constructor(e,t){super(e,t),this.name=Xn}}class nr extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=Yn}}const rr={},ir="InRuleRecoveryException";class sr extends Error{constructor(e){super(e),this.name=ir}}function ar(e,t,n,r,i,s,a){const o=this.getKeyForAutomaticLookahead(r,i);let c=this.firstAfterRepMap[o];if(void 0===c){const e=this.getCurrRuleFullName();c=new s(this.getGAstProductions()[e],i).startWalking(),this.firstAfterRepMap[o]=c}let l=c.token,u=c.occurrence;const d=c.isEndOfRule;1===this.RULE_STACK.length&&d&&void 0===l&&(l=Xt,u=1),void 0!==l&&void 0!==u&&this.shouldInRepetitionRecoveryBeTried(l,u,a)&&this.tryInRepetitionRecovery(e,t,n,l)}const or=1024,cr=1280,lr=1536;function ur(e,t,n){return n|t|e}class dr{constructor(e){var t;this.maxLookahead=null!==(t=null==e?void 0:e.maxLookahead)&&void 0!==t?t:Lr.maxLookahead}validate(e){const t=this.validateNoLeftRecursion(e.rules);if((0,s.A)(t)){const n=this.validateEmptyOrAlternatives(e.rules),r=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),i=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...t,...n,...r,...i]}return t}validateNoLeftRecursion(e){return(0,nn.A)(e,e=>Gn(e,e,en))}validateEmptyOrAlternatives(e){return(0,nn.A)(e,e=>function(e,t){const n=new Bn;e.accept(n);const r=n.alternations;return(0,nn.A)(r,n=>{const r=un(n.definition);return(0,nn.A)(r,(r,i)=>{const a=Tn([r],[],kt,1);return(0,s.A)(a)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:n,emptyChoiceIdx:i}),type:Or.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:n.idx,alternative:i+1}]:[]})})}(e,en))}validateAmbiguousAlternationAlternatives(e,t){return(0,nn.A)(e,e=>jn(e,t,en))}validateSomeNonEmptyLookaheadPath(e,t){return function(e,t,n){const i=[];return(0,r.A)(e,e=>{const a=new Vn;e.accept(a);const o=a.allProductions;(0,r.A)(o,r=>{const a=En(r),o=r.maxLookahead||t,c=On(r.idx,e,a,o)[0];if((0,s.A)((0,he.A)(c))){const t=n.buildEmptyRepetitionError({topLevelRule:e,repetition:r});i.push({message:t,type:Or.NO_NON_EMPTY_LOOKAHEAD,ruleName:e.name})}})}),i}(e,t,en)}buildLookaheadForAlternation(e){return function(e,t,n,r,i,s){const a=bn(e,t,n);return s(a,r,Pn(a)?xt:kt,i)}(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,kn)}buildLookaheadForOptional(e){return function(e,t,n,r,i,s){const a=On(e,t,i,n),o=Pn(a)?xt:kt;return s(a[0],o,r)}(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,En(e.prodType),xn)}}const hr=new class extends z{constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}};function fr(e,t){!0===isNaN(e.startOffset)?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffset<t.endOffset==!0&&(e.endOffset=t.endOffset)}function pr(e,t){!0===isNaN(e.startOffset)?(e.startOffset=t.startOffset,e.startColumn=t.startColumn,e.startLine=t.startLine,e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine):e.endOffset<t.endOffset==!0&&(e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine)}function mr(e,t){Object.defineProperty(e,"name",{enumerable:!1,configurable:!0,writable:!1,value:t})}function gr(e,t){const n=(0,T.A)(e),r=n.length;for(let i=0;i<r;i++){const r=e[n[i]],s=r.length;for(let e=0;e<s;e++){const n=r[e];void 0===n.tokenTypeIdx&&this[n.name](n.children,t)}}}function yr(e,t){const n=function(){};mr(n,e+"BaseSemantics");const r={visit:function(e,t){if((0,Q.A)(e)&&(e=e[0]),!(0,ge.A)(e))return this[e.name](e.children,t)},validateVisitor:function(){const e=function(e,t){const n=function(e,t){const n=(0,Se.A)(t,t=>!1===(0,$e.A)(e[t])),r=(0,a.A)(n,t=>({msg:`Missing visitor method: <${t}> on ${e.constructor.name} CST Visitor.`,type:Ar.MISSING_METHOD,methodName:t}));return De(r)}(e,t);return n}(this,t);if(!(0,s.A)(e)){const t=(0,a.A)(e,e=>e.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:\n\t${t.join("\n\n").replace(/\n/g,"\n\t")}`)}}};return(n.prototype=r).constructor=n,n._RULE_NAMES=t,n}var Ar;!function(e){e[e.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",e[e.MISSING_METHOD=1]="MISSING_METHOD"}(Ar||(Ar={}));var Tr=n(49084);const vr={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(vr);const Rr=!0,Er=Math.pow(2,8)-1,$r=Yt({name:"RECORDING_PHASE_TOKEN",pattern:Mt.NA});Nt([$r]);const kr=qt($r,"This IToken indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",-1,-1,-1,-1,-1,-1);Object.freeze(kr);const xr={name:"This CSTNode indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",children:{}};function Ir(e,t,n,r=!1){wr(n);const i=(0,Et.A)(this.recordingProdStack),s=(0,$e.A)(t)?t:t.DEF,a=new e({definition:[],idx:n});return r&&(a.separator=t.SEP),(0,o.A)(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(a),s.call(this),i.definition.push(a),this.recordingProdStack.pop(),vr}function Sr(e,t){wr(t);const n=(0,Et.A)(this.recordingProdStack),i=!1===(0,Q.A)(e),s=!1===i?e:e.DEF,a=new V({definition:[],idx:t,ignoreAmbiguities:i&&!0===e.IGNORE_AMBIGUITIES});(0,o.A)(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD);const c=J(s,e=>(0,$e.A)(e.GATE));return a.hasPredicates=c,n.definition.push(a),(0,r.A)(s,e=>{const t=new U({definition:[]});a.definition.push(t),(0,o.A)(e,"IGNORE_AMBIGUITIES")?t.ignoreAmbiguities=e.IGNORE_AMBIGUITIES:(0,o.A)(e,"GATE")&&(t.ignoreAmbiguities=!0),this.recordingProdStack.push(t),e.ALT.call(this),this.recordingProdStack.pop()}),vr}function Nr(e){return 0===e?"":`${e}`}function wr(e){if(e<0||e>Er){const t=new Error(`Invalid DSL Method idx value: <${e}>\n\tIdx value must be a none negative value smaller than ${Er+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}const Cr=qt(Xt,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Cr);const Lr=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Zt,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),br=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0});var Or,_r;function Pr(e=void 0){return function(){return e}}!function(e){e[e.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",e[e.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",e[e.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",e[e.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",e[e.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",e[e.LEFT_RECURSION=5]="LEFT_RECURSION",e[e.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",e[e.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",e[e.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",e[e.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",e[e.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",e[e.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",e[e.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",e[e.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"}(Or||(Or={}));class Mr{static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated.\t\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;const t=this.className;this.TRACE_INIT("toFastProps",()=>{l(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),(0,r.A)(this.definedRulesNames,e=>{const t=this[e].originalGrammarAction;let n;this.TRACE_INIT(`${e} Rule`,()=>{n=this.topLevelRuleRecord(e,t)}),this.gastProductionsCache[e]=n})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Hn({rules:(0,i.A)(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if((0,s.A)(n)&&!1===this.skipValidations){const n=(e={rules:(0,i.A)(this.gastProductionsCache),tokenTypes:(0,i.A)(this.tokensMap),errMsgProvider:en,grammarName:t},Mn((e=(0,Ae.A)(e,{errMsgProvider:en})).rules,e.tokenTypes,e.errMsgProvider,e.grammarName)),r=function(e){const t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return(0,a.A)(t,e=>Object.assign({type:Or.CUSTOM_LOOKAHEAD_VALIDATION},e))}({lookaheadStrategy:this.lookaheadStrategy,rules:(0,i.A)(this.gastProductionsCache),tokenTypes:(0,i.A)(this.tokensMap),grammarName:t});this.definitionErrors=this.definitionErrors.concat(n,r)}var e}),(0,s.A)(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{const e=function(e){const t={};return(0,r.A)(e,e=>{const n=new me(e).startWalking();R(t,n)}),t}((0,i.A)(this.gastProductionsCache));this.resyncFollows=e}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var e,t;null===(t=(e=this.lookaheadStrategy).initialize)||void 0===t||t.call(e,{rules:(0,i.A)(this.gastProductionsCache)}),this.preComputeLookaheadFunctions((0,i.A)(this.gastProductionsCache))})),!Mr.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,s.A)(this.definitionErrors))throw e=(0,a.A)(this.definitionErrors,e=>e.message),new Error(`Parser Definition Errors detected:\n ${e.join("\n-------------------------------\n")}`)})}constructor(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;const n=this;if(n.initErrorHandler(t),n.initLexerAdapter(),n.initLooksAhead(t),n.initRecognizerEngine(e,t),n.initRecoverable(t),n.initTreeBuilder(t),n.initContentAssist(),n.initGastRecorder(t),n.initPerformanceTracer(t),(0,o.A)(t,"ignoredIssues"))throw new Error("The <ignoredIssues> IParserConfig property has been deprecated.\n\tPlease use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\tFor further details.");this.skipValidations=(0,o.A)(t,"skipValidations")?t.skipValidations:Lr.skipValidations}}Mr.DEFER_DEFINITION_ERRORS_HANDLING=!1,_r=Mr,[class{initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,o.A)(e,"recoveryEnabled")?e.recoveryEnabled:Lr.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=ar)}getTokenToInsert(e){const t=qt(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,n,r){const i=this.findReSyncTokenType(),s=this.exportLexerState(),a=[];let o=!1;const c=this.LA(1);let l=this.LA(1);const u=()=>{const e=this.LA(0),t=this.errorMessageProvider.buildMismatchTokenMessage({expected:r,actual:c,previous:e,ruleName:this.getCurrRuleFullName()}),n=new Jn(t,c,this.LA(0));n.resyncedTokens=un(a),this.SAVE_ERROR(n)};for(;!o;){if(this.tokenMatcher(l,r))return void u();if(n.call(this))return u(),void e.apply(this,t);this.tokenMatcher(l,i)?o=!0:(l=this.SKIP_TOKEN(),this.addToResyncTokens(l,a))}this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,t,n){return!1!==n&&!this.tokenMatcher(this.LA(1),e)&&!this.isBackTracking()&&!this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t))}getFollowsForInRuleRecovery(e,t){const n=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){const e=this.SKIP_TOKEN();return this.consumeToken(),e}throw new sr("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e))return!1;if((0,s.A)(t))return!1;const n=this.LA(1);return void 0!==(0,Fe.A)(t,e=>this.tokenMatcher(n,e))}canRecoverWithSingleTokenDeletion(e){return!!this.canTokenTypeBeDeletedInRecovery(e)&&this.tokenMatcher(this.LA(2),e)}isInCurrentRuleReSyncSet(e){const t=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(t);return ne(n,e)}findReSyncTokenType(){const e=this.flattenFollowSet();let t=this.LA(1),n=2;for(;;){const r=(0,Fe.A)(e,e=>Qt(t,e));if(void 0!==r)return r;t=this.LA(n),n++}}getCurrFollowKey(){if(1===this.RULE_STACK.length)return rr;const e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){const e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return(0,a.A)(e,(n,r)=>0===r?rr:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:t[r],inRule:this.shortRuleNameToFullName(e[r-1])})}flattenFollowSet(){const e=(0,a.A)(this.buildFullFollowKeyStack(),e=>this.getFollowSetFromFollowKey(e));return(0,he.A)(e)}getFollowSetFromFollowKey(e){if(e===rr)return[Xt];const t=e.ruleName+e.idxInCallingRule+pe+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,Xt)||t.push(e),t}reSyncTo(e){const t=[];let n=this.LA(1);for(;!1===this.tokenMatcher(n,e);)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,t);return un(t)}attemptInRepetitionRecovery(e,t,n,r,i,s,a){}getCurrentGrammarPath(e,t){return{ruleStack:this.getHumanReadableRuleStack(),occurrenceStack:(0,c.A)(this.RULE_OCCURRENCE_STACK),lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return(0,a.A)(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}},class{initLooksAhead(e){this.dynamicTokensEnabled=(0,o.A)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Lr.dynamicTokensEnabled,this.maxLookahead=(0,o.A)(e,"maxLookahead")?e.maxLookahead:Lr.maxLookahead,this.lookaheadStrategy=(0,o.A)(e,"lookaheadStrategy")?e.lookaheadStrategy:new dr({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){(0,r.A)(e,e=>{this.TRACE_INIT(`${e.name} Rule Lookahead`,()=>{const{alternation:t,repetition:n,option:i,repetitionMandatory:s,repetitionMandatoryWithSeparator:a,repetitionWithSeparator:o}=function(e){hr.reset(),e.accept(hr);const t=hr.dslMethods;return hr.reset(),t}(e);(0,r.A)(t,t=>{const n=0===t.idx?"":t.idx;this.TRACE_INIT(`${oe(t)}${n}`,()=>{const n=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:t.idx,rule:e,maxLookahead:t.maxLookahead||this.maxLookahead,hasPredicates:t.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),r=ur(this.fullRuleNameToShort[e.name],256,t.idx);this.setLaFuncCache(r,n)})}),(0,r.A)(n,t=>{this.computeLookaheadFunc(e,t.idx,768,"Repetition",t.maxLookahead,oe(t))}),(0,r.A)(i,t=>{this.computeLookaheadFunc(e,t.idx,512,"Option",t.maxLookahead,oe(t))}),(0,r.A)(s,t=>{this.computeLookaheadFunc(e,t.idx,or,"RepetitionMandatory",t.maxLookahead,oe(t))}),(0,r.A)(a,t=>{this.computeLookaheadFunc(e,t.idx,lr,"RepetitionMandatoryWithSeparator",t.maxLookahead,oe(t))}),(0,r.A)(o,t=>{this.computeLookaheadFunc(e,t.idx,cr,"RepetitionWithSeparator",t.maxLookahead,oe(t))})})})}computeLookaheadFunc(e,t,n,r,i,s){this.TRACE_INIT(`${s}${0===t?"":t}`,()=>{const s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:r}),a=ur(this.fullRuleNameToShort[e.name],n,t);this.setLaFuncCache(a,s)})}getKeyForAutomaticLookahead(e,t){return ur(this.getLastExplicitRuleShortName(),e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},class{initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,o.A)(e,"nodeLocationTracking")?e.nodeLocationTracking:Lr.nodeLocationTracking,this.outputCst)if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=pr,this.setNodeLocationFromNode=pr,this.cstPostRule=Rt.A,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=fr,this.setNodeLocationFromNode=fr,this.cstPostRule=Rt.A,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else{if(!/none/i.test(this.nodeLocationTracking))throw Error(`Invalid <nodeLocationTracking> config option: "${e.nodeLocationTracking}"`);this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=Rt.A,this.setInitialNodeLocation=Rt.A}else this.cstInvocationStateUpdate=Rt.A,this.cstFinallyStateUpdate=Rt.A,this.cstPostTerminal=Rt.A,this.cstPostNonTerminal=Rt.A,this.cstPostRule=Rt.A}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){const t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){const t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){const t=this.LA(0),n=e.location;n.startOffset<=t.startOffset==1?(n.endOffset=t.endOffset,n.endLine=t.endLine,n.endColumn=t.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){const t=this.LA(0),n=e.location;n.startOffset<=t.startOffset==1?n.endOffset=t.endOffset:n.startOffset=NaN}cstPostTerminal(e,t){const n=this.CST_STACK[this.CST_STACK.length-1];var r,i,s;i=t,s=e,void 0===(r=n).children[s]?r.children[s]=[i]:r.children[s].push(i),this.setNodeLocationFromToken(n.location,t)}cstPostNonTerminal(e,t){const n=this.CST_STACK[this.CST_STACK.length-1];!function(e,t,n){void 0===e.children[t]?e.children[t]=[n]:e.children[t].push(n)}(n,t,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if((0,ge.A)(this.baseCstVisitorConstructor)){const e=yr(this.className,(0,T.A)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if((0,ge.A)(this.baseCstVisitorWithDefaultsConstructor)){const e=function(e,t,n){const i=function(){};mr(i,e+"BaseSemanticsWithDefaults");const s=Object.create(n.prototype);return(0,r.A)(t,e=>{s[e]=gr}),(i.prototype=s).constructor=i,i}(this.className,(0,T.A)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){const e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},class{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(!0!==this.selfAnalysisDone)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Cr}LA(e){const t=this.currIdx+e;return t<0||this.tokVectorLength<=t?Cr:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},class{initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=xt,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,o.A)(t,"serializedGrammar"))throw Error("The Parser's configuration can no longer contain a <serializedGrammar> property.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n\tFor Further details.");if((0,Q.A)(e)){if((0,s.A)(e))throw Error("A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis no longer a Token vector (since v4.0).");if("number"==typeof e[0].startOffset)throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.")}if((0,Q.A)(e))this.tokensMap=(0,Ie.A)(e,(e,t)=>(e[t.name]=t,e),{});else if((0,o.A)(e,"modes")&&se((0,he.A)((0,i.A)(e.modes)),bt)){const t=(0,he.A)((0,i.A)(e.modes)),n=de(t);this.tokensMap=(0,Ie.A)(n,(e,t)=>(e[t.name]=t,e),{})}else{if(!(0,Tr.A)(e))throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap=(0,c.A)(e)}this.tokensMap.EOF=Xt;const n=(0,o.A)(e,"modes")?(0,he.A)((0,i.A)(e.modes)):(0,i.A)(e),r=se(n,e=>(0,s.A)(e.categoryMatches));this.tokenMatcher=r?xt:kt,Nt((0,i.A)(this.tokensMap))}defineRule(e,t,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);const r=(0,o.A)(n,"resyncEnabled")?n.resyncEnabled:br.resyncEnabled,i=(0,o.A)(n,"recoveryValueFunc")?n.recoveryValueFunc:br.recoveryValueFunc,s=this.ruleShortNameIdx<<12;let a;return this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s,a=!0===this.outputCst?function(...n){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),t.apply(this,n);const r=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(r),r}catch(a){return this.invokeRuleCatch(a,r,i)}finally{this.ruleFinallyStateUpdate()}}:function(...n){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),t.apply(this,n)}catch(a){return this.invokeRuleCatch(a,r,i)}finally{this.ruleFinallyStateUpdate()}},Object.assign(a,{ruleName:e,originalGrammarAction:t})}invokeRuleCatch(e,t,n){const r=1===this.RULE_STACK.length,i=t&&!this.isBackTracking()&&this.recoveryEnabled;if(Qn(e)){const t=e;if(i){const r=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(r)){if(t.resyncedTokens=this.reSyncTo(r),this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];return e.recoveredNode=!0,e}return n(e)}if(this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];e.recoveredNode=!0,t.partialCstResult=e}throw t}if(r)return this.moveToTerminatedState(),n(e);throw t}throw e}optionInternal(e,t){const n=this.getKeyForAutomaticLookahead(512,t);return this.optionInternalLogic(e,t,n)}optionInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof e){r=e.DEF;const t=e.GATE;if(void 0!==t){const e=i;i=()=>t.call(this)&&e.call(this)}}else r=e;if(!0===i.call(this))return r.call(this)}atLeastOneInternal(e,t){const n=this.getKeyForAutomaticLookahead(or,e);return this.atLeastOneInternalLogic(e,t,n)}atLeastOneInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;if(!0!==i.call(this))throw this.raiseEarlyExitException(e,Rn.REPETITION_MANDATORY,t.ERR_MSG);{let e=this.doSingleRepetition(r);for(;!0===i.call(this)&&!0===e;)e=this.doSingleRepetition(r)}this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],i,or,e,gn)}atLeastOneSepFirstInternal(e,t){const n=this.getKeyForAutomaticLookahead(lr,e);this.atLeastOneSepFirstInternalLogic(e,t,n)}atLeastOneSepFirstInternalLogic(e,t,n){const r=t.DEF,i=t.SEP;if(!0!==this.getLaFuncFromCache(n).call(this))throw this.raiseEarlyExitException(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG);{r.call(this);const t=()=>this.tokenMatcher(this.LA(1),i);for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,r,yn],t,lr,e,yn)}}manyInternal(e,t){const n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,t,n)}manyInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;let s=!0;for(;!0===i.call(this)&&!0===s;)s=this.doSingleRepetition(r);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],i,768,e,pn,s)}manySepFirstInternal(e,t){const n=this.getKeyForAutomaticLookahead(cr,e);this.manySepFirstInternalLogic(e,t,n)}manySepFirstInternalLogic(e,t,n){const r=t.DEF,i=t.SEP;if(!0===this.getLaFuncFromCache(n).call(this)){r.call(this);const t=()=>this.tokenMatcher(this.LA(1),i);for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,r,mn],t,cr,e,mn)}}repetitionSepSecondInternal(e,t,n,r,i){for(;n();)this.CONSUME(t),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,n,r,i],n,lr,e,i)}doSingleRepetition(e){const t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){const n=this.getKeyForAutomaticLookahead(256,t),r=(0,Q.A)(e)?e:e.DEF,i=this.getLaFuncFromCache(n).call(this,r);if(void 0!==i)return r[i].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),0===this.RULE_STACK.length&&!1===this.isAtEndOfInput()){const e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new tr(t,e))}}subruleInternal(e,t,n){let r;try{const i=void 0!==n?n.ARGS:void 0;return this.subruleIdx=t,r=e.apply(this,i),this.cstPostNonTerminal(r,void 0!==n&&void 0!==n.LABEL?n.LABEL:e.ruleName),r}catch(i){throw this.subruleInternalError(i,n,e.ruleName)}}subruleInternalError(e,t,n){throw Qn(e)&&void 0!==e.partialCstResult&&(this.cstPostNonTerminal(e.partialCstResult,void 0!==t&&void 0!==t.LABEL?t.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,t,n){let r;try{const t=this.LA(1);!0===this.tokenMatcher(t,e)?(this.consumeToken(),r=t):this.consumeInternalError(e,t,n)}catch(i){r=this.consumeInternalRecovery(e,t,i)}return this.cstPostTerminal(void 0!==n&&void 0!==n.LABEL?n.LABEL:e.name,r),r}consumeInternalError(e,t,n){let r;const i=this.LA(0);throw r=void 0!==n&&n.ERR_MSG?n.ERR_MSG:this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Jn(r,t,i))}consumeInternalRecovery(e,t,n){if(!this.recoveryEnabled||"MismatchedTokenException"!==n.name||this.isBackTracking())throw n;{const i=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,i)}catch(r){throw r.name===ir?n:r}}}saveRecogState(){const e=this.errors,t=(0,c.A)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return 0!==this.isBackTrackingStack.length}getCurrRuleFullName(){const e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),Xt)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},class{ACTION(e){return e.call(this)}consume(e,t,n){return this.consumeInternal(t,e,n)}subrule(e,t,n){return this.subruleInternal(t,e,n)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,n=br){if(ne(this.definedRulesNames,e)){const t={message:en.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Or.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(t)}this.definedRulesNames.push(e);const r=this.defineRule(e,t,n);return this[e]=r,r}OVERRIDE_RULE(e,t,n=br){const r=function(e,t,n){const r=[];let i;return ne(t,e)||(i=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${n}<-as it is not defined in any of the super grammars `,r.push({message:i,type:Or.INVALID_RULE_OVERRIDE,ruleName:e})),r}(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(r);const i=this.defineRule(e,t,n);return this[e]=i,i}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);const n=this.saveRecogState();try{return e.apply(this,t),!0}catch(r){if(Qn(r))return!1;throw r}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return e=(0,i.A)(this.gastProductionsCache),(0,a.A)(e,W);var e}},class{initErrorHandler(e){this._errors=[],this.errorMessageProvider=(0,o.A)(e,"errorMessageProvider")?e.errorMessageProvider:Lr.errorMessageProvider}SAVE_ERROR(e){if(Qn(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,c.A)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return(0,c.A)(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,n){const r=this.getCurrRuleFullName(),i=On(e,this.getGAstProductions()[r],t,this.maxLookahead)[0],s=[];for(let o=1;o<=this.maxLookahead;o++)s.push(this.LA(o));const a=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:i,actual:s,previous:this.LA(0),customUserDescription:n,ruleName:r});throw this.SAVE_ERROR(new nr(a,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){const n=this.getCurrRuleFullName(),r=bn(e,this.getGAstProductions()[n],this.maxLookahead),i=[];for(let o=1;o<=this.maxLookahead;o++)i.push(this.LA(o));const s=this.LA(0),a=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:r,actual:i,previous:s,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new er(a,this.LA(1),s))}},class{initContentAssist(){}computeContentAssist(e,t){const n=this.gastProductionsCache[e];if((0,ge.A)(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return Tn([n],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){const t=Ue(e.ruleStack),n=this.getGAstProductions()[t];return new hn(n,e).startWalking()}},class{initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){const t=e>0?e:"";this[`CONSUME${t}`]=function(t,n){return this.consumeInternalRecord(t,e,n)},this[`SUBRULE${t}`]=function(t,n){return this.subruleInternalRecord(t,e,n)},this[`OPTION${t}`]=function(t){return this.optionInternalRecord(t,e)},this[`OR${t}`]=function(t){return this.orInternalRecord(t,e)},this[`MANY${t}`]=function(t){this.manyInternalRecord(e,t)},this[`MANY_SEP${t}`]=function(t){this.manySepFirstInternalRecord(e,t)},this[`AT_LEAST_ONE${t}`]=function(t){this.atLeastOneInternalRecord(e,t)},this[`AT_LEAST_ONE_SEP${t}`]=function(t){this.atLeastOneSepFirstInternalRecord(e,t)}}this.consume=function(e,t,n){return this.consumeInternalRecord(t,e,n)},this.subrule=function(e,t,n){return this.subruleInternalRecord(t,e,n)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{const e=this;for(let t=0;t<10;t++){const n=t>0?t:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return Cr}topLevelRuleRecord(e,t){try{const n=new D({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),t.call(this),this.recordingProdStack.pop(),n}catch(n){if(!0!==n.KNOWN_RECORDER_ERROR)try{n.message=n.message+'\n\t This error was thrown during the "grammar recording phase" For more info see:\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording'}catch(r){throw n}throw n}}optionInternalRecord(e,t){return Ir.call(this,F,e,t)}atLeastOneInternalRecord(e,t){Ir.call(this,G,t,e)}atLeastOneSepFirstInternalRecord(e,t){Ir.call(this,K,t,e,Rr)}manyInternalRecord(e,t){Ir.call(this,B,t,e)}manySepFirstInternalRecord(e,t){Ir.call(this,j,t,e,Rr)}orInternalRecord(e,t){return Sr.call(this,e,t)}subruleInternalRecord(e,t,n){if(wr(t),!e||!1===(0,o.A)(e,"ruleName")){const n=new Error(`<SUBRULE${Nr(t)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=(0,Et.A)(this.recordingProdStack),i=e.ruleName,s=new M({idx:t,nonTerminalName:i,label:null==n?void 0:n.LABEL,referencedRule:void 0});return r.definition.push(s),this.outputCst?xr:vr}consumeInternalRecord(e,t,n){if(wr(t),!Ct(e)){const n=new Error(`<CONSUME${Nr(t)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=(0,Et.A)(this.recordingProdStack),i=new H({idx:t,terminalType:e,label:null==n?void 0:n.LABEL});return r.definition.push(i),kr}},class{initPerformanceTracer(e){if((0,o.A)(e,"traceInitPerf")){const t=e.traceInitPerf,n="number"==typeof t;this.traceInitMaxIdent=n?t:1/0,this.traceInitPerf=n?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Lr.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${e}>`);const{time:r,value:i}=$t(t),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${e}> time: ${r}ms`),this.traceInitIndent--,i}return t()}}].forEach(e=>{const t=e.prototype;Object.getOwnPropertyNames(t).forEach(n=>{if("constructor"===n)return;const r=Object.getOwnPropertyDescriptor(t,n);r&&(r.get||r.set)?Object.defineProperty(_r.prototype,n,r):_r.prototype[n]=e.prototype[n]})});class Dr extends Mr{constructor(e,t=Lr){const n=(0,c.A)(t);n.outputCst=!1,super(e,n)}}},40436:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Emitter=t.Event=void 0;const r=n(406);var i;!function(e){const t={dispose(){}};e.None=function(){return t}}(i||(t.Event=i={}));class s{add(e,t=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let n=!1;for(let r=0,i=this._callbacks.length;r<i;r++)if(this._callbacks[r]===e){if(this._contexts[r]===t)return this._callbacks.splice(r,1),void this._contexts.splice(r,1);n=!0}if(n)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...e){if(!this._callbacks)return[];const t=[],n=this._callbacks.slice(0),i=this._contexts.slice(0);for(let a=0,o=n.length;a<o;a++)try{t.push(n[a].apply(i[a],e))}catch(s){(0,r.default)().console.error(s)}return t}isEmpty(){return!this._callbacks||0===this._callbacks.length}dispose(){this._callbacks=void 0,this._contexts=void 0}}class a{constructor(e){this._options=e}get event(){return this._event||(this._event=(e,t,n)=>{this._callbacks||(this._callbacks=new s),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);const r={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),r.dispose=a._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(r),r}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}}t.Emitter=a,a._noop=function(){}},48663:(e,t,n)=>{n.d(t,{A:()=>r});const r=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},49948:(e,t,n)=>{n.d(t,{Ao:()=>h,Nt:()=>d,PC:()=>f,TH:()=>i,Yv:()=>u,lU:()=>c});var r=n(11921);const i=/\r?\n/gm,s=new r.H;class a extends r.z{constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){const t=String.fromCharCode(e.value);if(this.multiline||"\n"!==t||(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const e=d(t);this.endRegexpStack.push(e),this.isStarting&&(this.startRegexp+=e)}}visitSet(e){if(!this.multiline){const t=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(t);this.multiline=Boolean("\n".match(n))}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){if("Group"===e.type){if(e.quantifier)return}super.visitChildren(e)}}const o=new a;function c(e){try{return"string"==typeof e&&(e=new RegExp(e)),e=e.toString(),o.reset(e),o.visit(s.pattern(e)),o.multiline}catch(t){return!1}}const l="\f\n\r\t\v \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff".split("");function u(e){const t="string"==typeof e?new RegExp(e):e;return l.some(e=>t.test(e))}function d(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function h(e){return Array.prototype.map.call(e,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:d(e)).join("")}function f(e,t){const n=function(e){"string"==typeof e&&(e=new RegExp(e));const t=e,n=e.source;let r=0;function i(){let e,s="";function a(e){s+=n.substr(r,e),r+=e}function o(e){s+="(?:"+n.substr(r,e)+"|$)",r+=e}for(;r<n.length;)switch(n[r]){case"\\":switch(n[r+1]){case"c":o(3);break;case"x":o(4);break;case"u":t.unicode?"{"===n[r+2]?o(n.indexOf("}",r)-r+1):o(6):o(2);break;case"p":case"P":t.unicode?o(n.indexOf("}",r)-r+1):o(2);break;case"k":o(n.indexOf(">",r)-r+1);break;default:o(2)}break;case"[":e=/\[(?:\\.|.)*?\]/g,e.lastIndex=r,e=e.exec(n)||[],o(e[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":a(1);break;case"{":e=/\{\d+,?\d*\}/g,e.lastIndex=r,e=e.exec(n),e?a(e[0].length):o(1);break;case"(":if("?"===n[r+1])switch(n[r+2]){case":":s+="(?:",r+=3,s+=i()+"|$)";break;case"=":s+="(?=",r+=3,s+=i()+")";break;case"!":e=r,r+=3,i(),s+=n.substr(e,r-e);break;case"<":switch(n[r+3]){case"=":case"!":e=r,r+=4,i(),s+=n.substr(e,r-e);break;default:a(n.indexOf(">",r)-r+1),s+=i()+"|$)"}}else a(1),s+=i()+"|$)";break;case")":return++r,s;default:o(1)}return s}return new RegExp(i(),e.flags)}(e),r=t.match(n);return!!r&&r[0].length>0}},50586:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(80565),i=n(95526),s=n(97427);const a=function(e){return"string"==typeof e||!(0,i.A)(e)&&(0,s.A)(e)&&"[object String]"==(0,r.A)(e)}},52540:(e,t,n)=>{n.d(t,{A:()=>a});var r=Object.prototype.hasOwnProperty;const i=function(e,t){return null!=e&&r.call(e,t)};var s=n(96923);const a=function(e,t){return null!=e&&(0,s.A)(e,t,i)}},55216:(e,t,n)=>{var r;n.d(t,{A:()=>s,r:()=>i}),(()=>{var e={470:e=>{function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",i=0,s=-1,a=0,o=0;o<=e.length;++o){if(o<e.length)n=e.charCodeAt(o);else{if(47===n)break;n=47}if(47===n){if(s===o-1||1===a);else if(s!==o-1&&2===a){if(r.length<2||2!==i||46!==r.charCodeAt(r.length-1)||46!==r.charCodeAt(r.length-2))if(r.length>2){var c=r.lastIndexOf("/");if(c!==r.length-1){-1===c?(r="",i=0):i=(r=r.slice(0,c)).length-1-r.lastIndexOf("/"),s=o,a=0;continue}}else if(2===r.length||1===r.length){r="",i=0,s=o,a=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(s+1,o):r=e.slice(s+1,o),i=o-s-1;s=o,a=0}else 46===n&&-1!==a?++a:a=-1}return r}var r={resolve:function(){for(var e,r="",i=!1,s=arguments.length-1;s>=-1&&!i;s--){var a;s>=0?a=arguments[s]:(void 0===e&&(e=process.cwd()),a=e),t(a),0!==a.length&&(r=a+"/"+r,i=47===a.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&i&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var i=arguments[n];t(i),i.length>0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var i=1;i<e.length&&47===e.charCodeAt(i);++i);for(var s=e.length,a=s-i,o=1;o<n.length&&47===n.charCodeAt(o);++o);for(var c=n.length-o,l=a<c?a:c,u=-1,d=0;d<=l;++d){if(d===l){if(c>l){if(47===n.charCodeAt(o+d))return n.slice(o+d+1);if(0===d)return n.slice(o+d)}else a>l&&(47===e.charCodeAt(i+d)?u=d:0===d&&(u=0));break}var h=e.charCodeAt(i+d);if(h!==n.charCodeAt(o+d))break;47===h&&(u=d)}var f="";for(d=i+u+1;d<=s;++d)d!==s&&47!==e.charCodeAt(d)||(0===f.length?f+="..":f+="/..");return f.length>0?f+n.slice(o+u):(o+=u,47===n.charCodeAt(o)&&++o,n.slice(o))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,i=-1,s=!0,a=e.length-1;a>=1;--a)if(47===(n=e.charCodeAt(a))){if(!s){i=a;break}}else s=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,i=0,s=-1,a=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var o=n.length-1,c=-1;for(r=e.length-1;r>=0;--r){var l=e.charCodeAt(r);if(47===l){if(!a){i=r+1;break}}else-1===c&&(a=!1,c=r+1),o>=0&&(l===n.charCodeAt(o)?-1==--o&&(s=r):(o=-1,s=c))}return i===s?s=c:-1===s&&(s=e.length),e.slice(i,s)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!a){i=r+1;break}}else-1===s&&(a=!1,s=r+1);return-1===s?"":e.slice(i,s)},extname:function(e){t(e);for(var n=-1,r=0,i=-1,s=!0,a=0,o=e.length-1;o>=0;--o){var c=e.charCodeAt(o);if(47!==c)-1===i&&(s=!1,i=o+1),46===c?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!s){r=o+1;break}}return-1===n||-1===i||0===a||1===a&&n===i-1&&n===r+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,i=e.charCodeAt(0),s=47===i;s?(n.root="/",r=1):r=0;for(var a=-1,o=0,c=-1,l=!0,u=e.length-1,d=0;u>=r;--u)if(47!==(i=e.charCodeAt(u)))-1===c&&(l=!1,c=u+1),46===i?-1===a?a=u:1!==d&&(d=1):-1!==a&&(d=-1);else if(!l){o=u+1;break}return-1===a||-1===c||0===d||1===d&&a===c-1&&a===o+1?-1!==c&&(n.base=n.name=0===o&&s?e.slice(1,c):e.slice(o,c)):(0===o&&s?(n.name=e.slice(1,a),n.base=e.slice(1,c)):(n.name=e.slice(o,a),n.base=e.slice(o,c)),n.ext=e.slice(a,c)),o>0?n.dir=e.slice(0,o-1):s&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{let e;if(n.r(i),n.d(i,{URI:()=>u,Utils:()=>k}),"object"==typeof process)e="win32"===process.platform;else if("object"==typeof navigator){let t=navigator.userAgent;e=t.indexOf("Windows")>=0}const t=/^\w[\w\d+.-]*$/,r=/^\//,s=/^\/\//;function a(e,n){if(!e.scheme&&n)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!t.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!r.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(s.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}const o="",c="/",l=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class u{static isUri(e){return e instanceof u||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"string"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}scheme;authority;path;query;fragment;constructor(e,t,n,r,i,s=!1){"object"==typeof e?(this.scheme=e.scheme||o,this.authority=e.authority||o,this.path=e.path||o,this.query=e.query||o,this.fragment=e.fragment||o):(this.scheme=function(e,t){return e||t?e:"file"}(e,s),this.authority=t||o,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==c&&(t=c+t):t=c}return t}(this.scheme,n||o),this.query=r||o,this.fragment=i||o,a(this,s))}get fsPath(){return g(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:r,query:i,fragment:s}=e;return void 0===t?t=this.scheme:null===t&&(t=o),void 0===n?n=this.authority:null===n&&(n=o),void 0===r?r=this.path:null===r&&(r=o),void 0===i?i=this.query:null===i&&(i=o),void 0===s?s=this.fragment:null===s&&(s=o),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&s===this.fragment?this:new h(t,n,r,i,s)}static parse(e,t=!1){const n=l.exec(e);return n?new h(n[2]||o,v(n[4]||o),v(n[5]||o),v(n[7]||o),v(n[9]||o),t):new h(o,o,o,o,o)}static file(t){let n=o;if(e&&(t=t.replace(/\\/g,c)),t[0]===c&&t[1]===c){const e=t.indexOf(c,2);-1===e?(n=t.substring(2),t=c):(n=t.substring(2,e),t=t.substring(e)||c)}return new h("file",n,t,o,o)}static from(e){const t=new h(e.scheme,e.authority,e.path,e.query,e.fragment);return a(t,!0),t}toString(e=!1){return y(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof u)return e;{const t=new h(e);return t._formatted=e.external,t._fsPath=e._sep===d?e.fsPath:null,t}}return e}}const d=e?1:void 0;class h extends u{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=g(this,!1)),this._fsPath}toString(e=!1){return e?y(this,!0):(this._formatted||(this._formatted=y(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=d),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const f={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function p(e,t,n){let r,i=-1;for(let s=0;s<e.length;s++){const a=e.charCodeAt(s);if(a>=97&&a<=122||a>=65&&a<=90||a>=48&&a<=57||45===a||46===a||95===a||126===a||t&&47===a||n&&91===a||n&&93===a||n&&58===a)-1!==i&&(r+=encodeURIComponent(e.substring(i,s)),i=-1),void 0!==r&&(r+=e.charAt(s));else{void 0===r&&(r=e.substr(0,s));const t=f[a];void 0!==t?(-1!==i&&(r+=encodeURIComponent(e.substring(i,s)),i=-1),r+=t):-1===i&&(i=s)}}return-1!==i&&(r+=encodeURIComponent(e.substring(i))),void 0!==r?r:e}function m(e){let t;for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);35===r||63===r?(void 0===t&&(t=e.substr(0,n)),t+=f[r]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function g(t,n){let r;return r=t.authority&&t.path.length>1&&"file"===t.scheme?`//${t.authority}${t.path}`:47===t.path.charCodeAt(0)&&(t.path.charCodeAt(1)>=65&&t.path.charCodeAt(1)<=90||t.path.charCodeAt(1)>=97&&t.path.charCodeAt(1)<=122)&&58===t.path.charCodeAt(2)?n?t.path.substr(1):t.path[1].toLowerCase()+t.path.substr(2):t.path,e&&(r=r.replace(/\//g,"\\")),r}function y(e,t){const n=t?m:p;let r="",{scheme:i,authority:s,path:a,query:o,fragment:l}=e;if(i&&(r+=i,r+=":"),(s||"file"===i)&&(r+=c,r+=c),s){let e=s.indexOf("@");if(-1!==e){const t=s.substr(0,e);s=s.substr(e+1),e=t.lastIndexOf(":"),-1===e?r+=n(t,!1,!1):(r+=n(t.substr(0,e),!1,!1),r+=":",r+=n(t.substr(e+1),!1,!0)),r+="@"}s=s.toLowerCase(),e=s.lastIndexOf(":"),-1===e?r+=n(s,!1,!0):(r+=n(s.substr(0,e),!1,!0),r+=s.substr(e))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2)){const e=a.charCodeAt(1);e>=65&&e<=90&&(a=`/${String.fromCharCode(e+32)}:${a.substr(3)}`)}else if(a.length>=2&&58===a.charCodeAt(1)){const e=a.charCodeAt(0);e>=65&&e<=90&&(a=`${String.fromCharCode(e+32)}:${a.substr(2)}`)}r+=n(a,!0,!1)}return o&&(r+="?",r+=n(o,!1,!1)),l&&(r+="#",r+=t?l:p(l,!1,!1)),r}function A(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+A(e.substr(3)):e}}const T=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function v(e){return e.match(T)?e.replace(T,e=>A(e)):e}var R=n(470);const E=R.posix||R,$="/";var k;!function(e){e.joinPath=function(e,...t){return e.with({path:E.join(e.path,...t)})},e.resolvePath=function(e,...t){let n=e.path,r=!1;n[0]!==$&&(n=$+n,r=!0);let i=E.resolve(n,...t);return r&&i[0]===$&&!e.authority&&(i=i.substring(1)),e.with({path:i})},e.dirname=function(e){if(0===e.path.length||e.path===$)return e;let t=E.dirname(e.path);return 1===t.length&&46===t.charCodeAt(0)&&(t=""),e.with({path:t})},e.basename=function(e){return E.basename(e.path)},e.extname=function(e){return E.extname(e.path)}}(k||(k={}))})(),r=i})();const{URI:i,Utils:s}=r},59331:(e,t,n)=>{n.d(t,{f:()=>u});var r=n(34939),i=n(96103),s=n(95846),a=n(8158),o=class extends r.mR{static{(0,r.K2)(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},c=class extends r.dg{static{(0,r.K2)(this,"PieValueConverter")}runCustomConverter(e,t,n){if("PIE_SECTION_LABEL"===e.name)return t.replace(/"/g,"").trim()}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new c,"ValueConverter")}};function u(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.KX,l);return t.ServiceRegistry.register(n),{shared:t,Pie:n}}(0,r.K2)(u,"createPieServices")},60129:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(49759);const i=function(e){return(null==e?0:e.length)?(0,r.A)(e,1):[]}},60511:(e,t,n)=>{n.d(t,{$:()=>l});var r=n(34939),i=n(96103),s=n(95846),a=n(8158),o=class extends r.mR{static{(0,r.K2)(this,"PacketTokenBuilder")}constructor(){super(["packet-beta"])}},c={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function l(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.AM,c);return t.ServiceRegistry.register(n),{shared:t,Packet:n}}(0,r.K2)(l,"createPacketServices")},64350:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(98020);const i=function(e){return(0,r.A)(e,4)}},64561:(e,t,n)=>{n.d(t,{DM:()=>p,OP:()=>m,SD:()=>a,Uo:()=>d,VN:()=>u,XG:()=>o,YE:()=>c,cQ:()=>l,jm:()=>h});var r=n(64913),i=n(93897),s=n(67567);function a(e){for(const[t,n]of Object.entries(e))t.startsWith("$")||(Array.isArray(n)?n.forEach((n,i)=>{(0,r.ng)(n)&&(n.$container=e,n.$containerProperty=t,n.$containerIndex=i)}):(0,r.ng)(n)&&(n.$container=e,n.$containerProperty=t))}function o(e,t){let n=e;for(;n;){if(t(n))return n;n=n.$container}}function c(e){const t=l(e).$document;if(!t)throw new Error("AST node has no document.");return t}function l(e){for(;e.$container;)e=e.$container;return e}function u(e,t){if(!e)throw new Error("Node must be an AstNode.");const n=null==t?void 0:t.range;return new i.fq(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){const i=t.keys[t.keyIndex];if(!i.startsWith("$")){const s=e[i];if((0,r.ng)(s)){if(t.keyIndex++,f(s,n))return{done:!1,value:s}}else if(Array.isArray(s)){for(;t.arrayIndex<s.length;){const e=s[t.arrayIndex++];if((0,r.ng)(e)&&f(e,n))return{done:!1,value:e}}t.arrayIndex=0}}t.keyIndex++}return i.Rf})}function d(e,t){if(!e)throw new Error("Root node must be an AstNode.");return new i.Vj(e,e=>u(e,t))}function h(e,t){if(!e)throw new Error("Root node must be an AstNode.");return(null==t?void 0:t.range)&&!f(e,t.range)?new i.Vj(e,()=>[]):new i.Vj(e,e=>u(e,t),{includeRoot:!0})}function f(e,t){var n;if(!t)return!0;const r=null===(n=e.$cstNode)||void 0===n?void 0:n.range;return!!r&&(0,s.r4)(r,t)}function p(e){return new i.fq(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){const n=t.keys[t.keyIndex];if(!n.startsWith("$")){const i=e[n];if((0,r.A_)(i))return t.keyIndex++,{done:!1,value:{reference:i,container:e,property:n}};if(Array.isArray(i)){for(;t.arrayIndex<i.length;){const s=t.arrayIndex++,a=i[s];if((0,r.A_)(a))return{done:!1,value:{reference:a,container:e,property:n,index:s}}}t.arrayIndex=0}}t.keyIndex++}return i.Rf})}function m(e,t){const n=e.getTypeMetaData(t.$type),r=t;for(const i of n.properties)void 0!==i.defaultValue&&void 0===r[i.name]&&(r[i.name]=g(i.defaultValue))}function g(e){return Array.isArray(e)?[...e.map(g)]:e}},64620:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(49759),i=n(72185);const s=function(e,t){return(0,r.A)((0,i.A)(e,t),1)}},64913:(e,t,n)=>{function r(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$type}function i(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$refText}function s(e){return"object"==typeof e&&null!==e&&"string"==typeof e.name&&"string"==typeof e.type&&"string"==typeof e.path}function a(e){return"object"==typeof e&&null!==e&&r(e.container)&&i(e.reference)&&"string"==typeof e.message}n.d(t,{A_:()=>i,FC:()=>l,Nr:()=>s,Zl:()=>a,br:()=>u,kD:()=>o,mD:()=>c,ng:()=>r});class o{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,t){return r(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});const r=n[t];if(void 0!==r)return r;{const r=this.computeIsSubtype(e,t);return n[t]=r,r}}getAllSubTypes(e){const t=this.allSubtypes[e];if(t)return t;{const t=this.getAllTypes(),n=[];for(const r of t)this.isSubtype(r,e)&&n.push(r);return this.allSubtypes[e]=n,n}}}function c(e){return"object"==typeof e&&null!==e&&Array.isArray(e.content)}function l(e){return"object"==typeof e&&null!==e&&"object"==typeof e.tokenType}function u(e){return c(e)&&"string"==typeof e.fullText}},67567:(e,t,n)=>{n.d(t,{El:()=>d,NS:()=>a,SX:()=>l,pO:()=>o,r4:()=>u,v:()=>h,wf:()=>c});var r,i=n(64913),s=n(93897);function a(e){return new s.Vj(e,e=>(0,i.mD)(e)?e.content:[],{includeRoot:!0})}function o(e,t){for(;e.container;)if((e=e.container)===t)return!0;return!1}function c(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function l(e){if(!e)return;const{offset:t,end:n,range:r}=e;return{range:r,offset:t,end:n,length:n-t}}function u(e,t){const n=function(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return r.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return r.After;const n=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,i=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return n&&i?r.Inside:n?r.OverlapBack:i?r.OverlapFront:r.Outside}(e,t);return n>r.After}!function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.OverlapFront=2]="OverlapFront",e[e.OverlapBack=3]="OverlapBack",e[e.Inside=4]="Inside",e[e.Outside=5]="Outside"}(r||(r={}));const d=/^[\w\p{L}]$/u;function h(e,t){if(e){const n=function(e,t=!0){for(;e.container;){const n=e.container;let r=n.content.indexOf(e);for(;r>0;){r--;const e=n.content[r];if(t||!e.hidden)return e}e=n}return}(e,!0);if(n&&f(n,t))return n;if((0,i.br)(e)){for(let n=e.content.findIndex(e=>!e.hidden)-1;n>=0;n--){const r=e.content[n];if(f(r,t))return r}}}}function f(e,t){return(0,i.FC)(e)&&t.includes(e.tokenType.name)}},71159:(e,t,n)=>{n.d(t,{A:()=>u});var r=n(80499),i=n(63406),s=n(60870),a=n(31408),o=n(49084),c=n(31528);const l=function(e,t,n,r){if(!(0,o.A)(e))return e;for(var l=-1,u=(t=(0,s.A)(t,e)).length,d=u-1,h=e;null!=h&&++l<u;){var f=(0,c.A)(t[l]),p=n;if("__proto__"===f||"constructor"===f||"prototype"===f)return e;if(l!=d){var m=h[f];void 0===(p=r?r(m,f,h):void 0)&&(p=(0,o.A)(m)?m:(0,a.A)(t[l+1])?[]:{})}(0,i.A)(h,f,p),h=h[f]}return e};const u=function(e,t,n){for(var i=-1,a=t.length,o={};++i<a;){var c=t[i],u=(0,r.A)(e,c);n(u,c)&&l(o,(0,s.A)(c,e),u)}return o}},72185:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(22663),i=n(76095),s=n(31361),a=n(95526);const o=function(e,t){return((0,a.A)(e)?r.A:s.A)(e,(0,i.A)(t,3))}},77480:(e,t,n)=>{n.d(t,{S:()=>u});var r=n(34939),i=n(96103),s=n(95846),a=n(8158),o=class extends r.mR{static{(0,r.K2)(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},c=class extends r.dg{static{(0,r.K2)(this,"ArchitectureValueConverter")}runCustomConverter(e,t,n){return"ARCH_ICON"===e.name?t.replace(/[()]/g,"").trim():"ARCH_TEXT_ICON"===e.name?t.replace(/["()]/g,""):"ARCH_TITLE"===e.name?t.replace(/[[\]]/g,"").trim():void 0}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new c,"ValueConverter")}};function u(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.jE,l);return t.ServiceRegistry.register(n),{shared:t,Architecture:n}}(0,r.K2)(u,"createArchitectureServices")},78137:(e,t)=>{function n(e){return"string"==typeof e||e instanceof String}function r(e){return Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.stringArray=t.array=t.func=t.error=t.number=t.string=t.boolean=void 0,t.boolean=function(e){return!0===e||!1===e},t.string=n,t.number=function(e){return"number"==typeof e||e instanceof Number},t.error=function(e){return e instanceof Error},t.func=function(e){return"function"==typeof e},t.array=r,t.stringArray=function(e){return r(e)&&e.every(e=>n(e))}},81066:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(97001);const i=function(e){var t=(0,r.A)(e),n=t%1;return t==t?n?t-n:t:0}},89212:(e,t,n)=>{n.d(t,{Q:()=>l});var r=n(38817),i=n(34813),s=n(64561),a=n(29520),o=n(49948),c=n(93897);class l{constructor(){this.diagnostics=[]}buildTokens(e,t){const n=(0,c.Td)((0,a.YV)(e,!1)),r=this.buildTerminalTokens(n),i=this.buildKeywordTokens(n,r,t);return r.forEach(e=>{const t=e.PATTERN;"object"==typeof t&&t&&"test"in t&&(0,o.Yv)(t)?i.unshift(e):i.push(e)}),i}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){const e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(i.rE).filter(e=>!e.fragment).map(e=>this.buildTerminalToken(e)).toArray()}buildTerminalToken(e){const t=(0,a.S)(e),n=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,i={name:e.name,PATTERN:n};return"function"==typeof n&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=(0,o.Yv)(t)?r.JG.SKIPPED:"hidden"),i}requiresCustomPattern(e){return!(!e.flags.includes("u")&&!e.flags.includes("s"))||!(!e.source.includes("?<=")&&!e.source.includes("?<!"))}regexPatternFunction(e){const t=new RegExp(e,e.flags+"y");return(e,n)=>{t.lastIndex=n;return t.exec(e)}}buildKeywordTokens(e,t,n){return e.filter(i.s7).flatMap(e=>(0,s.Uo)(e).filter(i.wb)).distinct(e=>e.value).toArray().sort((e,t)=>t.value.length-e.value.length).map(e=>this.buildKeywordToken(e,t,Boolean(null==n?void 0:n.caseInsensitive)))}buildKeywordToken(e,t,n){const r=this.buildKeywordPattern(e,n),i={name:e.value,PATTERN:r,LONGER_ALT:this.findLongerAlt(e,t)};return"function"==typeof r&&(i.LINE_BREAKS=!0),i}buildKeywordPattern(e,t){return t?new RegExp((0,o.Ao)(e.value)):e.value}findLongerAlt(e,t){return t.reduce((t,n)=>{const r=null==n?void 0:n.PATTERN;return(null==r?void 0:r.source)&&(0,o.PC)("^"+r.source+"$",e.value)&&t.push(n),t},[])}}},93897:(e,t,n)=>{n.d(t,{B5:()=>a,Rf:()=>o,Td:()=>c,Vj:()=>l,fq:()=>r,iD:()=>u});class r{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){const e=this.iterator();return Boolean(e.next().done)}count(){const e=this.iterator();let t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){const e=[],t=this.iterator();let n;do{n=t.next(),void 0!==n.value&&e.push(n.value)}while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){const n=this.map(n=>[e?e(n):n,t?t(n):n]);return new Map(n)}toString(){return this.join()}concat(e){return new r(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),e=>{let t;if(!e.firstDone){do{if(t=this.nextFn(e.first),!t.done)return t}while(!t.done);e.firstDone=!0}do{if(t=e.iterator.next(),!t.done)return t}while(!t.done);return o})}join(e=","){const t=this.iterator();let n,r="",s=!1;do{n=t.next(),n.done||(s&&(r+=e),r+=i(n.value)),s=!0}while(!n.done);return r}indexOf(e,t=0){const n=this.iterator();let r=0,i=n.next();for(;!i.done;){if(r>=t&&i.value===e)return r;i=n.next(),r++}return-1}every(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){const t=this.iterator();let n=0,r=t.next();for(;!r.done;)e(r.value,n),r=t.next(),n++}map(e){return new r(this.startFn,t=>{const{done:n,value:r}=this.nextFn(t);return n?o:{done:!1,value:e(r)}})}filter(e){return new r(this.startFn,t=>{let n;do{if(n=this.nextFn(t),!n.done&&e(n.value))return n}while(!n.done);return o})}nonNullable(){return this.filter(e=>null!=e)}reduce(e,t){const n=this.iterator();let r=t,i=n.next();for(;!i.done;)r=void 0===r?i.value:e(r,i.value),i=n.next();return r}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){const r=e.next();if(r.done)return n;const i=this.recursiveReduce(e,t,n);return void 0===i?r.value:t(i,r.value)}find(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){const t=this.iterator();let n=0,r=t.next();for(;!r.done;){if(e(r.value))return n;r=t.next(),n++}return-1}includes(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(n.value===e)return!0;n=t.next()}return!1}flatMap(e){return new r(()=>({this:this.startFn()}),t=>{do{if(t.iterator){const e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}const{done:n,value:r}=this.nextFn(t.this);if(!n){const n=e(r);if(!s(n))return{done:!1,value:n};t.iterator=n[Symbol.iterator]()}}while(t.iterator);return o})}flat(e){if(void 0===e&&(e=1),e<=0)return this;const t=e>1?this.flat(e-1):this;return new r(()=>({this:t.startFn()}),e=>{do{if(e.iterator){const t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}const{done:n,value:r}=t.nextFn(e.this);if(!n){if(!s(r))return{done:!1,value:r};e.iterator=r[Symbol.iterator]()}}while(e.iterator);return o})}head(){const e=this.iterator().next();if(!e.done)return e.value}tail(e=1){return new r(()=>{const t=this.startFn();for(let n=0;n<e;n++){if(this.nextFn(t).done)return t}return t},this.nextFn)}limit(e){return new r(()=>({size:0,state:this.startFn()}),t=>(t.size++,t.size>e?o:this.nextFn(t.state)))}distinct(e){return new r(()=>({set:new Set,internalState:this.startFn()}),t=>{let n;do{if(n=this.nextFn(t.internalState),!n.done){const r=e?e(n.value):n.value;if(!t.set.has(r))return t.set.add(r),n}}while(!n.done);return o})}exclude(e,t){const n=new Set;for(const r of e){const e=t?t(r):r;n.add(e)}return this.filter(e=>{const r=t?t(e):e;return!n.has(r)})}}function i(e){return"string"==typeof e?e:void 0===e?"undefined":"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e)}function s(e){return!!e&&"function"==typeof e[Symbol.iterator]}const a=new r(()=>{},()=>o),o=Object.freeze({done:!0,value:void 0});function c(...e){if(1===e.length){const t=e[0];if(t instanceof r)return t;if(s(t))return new r(()=>t[Symbol.iterator](),e=>e.next());if("number"==typeof t.length)return new r(()=>({index:0}),e=>e.index<t.length?{done:!1,value:t[e.index++]}:o)}return e.length>1?new r(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){const e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){const n=e[t.collIndex++];s(n)?t.iterator=n[Symbol.iterator]():n&&"number"==typeof n.length&&(t.array=n)}}while(t.iterator||t.array||t.collIndex<e.length);return o}):a}class l extends r{constructor(e,t,n){super(()=>({iterators:(null==n?void 0:n.includeRoot)?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),e=>{for(e.pruned&&(e.iterators.pop(),e.pruned=!1);e.iterators.length>0;){const n=e.iterators[e.iterators.length-1].next();if(!n.done)return e.iterators.push(t(n.value)[Symbol.iterator]()),n;e.iterators.pop()}return o})}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}}var u;!function(e){e.sum=function(e){return e.reduce((e,t)=>e+t,0)},e.product=function(e){return e.reduce((e,t)=>e*t,0)},e.min=function(e){return e.reduce((e,t)=>Math.min(e,t))},e.max=function(e){return e.reduce((e,t)=>Math.max(e,t))}}(u||(u={}))},95846:(e,t,n)=>{var r;function i(e,t,n,r,i,s,o,c,u){return a([e,t,n,r,i,s,o,c,u].reduce(l,{}))}n.d(t,{WQ:()=>i}),function(e){e.merge=(e,t)=>l(l({},e),t)}(r||(r={}));const s=Symbol("isProxy");function a(e,t){const n=new Proxy({},{deleteProperty:()=>!1,set:()=>{throw new Error("Cannot set property on injected service container")},get:(r,i)=>i===s||c(r,i,e,t||n),getOwnPropertyDescriptor:(r,i)=>(c(r,i,e,t||n),Object.getOwnPropertyDescriptor(r,i)),has:(t,n)=>n in e,ownKeys:()=>[...Object.getOwnPropertyNames(e)]});return n}const o=Symbol();function c(e,t,n,r){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:e[t]});if(e[t]===o)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}if(t in n){const s=n[t];e[t]=o;try{e[t]="function"==typeof s?s(r):a(s,r)}catch(i){throw e[t]=i instanceof Error?i:void 0,i}return e[t]}}function l(e,t){if(t)for(const[n,r]of Object.entries(t))if(void 0!==r){const t=e[n];e[n]=null!==t&&null!==r&&"object"==typeof t&&"object"==typeof r?l(t,r):r}return e}},96103:(e,t,n)=>{n.d(t,{D:()=>i});class r{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}}const i={fileSystemProvider:()=>new r}},97001:(e,t,n)=>{n.d(t,{A:()=>m});var r=/\s/;const i=function(e){for(var t=e.length;t--&&r.test(e.charAt(t)););return t};var s=/^\s+/;const a=function(e){return e?e.slice(0,i(e)+1).replace(s,""):e};var o=n(49084),c=n(13027),l=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,d=/^0o[0-7]+$/i,h=parseInt;const f=function(e){if("number"==typeof e)return e;if((0,c.A)(e))return NaN;if((0,o.A)(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=(0,o.A)(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=a(e);var n=u.test(e);return n||d.test(e)?h(e.slice(2),n?2:8):l.test(e)?NaN:+e};var p=1/0;const m=function(e){return e?(e=f(e))===p||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}}}]); \ No newline at end of file diff --git a/assets/js/53b10fcd.34a45138.js b/assets/js/53b10fcd.34a45138.js new file mode 100644 index 0000000000..84536ffe3b --- /dev/null +++ b/assets/js/53b10fcd.34a45138.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2271],{33836:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.11.1","label":"0.11.1","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.11.1","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.11.1/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.11.1/configuration","docId":"configuration","unlisted":false},{"collapsed":false,"type":"category","label":"Rules","items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.11.1/rules/unused","docId":"rules/unused","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/0.11.1/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/0.11.1/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"collapsed":false,"type":"category","label":"compiler","items":[{"type":"link","label":"Could Use Anvil Factory","href":"/ModuleCheck/docs/0.11.1/rules/compiler/could_use_anvil_factory","docId":"rules/compiler/could_use_anvil_factory","unlisted":false}],"collapsible":true},{"collapsed":false,"type":"category","label":"Kapt","items":[{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_processor","docId":"rules/kapt/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_plugin","docId":"rules/kapt/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.11.1/rules/kapt/custom_kapt_matchers","docId":"rules/kapt/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"collapsed":false,"type":"category","label":"Sorting","items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"collapsed":false,"type":"category","label":"Android","items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.11.1/rules/android/disable_resources","docId":"rules/android/disable_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.11.1/rules/android/disable_viewbinding","docId":"rules/android/disable_viewbinding","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","sidebar":"Docs"},"rules/android/disable_resources":{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_viewbinding":{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/compiler/could_use_anvil_factory":{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/kapt/custom_kapt_matchers":{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/kapt/unused_kapt_plugin":{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in applying","sidebar":"Docs"},"rules/kapt/unused_kapt_processor":{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused":{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/54b37c16.3d14365d.js b/assets/js/54b37c16.3d14365d.js new file mode 100644 index 0000000000..124d1c9cc8 --- /dev/null +++ b/assets/js/54b37c16.3d14365d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7978],{58118:(e,n,t)=>{t.d(n,{A:()=>i});t(36672);var r=t(13526);const s={tabItem:"tabItem_qogc"};var a=t(23420);function i({children:e,hidden:n,className:t}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,t),hidden:n,children:e})}},65296:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","source":"@site/versioned_docs/version-0.12.1/suppressing-findings.mdx","sourceDirName":".","slug":"/suppressing-findings","permalink":"/ModuleCheck/docs/0.12.1/suppressing-findings","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/suppressing-findings.mdx","tags":[],"version":"0.12.1","frontMatter":{"id":"suppressing-findings","title":"Suppressing Findings","sidebar_label":"Suppressing Findings"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.1/configuration"},"next":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.1/ci-workflow"}}');var s=t(23420),a=t(65404),i=t(65780),o=t(58118);const l={id:"suppressing-findings",title:"Suppressing Findings",sidebar_label:"Suppressing Findings"},u=void 0,c={},d=[];function p(e){const n={code:"code",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool."}),"\n",(0,s.jsxs)(n.p,{children:["The name of the check to disable can be found in the ",(0,s.jsx)(n.code,{children:"name"})," column of console output:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"> Task :moduleCheck\nModuleCheck found 3 issues in 6.157 seconds\n\n:app\n dependency name build file\n :fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):\n\n"})}),"\n",(0,s.jsxs)(i.A,{children:[(0,s.jsx)(o.A,{value:"Kotlin",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",metastring:'title="build.gradle.kts"',children:'@Suppress("must-be-api") // don\'t switch anything to an api config\ndependencies {\n\n@Suppress("unused-dependency") // don\'t comment out or delete this dependency\nimplementation(project(":unused-lib"))\n\n@Suppress("inherited-dependency") // don\'t add dependencies which are inherited from this library\nimplementation(project(":leaky"))\n}\n'})})}),(0,s.jsx)(o.A,{value:"Groovy",children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-groovy",metastring:'title="build.gradle"',children:'// don\'t switch anything to an api config\n//noinspection must-be-api\ndependencies {\n\n// don\'t comment out or delete this dependency\n//noinspection unused-dependency\nimplementation(project(":unused-lib"))\n\n// don\'t add dependencies which are inherited from this library\n//noinspection inherited-dependency\nimplementation(project(":leaky"))\n}\n'})})})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var r=t(36672);const s={},a=r.createContext(s);function i(e){const n=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(a.Provider,{value:n},e.children)}},65780:(e,n,t)=>{t.d(n,{A:()=>x});var r=t(36672),s=t(13526),a=t(10452),i=t(85291),o=t(10914),l=t(41201),u=t(40622),c=t(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,t])}function h({value:e,tabValues:n}){return n.some(n=>n.value===e)}function f({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,l.aZ)(s),(0,r.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})},[s,t])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[i,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!h({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:a})),[u,d]=f({queryString:t,groupId:s}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,c.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),g=(()=>{const e=u??m;return h({value:e,tabValues:a})?e:null})();(0,o.A)(()=>{g&&l(g)},[g]);return{selectedValue:i,selectValue:(0,r.useCallback)(e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,a]),tabValues:a}}var b=t(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=t(23420);function y({className:e,block:n,selectedValue:t,selectValue:r,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),u=e=>{const n=e.currentTarget,s=o.indexOf(n),a=i[s].value;a!==t&&(l(n),r(a))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:r})=>(0,v.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...r,className:(0,s.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:t}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function w(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function x(e){const n=(0,b.A)();return(0,v.jsx)(w,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/54f055ef.80b62cae.js b/assets/js/54f055ef.80b62cae.js new file mode 100644 index 0000000000..4d9a37057d --- /dev/null +++ b/assets/js/54f055ef.80b62cae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6185],{65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const r={},o=n.createContext(r);function i(e){const s=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:s},e.children)}},79001:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.12.5/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sort_plugins","permalink":"/ModuleCheck/docs/rules/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/sorting/sort_plugins.md","tags":[],"version":"0.12.5","frontMatter":{"id":"sort_plugins","slug":"/rules/sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/rules/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/rules/disable_android_resources"}}');var r=t(23420),o=t(65404);const i={id:"sort_plugins",slug:"/rules/sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(d,{...e})}):d()}}}]); \ No newline at end of file diff --git a/assets/js/570.43010e8c.js b/assets/js/570.43010e8c.js new file mode 100644 index 0000000000..4f3cbb70d0 --- /dev/null +++ b/assets/js/570.43010e8c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[570],{570:(e,t,a)=>{a.d(t,{diagram:()=>k});var i=a(22775),n=a(47794),l=a(95379),r=a(27293),s=a(25381),o=a(61274),c=r.UI.pie,p={sections:new Map,showData:!1,config:c},d=p.sections,u=p.showData,g=structuredClone(c),h=(0,r.K2)(()=>structuredClone(g),"getConfig"),m=(0,r.K2)(()=>{d=new Map,u=p.showData,(0,r.IU)()},"clear"),f=(0,r.K2)(({label:e,value:t})=>{d.has(e)||(d.set(e,t),r.Rm.debug(`added new section: ${e}, with value: ${t}`))},"addSection"),S=(0,r.K2)(()=>d,"getSections"),x=(0,r.K2)(e=>{u=e},"setShowData"),w=(0,r.K2)(()=>u,"getShowData"),D={getConfig:h,clear:m,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:f,getSections:S,setShowData:x,getShowData:w},T=(0,r.K2)((e,t)=>{(0,i.S)(e,t),t.setShowData(e.showData),e.sections.map(t.addSection)},"populateDb"),$={parse:(0,r.K2)(async e=>{const t=await(0,s.qg)("pie",e);r.Rm.debug(t),T(t,D)},"parse")},y=(0,r.K2)(e=>`\n .pieCircle{\n stroke: ${e.pieStrokeColor};\n stroke-width : ${e.pieStrokeWidth};\n opacity : ${e.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${e.pieOuterStrokeColor};\n stroke-width: ${e.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${e.pieTitleTextSize};\n fill: ${e.pieTitleTextColor};\n font-family: ${e.fontFamily};\n }\n .slice {\n font-family: ${e.fontFamily};\n fill: ${e.pieSectionTextColor};\n font-size:${e.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${e.pieLegendTextColor};\n font-family: ${e.fontFamily};\n font-size: ${e.pieLegendTextSize};\n }\n`,"getStyles"),C=(0,r.K2)(e=>{const t=[...e.entries()].map(e=>({label:e[0],value:e[1]})).sort((e,t)=>t.value-e.value);return(0,o.rLf)().value(e=>e.value)(t)},"createPieArcs"),k={parser:$,db:D,renderer:{draw:(0,r.K2)((e,t,a,i)=>{r.Rm.debug("rendering pie chart\n"+e);const s=i.db,c=(0,r.D7)(),p=(0,n.$t)(s.getConfig(),c.pie),d=18,u=450,g=u,h=(0,l.D)(t),m=h.append("g");m.attr("transform","translate(225,225)");const{themeVariables:f}=c;let[S]=(0,n.I5)(f.pieOuterStrokeWidth);S??=2;const x=p.textPosition,w=Math.min(g,u)/2-40,D=(0,o.JLW)().innerRadius(0).outerRadius(w),T=(0,o.JLW)().innerRadius(w*x).outerRadius(w*x);m.append("circle").attr("cx",0).attr("cy",0).attr("r",w+S/2).attr("class","pieOuterCircle");const $=s.getSections(),y=C($),k=[f.pie1,f.pie2,f.pie3,f.pie4,f.pie5,f.pie6,f.pie7,f.pie8,f.pie9,f.pie10,f.pie11,f.pie12],b=(0,o.UMr)(k);m.selectAll("mySlices").data(y).enter().append("path").attr("d",D).attr("fill",e=>b(e.data.label)).attr("class","pieCircle");let K=0;$.forEach(e=>{K+=e}),m.selectAll("mySlices").data(y).enter().append("text").text(e=>(e.data.value/K*100).toFixed(0)+"%").attr("transform",e=>"translate("+T.centroid(e)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(s.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");const v=m.selectAll(".legend").data(b.domain()).enter().append("g").attr("class","legend").attr("transform",(e,t)=>"translate(216,"+(22*t-22*b.domain().length/2)+")");v.append("rect").attr("width",d).attr("height",d).style("fill",b).style("stroke",b),v.data(y).append("text").attr("x",22).attr("y",14).text(e=>{const{label:t,value:a}=e.data;return s.getShowData()?`${t} [${a}]`:t});const A=512+Math.max(...v.selectAll("text").nodes().map(e=>e?.getBoundingClientRect().width??0));h.attr("viewBox",`0 0 ${A} 450`),(0,r.a$)(h,u,A,p.useMaxWidth)},"draw")},styles:y}},22775:(e,t,a)=>{function i(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}a.d(t,{S:()=>i}),(0,a(27293).K2)(i,"populateCommonDb")}}]); \ No newline at end of file diff --git a/assets/js/571f3672.aea1a8e4.js b/assets/js/571f3672.aea1a8e4.js new file mode 100644 index 0000000000..d114b0c417 --- /dev/null +++ b/assets/js/571f3672.aea1a8e4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8510],{22962:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>d,toc:()=>i});const d=JSON.parse('{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.12.1/rules/unused_dependency.md","sourceDirName":"rules","slug":"/rules/unused_dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/unused_dependency.md","tags":[],"version":"0.12.1","frontMatter":{"id":"unused_dependency","slug":"/rules/unused_dependency","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.1/ci-workflow"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.1/rules/must_be_api"}}');var t=s(23420),u=s(65404);const o={id:"unused_dependency",slug:"/rules/unused_dependency",title:"Unused Dependency",sidebar_label:"Unused Dependency"},c=void 0,r={},i=[];function l(e){const n={p:"p",...(0,u.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,t.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>c});var d=s(36672);const t={},u=d.createContext(t);function o(e){const n=d.useContext(u);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),d.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5900.7322453c.js b/assets/js/5900.7322453c.js new file mode 100644 index 0000000000..53acc0d52a --- /dev/null +++ b/assets/js/5900.7322453c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5900],{95900:(e,r,s)=>{s.d(r,{diagram:()=>l});var a=s(16377),c=(s(53776),s(97576),s(57442),s(84982),s(43545),s(61598),s(70837),s(24199),s(47794),s(27293)),l={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,c.K2)(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/assets/js/5ad15a2f.f4fecb23.js b/assets/js/5ad15a2f.f4fecb23.js new file mode 100644 index 0000000000..5a6ec023f0 --- /dev/null +++ b/assets/js/5ad15a2f.f4fecb23.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7042],{81069:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.11.0","label":"0.11.0","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.11.0","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.11.0/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.11.0/configuration","docId":"configuration","unlisted":false},{"collapsed":false,"type":"category","label":"Rules","items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.11.0/rules/unused","docId":"rules/unused","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/0.11.0/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/0.11.0/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"collapsed":false,"type":"category","label":"compiler","items":[{"type":"link","label":"Could Use Anvil Factory","href":"/ModuleCheck/docs/0.11.0/rules/compiler/could_use_anvil_factory","docId":"rules/compiler/could_use_anvil_factory","unlisted":false}],"collapsible":true},{"collapsed":false,"type":"category","label":"Kapt","items":[{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_processor","docId":"rules/kapt/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_plugin","docId":"rules/kapt/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.11.0/rules/kapt/custom_kapt_matchers","docId":"rules/kapt/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"collapsed":false,"type":"category","label":"Sorting","items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"collapsed":false,"type":"category","label":"Android","items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.11.0/rules/android/disable_resources","docId":"rules/android/disable_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.11.0/rules/android/disable_viewbinding","docId":"rules/android/disable_viewbinding","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","sidebar":"Docs"},"rules/android/disable_resources":{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_viewbinding":{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/compiler/could_use_anvil_factory":{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/kapt/custom_kapt_matchers":{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/kapt/unused_kapt_plugin":{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in applying","sidebar":"Docs"},"rules/kapt/unused_kapt_processor":{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused":{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/5b786e91.375d2adb.js b/assets/js/5b786e91.375d2adb.js new file mode 100644 index 0000000000..2c732993b2 --- /dev/null +++ b/assets/js/5b786e91.375d2adb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5802],{14643:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","source":"@site/versioned_docs/version-0.12.3/rules/overshot_dependency.md","sourceDirName":"rules","slug":"/rules/overshot_dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/overshot_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/overshot_dependency.md","tags":[],"version":"0.12.3","frontMatter":{"id":"overshot_dependency","slug":"/rules/overshot_dependency","title":"Overshot Dependency","sidebar_label":"Overshot Dependency"},"sidebar":"Docs","previous":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/redundant_dependency"},"next":{"title":"Project Depth","permalink":"/ModuleCheck/docs/0.12.3/rules/project_depth"}}');var o=t(23420),d=t(65404);const r={id:"overshot_dependency",slug:"/rules/overshot_dependency",title:"Overshot Dependency",sidebar_label:"Overshot Dependency"},c=void 0,i={},l=[];function u(e){const n={code:"code",em:"em",p:"p",pre:"pre",strong:"strong",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Finds project dependencies which aren't used by the declaring configuration, but are used by a\ndependent, downstream configuration."}),"\n",(0,o.jsxs)(n.p,{children:["For instance, assume that ",(0,o.jsx)(n.code,{children:":moduleB"})," declares an ",(0,o.jsx)(n.code,{children:"implementation"})," dependency upon ",(0,o.jsx)(n.code,{children:":moduleA"}),"."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n implementation(project(":moduleA"))\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["If ",(0,o.jsx)(n.code,{children:":moduleB"})," doesn't actually use ",(0,o.jsx)(n.code,{children:":moduleA"})," in its ",(0,o.jsx)(n.code,{children:"main"})," source, but it ",(0,o.jsx)(n.em,{children:"does"})," use it in ",(0,o.jsx)(n.code,{children:"test"}),"\nsource, it's an ",(0,o.jsx)(n.strong,{children:"overshot dependency"}),". The declaration should be changed to\nuse ",(0,o.jsx)(n.code,{children:"testImplementation"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n testImplementation(project(":moduleA"))\n}\n'})})]})}function a(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(36672);const o={},d=s.createContext(o);function r(e){const n=s.useContext(d);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5d2d37cd.b28f062f.js b/assets/js/5d2d37cd.b28f062f.js new file mode 100644 index 0000000000..60bcb9db9f --- /dev/null +++ b/assets/js/5d2d37cd.b28f062f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7257],{50913:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.11.1/rules/kapt/custom_kapt_matchers.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.11.1/rules/kapt/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/kapt/custom_kapt_matchers.md","tags":[],"version":"0.11.1","frontMatter":{"id":"custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_dependencies"}}');var o=s(23420),r=s(65404);const a={id:"custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},c=void 0,i={},u=[];function l(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,o.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>c});var n=s(36672);const o={},r=n.createContext(o);function a(e){const t=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5d624d4b.a7c617c0.js b/assets/js/5d624d4b.a7c617c0.js new file mode 100644 index 0000000000..6d72f04503 --- /dev/null +++ b/assets/js/5d624d4b.a7c617c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7658],{65404:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>i});var s=n(36672);const o={},u=s.createContext(o);function r(e){const t=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:t},e.children)}},81800:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in applying","source":"@site/versioned_docs/version-0.11.3/rules/kapt/unused_kapt_plugin.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/kapt/unused_kapt_plugin.md","tags":[],"version":"0.11.3","frontMatter":{"id":"unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.11.3/rules/kapt/custom_kapt_matchers"}}');var o=n(23420),u=n(65404);const r={id:"unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,a={},p=[];function c(e){const t={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(t.p,{children:["If there are no ",(0,o.jsx)(t.code,{children:"kapt"}),"/",(0,o.jsx)(t.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in applying\nthe ",(0,o.jsx)(t.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function l(e={}){const{wrapper:t}={...(0,u.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.b9e9ae8d.js b/assets/js/5e95c892.b9e9ae8d.js new file mode 100644 index 0000000000..5dc9206afb --- /dev/null +++ b/assets/js/5e95c892.b9e9ae8d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9647],{9448:(e,c,s)=>{s.r(c),s.d(c,{default:()=>n});s(36672);var r=s(13526),u=s(10352),a=s(40987),l=s(26271),d=s(32592),h=s(23420);function n(e){return(0,h.jsx)(u.e3,{className:(0,r.A)(a.G.wrapper.docsPages),children:(0,h.jsx)(d.A,{children:(0,l.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/5f0d7ee4.d029c08e.js b/assets/js/5f0d7ee4.d029c08e.js new file mode 100644 index 0000000000..c999561afc --- /dev/null +++ b/assets/js/5f0d7ee4.d029c08e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[825],{65404:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(36672);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}},65661:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.11.1/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_dependencies","permalink":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/sorting/sort_dependencies.md","tags":[],"version":"0.11.1","frontMatter":{"id":"sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.11.1/rules/kapt/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_plugins"}}');var o=n(23420),r=n(65404);const i={id:"sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l()}}}]); \ No newline at end of file diff --git a/assets/js/5fd14b8b.6409dbe4.js b/assets/js/5fd14b8b.6409dbe4.js new file mode 100644 index 0000000000..9a2fd98a32 --- /dev/null +++ b/assets/js/5fd14b8b.6409dbe4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9775],{20961:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.11.2/rules/kapt/custom_kapt_matchers.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.11.2/rules/kapt/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/kapt/custom_kapt_matchers.md","tags":[],"version":"0.11.2","frontMatter":{"id":"custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_dependencies"}}');var o=s(23420),r=s(65404);const a={id:"custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},c=void 0,i={},u=[];function l(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,o.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>c});var n=s(36672);const o={},r=n.createContext(o);function a(e){const t=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6033e994.8a9089ba.js b/assets/js/6033e994.8a9089ba.js new file mode 100644 index 0000000000..1630f82b7f --- /dev/null +++ b/assets/js/6033e994.8a9089ba.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9558],{3457:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>c,frontMatter:()=>d,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","source":"@site/versioned_docs/version-0.12.5/rules/android/unused_kotlin_android_extensions.md","sourceDirName":"rules/android","slug":"/rules/unused_kotlin_android_extensions","permalink":"/ModuleCheck/docs/rules/unused_kotlin_android_extensions","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/android/unused_kotlin_android_extensions.md","tags":[],"version":"0.12.5","frontMatter":{"id":"unused_kotlin_android_extensions","slug":"/rules/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","sidebar_label":"Unused Kotlin Android Extensions"},"sidebar":"Docs","previous":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/rules/disable_view_binding"}}');var t=s(23420),i=s(65404);const d={id:"unused_kotlin_android_extensions",slug:"/rules/unused_kotlin_android_extensions",title:"Unused Kotlin Android Extensions",sidebar_label:"Unused Kotlin Android Extensions"},r=void 0,u={},l=[];function a(e){const n={p:"p",...(0,i.R)(),...e.components};return(0,t.jsx)(n.p,{children:"Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any\nsynthetic imports or deprecated @Parcelize annotation"})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var o=s(36672);const t={},i=o.createContext(t);function d(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6144.15fa81c8.js b/assets/js/6144.15fa81c8.js new file mode 100644 index 0000000000..293f3cabba --- /dev/null +++ b/assets/js/6144.15fa81c8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6144],{22775:(t,e,a)=>{function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(27293).K2)(r,"populateCommonDb")},56144:(t,e,a)=>{a.d(e,{diagram:()=>D});var r=a(22775),n=a(47794),i=a(95379),s=a(27293),o=a(25381),l={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},c={axes:[],curves:[],options:l},d=structuredClone(c),g=s.UI.radar,u=(0,s.K2)(()=>(0,n.$t)({...g,...(0,s.zj)().radar}),"getConfig"),h=(0,s.K2)(()=>d.axes,"getAxes"),p=(0,s.K2)(()=>d.curves,"getCurves"),x=(0,s.K2)(()=>d.options,"getOptions"),m=(0,s.K2)(t=>{d.axes=t.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),$=(0,s.K2)(t=>{d.curves=t.map(t=>({name:t.name,label:t.label??t.name,entries:f(t.entries)}))},"setCurves"),f=(0,s.K2)(t=>{if(null==t[0].axis)return t.map(t=>t.value);const e=h();if(0===e.length)throw new Error("Axes must be populated before curves for reference entries");return e.map(e=>{const a=t.find(t=>t.axis?.$refText===e.name);if(void 0===a)throw new Error("Missing entry for axis "+e.label);return a.value})},"computeCurveEntries"),y={getAxes:h,getCurves:p,getOptions:x,setAxes:m,setCurves:$,setOptions:(0,s.K2)(t=>{const e=t.reduce((t,e)=>(t[e.name]=e,t),{});d.options={showLegend:e.showLegend?.value??l.showLegend,ticks:e.ticks?.value??l.ticks,max:e.max?.value??l.max,min:e.min?.value??l.min,graticule:e.graticule?.value??l.graticule}},"setOptions"),getConfig:u,clear:(0,s.K2)(()=>{(0,s.IU)(),d=structuredClone(c)},"clear"),setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,getAccDescription:s.m7,setAccDescription:s.EI},v=(0,s.K2)(t=>{(0,r.S)(t,y);const{axes:e,curves:a,options:n}=t;y.setAxes(e),y.setCurves(a),y.setOptions(n)},"populate"),w={parse:(0,s.K2)(async t=>{const e=await(0,o.qg)("radar",t);s.Rm.debug(e),v(e)},"parse")},b=(0,s.K2)((t,e,a,r)=>{const n=r.db,s=n.getAxes(),o=n.getCurves(),l=n.getOptions(),c=n.getConfig(),d=n.getDiagramTitle(),g=(0,i.D)(e),u=C(g,c),h=l.max??Math.max(...o.map(t=>Math.max(...t.entries))),p=l.min,x=Math.min(c.width,c.height)/2;M(u,s,x,l.ticks,l.graticule),K(u,s,x,c),k(u,s,o,p,h,l.graticule,c),A(u,o,l.showLegend,c),u.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),C=(0,s.K2)((t,e)=>{const a=e.width+e.marginLeft+e.marginRight,r=e.height+e.marginTop+e.marginBottom,n=e.marginLeft+e.width/2,i=e.marginTop+e.height/2;return t.attr("viewbox",`0 0 ${a} ${r}`).attr("width",a).attr("height",r),t.append("g").attr("transform",`translate(${n}, ${i})`)},"drawFrame"),M=(0,s.K2)((t,e,a,r,n)=>{if("circle"===n)for(let i=0;i<r;i++){const e=a*(i+1)/r;t.append("circle").attr("r",e).attr("class","radarGraticule")}else if("polygon"===n){const n=e.length;for(let i=0;i<r;i++){const s=a*(i+1)/r,o=e.map((t,e)=>{const a=2*e*Math.PI/n-Math.PI/2;return`${s*Math.cos(a)},${s*Math.sin(a)}`}).join(" ");t.append("polygon").attr("points",o).attr("class","radarGraticule")}}},"drawGraticule"),K=(0,s.K2)((t,e,a,r)=>{const n=e.length;for(let i=0;i<n;i++){const s=e[i].label,o=2*i*Math.PI/n-Math.PI/2;t.append("line").attr("x1",0).attr("y1",0).attr("x2",a*r.axisScaleFactor*Math.cos(o)).attr("y2",a*r.axisScaleFactor*Math.sin(o)).attr("class","radarAxisLine"),t.append("text").text(s).attr("x",a*r.axisLabelFactor*Math.cos(o)).attr("y",a*r.axisLabelFactor*Math.sin(o)).attr("class","radarAxisLabel")}},"drawAxes");function k(t,e,a,r,n,i,s){const o=e.length,l=Math.min(s.width,s.height)/2;a.forEach((e,a)=>{if(e.entries.length!==o)return;const c=e.entries.map((t,e)=>{const a=2*Math.PI*e/o-Math.PI/2,i=L(t,r,n,l);return{x:i*Math.cos(a),y:i*Math.sin(a)}});"circle"===i?t.append("path").attr("d",T(c,s.curveTension)).attr("class",`radarCurve-${a}`):"polygon"===i&&t.append("polygon").attr("points",c.map(t=>`${t.x},${t.y}`).join(" ")).attr("class",`radarCurve-${a}`)})}function L(t,e,a,r){return r*(Math.min(Math.max(t,e),a)-e)/(a-e)}function T(t,e){const a=t.length;let r=`M${t[0].x},${t[0].y}`;for(let n=0;n<a;n++){const i=t[(n-1+a)%a],s=t[n],o=t[(n+1)%a],l=t[(n+2)%a],c={x:s.x+(o.x-i.x)*e,y:s.y+(o.y-i.y)*e},d={x:o.x-(l.x-s.x)*e,y:o.y-(l.y-s.y)*e};r+=` C${c.x},${c.y} ${d.x},${d.y} ${o.x},${o.y}`}return`${r} Z`}function A(t,e,a,r){if(!a)return;const n=3*(r.width/2+r.marginRight)/4,i=3*-(r.height/2+r.marginTop)/4;e.forEach((e,a)=>{const r=t.append("g").attr("transform",`translate(${n}, ${i+20*a})`);r.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${a}`),r.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(e.label)})}(0,s.K2)(k,"drawCurves"),(0,s.K2)(L,"relativeRadius"),(0,s.K2)(T,"closedRoundCurve"),(0,s.K2)(A,"drawLegend");var O={draw:b},S=(0,s.K2)((t,e)=>{let a="";for(let r=0;r<t.THEME_COLOR_LIMIT;r++){const n=t[`cScale${r}`];a+=`\n\t\t.radarCurve-${r} {\n\t\t\tcolor: ${n};\n\t\t\tfill: ${n};\n\t\t\tfill-opacity: ${e.curveOpacity};\n\t\t\tstroke: ${n};\n\t\t\tstroke-width: ${e.curveStrokeWidth};\n\t\t}\n\t\t.radarLegendBox-${r} {\n\t\t\tfill: ${n};\n\t\t\tfill-opacity: ${e.curveOpacity};\n\t\t\tstroke: ${n};\n\t\t}\n\t\t`}return a},"genIndexStyles"),I=(0,s.K2)(t=>{const e=(0,s.P$)(),a=(0,s.zj)(),r=(0,n.$t)(e,a.themeVariables);return{themeVariables:r,radarOptions:(0,n.$t)(r.radar,t)}},"buildRadarStyleOptions"),D={parser:w,db:y,renderer:O,styles:(0,s.K2)(({radar:t}={})=>{const{themeVariables:e,radarOptions:a}=I(t);return`\n\t.radarTitle {\n\t\tfont-size: ${e.fontSize};\n\t\tcolor: ${e.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${a.axisColor};\n\t\tstroke-width: ${a.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${a.axisLabelFontSize}px;\n\t\tcolor: ${a.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${a.graticuleColor};\n\t\tfill-opacity: ${a.graticuleOpacity};\n\t\tstroke: ${a.graticuleColor};\n\t\tstroke-width: ${a.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${a.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${S(e,a)}\n\t`},"styles")}}}]); \ No newline at end of file diff --git a/assets/js/6154.bd2e6f39.js b/assets/js/6154.bd2e6f39.js new file mode 100644 index 0000000000..3da3ce1d90 --- /dev/null +++ b/assets/js/6154.bd2e6f39.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6154],{26154:(e,r,a)=>{a.d(r,{diagram:()=>c});var t=a(77459),n=a(95379),s=a(27293),d=a(25381),i={parse:(0,s.K2)(async e=>{const r=await(0,d.qg)("info",e);s.Rm.debug(r)},"parse")},o={version:t.n.version+""},c={parser:i,db:{getVersion:(0,s.K2)(()=>o.version,"getVersion")},renderer:{draw:(0,s.K2)((e,r,a)=>{s.Rm.debug("rendering info diagram\n"+e);const t=(0,n.D)(r);(0,s.a$)(t,100,400,!0);t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${a}`)},"draw")}}}}]); \ No newline at end of file diff --git a/assets/js/627bdb5d.ae8f63fd.js b/assets/js/627bdb5d.ae8f63fd.js new file mode 100644 index 0000000000..a28b24f528 --- /dev/null +++ b/assets/js/627bdb5d.ae8f63fd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2817],{65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}},72273:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.11.1/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/0.11.1/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/must_be_api.md","tags":[],"version":"0.11.1","frontMatter":{"id":"must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.11.1/rules/unused"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.11.1/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/62cdf0e0.2cdd70b2.js b/assets/js/62cdf0e0.2cdd70b2.js new file mode 100644 index 0000000000..a5a1e4e475 --- /dev/null +++ b/assets/js/62cdf0e0.2cdd70b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8439],{20527:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>a,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.10.0/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.10.0/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/configuration.mdx","tags":[],"version":"0.10.0","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Basics","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.10.0/"}}');var r=t(23420),i=t(65404);const a={id:"configuration",sidebar_label:"Configuration"},s=void 0,c={},d=[];function u(n){const e={code:"code",pre:"pre",...(0,i.R)(),...n.components};return(0,r.jsx)(e.pre,{children:(0,r.jsx)(e.code,{className:"language-kotlin",children:'plugins {\n id("com.rickbusarow.module-check") version "0.10.0"\n}\n\nmoduleCheck {\n\n checks {\n redundant.set(false)\n disableAndroidResources.set(false)\n disableViewBinding.set(false)\n }\n\n alwaysIgnore.set(setOf(":test:core-jvm", ":test:core-android"))\n ignoreAll.set(setOf(":app_ble"))\n\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "Roomigrant",\n processor = "com.github.RickBusarow.Roomigrant:RoomigrantCompiler",\n annotationImports = listOf(\n "dev\\\\.matrix\\\\.roomigrant\\\\.\\\\*",\n "dev\\\\.matrix\\\\.roomigrant\\\\.GenerateRoomMigrations",\n "dev\\\\.matrix\\\\.roomigrant\\\\.rules\\\\.\\\\*",\n "dev\\\\.matrix\\\\.roomigrant\\\\.rules\\\\.FieldMigrationRule",\n "dev\\\\.matrix\\\\.roomigrant\\\\.rules\\\\.OnMigrationEndRule",\n "dev\\\\.matrix\\\\.roomigrant\\\\.rules\\\\.OnMigrationStartRule"\n )\n ),\n modulecheck.api.KaptMatcher(\n name = "VMInject",\n processor = "my-project.codegen.vminject:processor",\n annotationImports = listOf(\n "vminject\\\\.\\\\*",\n "vminject\\\\.VMInject",\n "vminject\\\\.VMInject\\\\.Source",\n "vminject\\\\.VMInjectParam",\n "vminject\\\\.VMInjectModule"\n )\n )\n )\n )\n}\n'})})}function l(n={}){const{wrapper:e}={...(0,i.R)(),...n.components};return e?(0,r.jsx)(e,{...n,children:(0,r.jsx)(u,{...n})}):u(n)}},65404:(n,e,t)=>{t.d(e,{R:()=>a,x:()=>s});var o=t(36672);const r={},i=o.createContext(r);function a(n){const e=o.useContext(i);return o.useMemo(function(){return"function"==typeof n?n(e):{...e,...n}},[e,n])}function s(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:a(n.components),o.createElement(i.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/6377.cb157b13.js b/assets/js/6377.cb157b13.js new file mode 100644 index 0000000000..fe10afa68f --- /dev/null +++ b/assets/js/6377.cb157b13.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6377],{16377:(t,e,s)=>{s.d(e,{Lh:()=>b,NM:()=>m,_$:()=>c,tM:()=>C});var i=s(53776),n=s(97576),a=s(57442),r=s(47794),u=s(27293),l=s(61274),o=function(){var t=(0,u.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,18],s=[1,19],i=[1,20],n=[1,41],a=[1,42],r=[1,26],l=[1,24],o=[1,25],c=[1,32],h=[1,33],d=[1,34],p=[1,45],A=[1,35],y=[1,36],m=[1,37],C=[1,38],g=[1,27],b=[1,28],E=[1,29],k=[1,30],T=[1,31],f=[1,44],D=[1,46],F=[1,43],B=[1,47],_=[1,9],S=[1,8,9],N=[1,58],L=[1,59],$=[1,60],x=[1,61],v=[1,62],I=[1,63],O=[1,64],w=[1,8,9,41],R=[1,76],P=[1,8,9,12,13,22,39,41,44,66,67,68,69,70,71,72,77,79],K=[1,8,9,12,13,17,20,22,39,41,44,48,58,66,67,68,69,70,71,72,77,79,84,99,101,102],M=[13,58,84,99,101,102],G=[13,58,71,72,84,99,101,102],U=[13,58,66,67,68,69,70,84,99,101,102],Y=[1,98],z=[1,115],Q=[1,107],W=[1,113],X=[1,108],j=[1,109],V=[1,110],q=[1,111],H=[1,112],J=[1,114],Z=[22,58,59,80,84,85,86,87,88,89],tt=[1,8,9,39,41,44],et=[1,8,9,22],st=[1,143],it=[1,8,9,59],nt=[1,8,9,22,58,59,80,84,85,86,87,88,89],at={trace:(0,u.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,DOT:17,className:18,classLiteralName:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,ANNOTATION_START:47,ANNOTATION_END:48,MEMBER:49,SEPARATOR:50,relation:51,NOTE_FOR:52,noteText:53,NOTE:54,CLASSDEF:55,classList:56,stylesOpt:57,ALPHA:58,COMMA:59,direction_tb:60,direction_bt:61,direction_rl:62,direction_lr:63,relationType:64,lineType:65,AGGREGATION:66,EXTENSION:67,COMPOSITION:68,DEPENDENCY:69,LOLLIPOP:70,LINE:71,DOTTED_LINE:72,CALLBACK:73,LINK:74,LINK_TARGET:75,CLICK:76,CALLBACK_NAME:77,CALLBACK_ARGS:78,HREF:79,STYLE:80,CSSCLASS:81,style:82,styleComponent:83,NUM:84,COLON:85,UNIT:86,SPACE:87,BRKT:88,PCT:89,commentToken:90,textToken:91,graphCodeTokens:92,textNoTagsToken:93,TAGSTART:94,TAGEND:95,"==":96,"--":97,DEFAULT:98,MINUS:99,keywords:100,UNICODE_TEXT:101,BQUOTE_STR:102,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",17:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",47:"ANNOTATION_START",48:"ANNOTATION_END",49:"MEMBER",50:"SEPARATOR",52:"NOTE_FOR",54:"NOTE",55:"CLASSDEF",58:"ALPHA",59:"COMMA",60:"direction_tb",61:"direction_bt",62:"direction_rl",63:"direction_lr",66:"AGGREGATION",67:"EXTENSION",68:"COMPOSITION",69:"DEPENDENCY",70:"LOLLIPOP",71:"LINE",72:"DOTTED_LINE",73:"CALLBACK",74:"LINK",75:"LINK_TARGET",76:"CLICK",77:"CALLBACK_NAME",78:"CALLBACK_ARGS",79:"HREF",80:"STYLE",81:"CSSCLASS",84:"NUM",85:"COLON",86:"UNIT",87:"SPACE",88:"BRKT",89:"PCT",92:"graphCodeTokens",94:"TAGSTART",95:"TAGEND",96:"==",97:"--",98:"DEFAULT",99:"MINUS",100:"keywords",101:"UNICODE_TEXT",102:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,3],[15,2],[18,1],[18,3],[18,1],[18,2],[18,2],[18,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,6],[43,2],[43,3],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[56,1],[56,3],[32,1],[32,1],[32,1],[32,1],[51,3],[51,2],[51,2],[51,1],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[57,1],[57,3],[82,1],[82,2],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[93,1],[93,1],[93,1],[93,1],[16,1],[16,1],[16,1],[16,1],[19,1],[53,1]],performAction:(0,u.K2)(function(t,e,s,i,n,a,r){var u=a.length-1;switch(n){case 8:this.$=a[u-1];break;case 9:case 12:case 14:this.$=a[u];break;case 10:case 13:this.$=a[u-2]+"."+a[u];break;case 11:case 15:case 95:this.$=a[u-1]+a[u];break;case 16:case 17:this.$=a[u-1]+"~"+a[u]+"~";break;case 18:i.addRelation(a[u]);break;case 19:a[u-1].title=i.cleanupLabel(a[u]),i.addRelation(a[u-1]);break;case 30:this.$=a[u].trim(),i.setAccTitle(this.$);break;case 31:case 32:this.$=a[u].trim(),i.setAccDescription(this.$);break;case 33:i.addClassesToNamespace(a[u-3],a[u-1]);break;case 34:i.addClassesToNamespace(a[u-4],a[u-1]);break;case 35:this.$=a[u],i.addNamespace(a[u]);break;case 36:case 46:case 59:case 92:this.$=[a[u]];break;case 37:this.$=[a[u-1]];break;case 38:a[u].unshift(a[u-2]),this.$=a[u];break;case 40:i.setCssClass(a[u-2],a[u]);break;case 41:i.addMembers(a[u-3],a[u-1]);break;case 42:i.setCssClass(a[u-5],a[u-3]),i.addMembers(a[u-5],a[u-1]);break;case 43:this.$=a[u],i.addClass(a[u]);break;case 44:this.$=a[u-1],i.addClass(a[u-1]),i.setClassLabel(a[u-1],a[u]);break;case 45:i.addAnnotation(a[u],a[u-2]);break;case 47:a[u].push(a[u-1]),this.$=a[u];break;case 48:case 50:case 51:break;case 49:i.addMember(a[u-1],i.cleanupLabel(a[u]));break;case 52:this.$={id1:a[u-2],id2:a[u],relation:a[u-1],relationTitle1:"none",relationTitle2:"none"};break;case 53:this.$={id1:a[u-3],id2:a[u],relation:a[u-1],relationTitle1:a[u-2],relationTitle2:"none"};break;case 54:this.$={id1:a[u-3],id2:a[u],relation:a[u-2],relationTitle1:"none",relationTitle2:a[u-1]};break;case 55:this.$={id1:a[u-4],id2:a[u],relation:a[u-2],relationTitle1:a[u-3],relationTitle2:a[u-1]};break;case 56:i.addNote(a[u],a[u-1]);break;case 57:i.addNote(a[u]);break;case 58:this.$=a[u-2],i.defineClass(a[u-1],a[u]);break;case 60:this.$=a[u-2].concat([a[u]]);break;case 61:i.setDirection("TB");break;case 62:i.setDirection("BT");break;case 63:i.setDirection("RL");break;case 64:i.setDirection("LR");break;case 65:this.$={type1:a[u-2],type2:a[u],lineType:a[u-1]};break;case 66:this.$={type1:"none",type2:a[u],lineType:a[u-1]};break;case 67:this.$={type1:a[u-1],type2:"none",lineType:a[u]};break;case 68:this.$={type1:"none",type2:"none",lineType:a[u]};break;case 69:this.$=i.relationType.AGGREGATION;break;case 70:this.$=i.relationType.EXTENSION;break;case 71:this.$=i.relationType.COMPOSITION;break;case 72:this.$=i.relationType.DEPENDENCY;break;case 73:this.$=i.relationType.LOLLIPOP;break;case 74:this.$=i.lineType.LINE;break;case 75:this.$=i.lineType.DOTTED_LINE;break;case 76:case 82:this.$=a[u-2],i.setClickEvent(a[u-1],a[u]);break;case 77:case 83:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 78:this.$=a[u-2],i.setLink(a[u-1],a[u]);break;case 79:this.$=a[u-3],i.setLink(a[u-2],a[u-1],a[u]);break;case 80:this.$=a[u-3],i.setLink(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 81:this.$=a[u-4],i.setLink(a[u-3],a[u-2],a[u]),i.setTooltip(a[u-3],a[u-1]);break;case 84:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1],a[u]);break;case 85:this.$=a[u-4],i.setClickEvent(a[u-3],a[u-2],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 86:this.$=a[u-3],i.setLink(a[u-2],a[u]);break;case 87:this.$=a[u-4],i.setLink(a[u-3],a[u-1],a[u]);break;case 88:this.$=a[u-4],i.setLink(a[u-3],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 89:this.$=a[u-5],i.setLink(a[u-4],a[u-2],a[u]),i.setTooltip(a[u-4],a[u-1]);break;case 90:this.$=a[u-2],i.setCssStyle(a[u-1],a[u]);break;case 91:i.setCssClass(a[u-1],a[u]);break;case 93:a[u-2].push(a[u]),this.$=a[u-2]}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,47:r,49:l,50:o,52:c,54:h,55:d,58:p,60:A,61:y,62:m,63:C,73:g,74:b,76:E,80:k,81:T,84:f,99:D,101:F,102:B},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(_,[2,5],{8:[1,48]}),{8:[1,49]},t(S,[2,18],{22:[1,50]}),t(S,[2,20]),t(S,[2,21]),t(S,[2,22]),t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),t(S,[2,26]),t(S,[2,27]),t(S,[2,28]),t(S,[2,29]),{34:[1,51]},{36:[1,52]},t(S,[2,32]),t(S,[2,48],{51:53,64:56,65:57,13:[1,54],22:[1,55],66:N,67:L,68:$,69:x,70:v,71:I,72:O}),{39:[1,65]},t(w,[2,39],{39:[1,67],44:[1,66]}),t(S,[2,50]),t(S,[2,51]),{16:68,58:p,84:f,99:D,101:F},{16:39,18:69,19:40,58:p,84:f,99:D,101:F,102:B},{16:39,18:70,19:40,58:p,84:f,99:D,101:F,102:B},{16:39,18:71,19:40,58:p,84:f,99:D,101:F,102:B},{58:[1,72]},{13:[1,73]},{16:39,18:74,19:40,58:p,84:f,99:D,101:F,102:B},{13:R,53:75},{56:77,58:[1,78]},t(S,[2,61]),t(S,[2,62]),t(S,[2,63]),t(S,[2,64]),t(P,[2,12],{16:39,19:40,18:80,17:[1,79],20:[1,81],58:p,84:f,99:D,101:F,102:B}),t(P,[2,14],{20:[1,82]}),{15:83,16:84,58:p,84:f,99:D,101:F},{16:39,18:85,19:40,58:p,84:f,99:D,101:F,102:B},t(K,[2,118]),t(K,[2,119]),t(K,[2,120]),t(K,[2,121]),t([1,8,9,12,13,20,22,39,41,44,66,67,68,69,70,71,72,77,79],[2,122]),t(_,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,18:21,38:22,43:23,16:39,19:40,5:86,33:e,35:s,37:i,42:n,46:a,47:r,49:l,50:o,52:c,54:h,55:d,58:p,60:A,61:y,62:m,63:C,73:g,74:b,76:E,80:k,81:T,84:f,99:D,101:F,102:B}),{5:87,10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,47:r,49:l,50:o,52:c,54:h,55:d,58:p,60:A,61:y,62:m,63:C,73:g,74:b,76:E,80:k,81:T,84:f,99:D,101:F,102:B},t(S,[2,19]),t(S,[2,30]),t(S,[2,31]),{13:[1,89],16:39,18:88,19:40,58:p,84:f,99:D,101:F,102:B},{51:90,64:56,65:57,66:N,67:L,68:$,69:x,70:v,71:I,72:O},t(S,[2,49]),{65:91,71:I,72:O},t(M,[2,68],{64:92,66:N,67:L,68:$,69:x,70:v}),t(G,[2,69]),t(G,[2,70]),t(G,[2,71]),t(G,[2,72]),t(G,[2,73]),t(U,[2,74]),t(U,[2,75]),{8:[1,94],24:95,40:93,43:23,46:a},{16:96,58:p,84:f,99:D,101:F},{45:97,49:Y},{48:[1,99]},{13:[1,100]},{13:[1,101]},{77:[1,102],79:[1,103]},{22:z,57:104,58:Q,80:W,82:105,83:106,84:X,85:j,86:V,87:q,88:H,89:J},{58:[1,116]},{13:R,53:117},t(S,[2,57]),t(S,[2,123]),{22:z,57:118,58:Q,59:[1,119],80:W,82:105,83:106,84:X,85:j,86:V,87:q,88:H,89:J},t(Z,[2,59]),{16:39,18:120,19:40,58:p,84:f,99:D,101:F,102:B},t(P,[2,15]),t(P,[2,16]),t(P,[2,17]),{39:[2,35]},{15:122,16:84,17:[1,121],39:[2,9],58:p,84:f,99:D,101:F},t(tt,[2,43],{11:123,12:[1,124]}),t(_,[2,7]),{9:[1,125]},t(et,[2,52]),{16:39,18:126,19:40,58:p,84:f,99:D,101:F,102:B},{13:[1,128],16:39,18:127,19:40,58:p,84:f,99:D,101:F,102:B},t(M,[2,67],{64:129,66:N,67:L,68:$,69:x,70:v}),t(M,[2,66]),{41:[1,130]},{24:95,40:131,43:23,46:a},{8:[1,132],41:[2,36]},t(w,[2,40],{39:[1,133]}),{41:[1,134]},{41:[2,46],45:135,49:Y},{16:39,18:136,19:40,58:p,84:f,99:D,101:F,102:B},t(S,[2,76],{13:[1,137]}),t(S,[2,78],{13:[1,139],75:[1,138]}),t(S,[2,82],{13:[1,140],78:[1,141]}),{13:[1,142]},t(S,[2,90],{59:st}),t(it,[2,92],{83:144,22:z,58:Q,80:W,84:X,85:j,86:V,87:q,88:H,89:J}),t(nt,[2,94]),t(nt,[2,96]),t(nt,[2,97]),t(nt,[2,98]),t(nt,[2,99]),t(nt,[2,100]),t(nt,[2,101]),t(nt,[2,102]),t(nt,[2,103]),t(nt,[2,104]),t(S,[2,91]),t(S,[2,56]),t(S,[2,58],{59:st}),{58:[1,145]},t(P,[2,13]),{15:146,16:84,58:p,84:f,99:D,101:F},{39:[2,11]},t(tt,[2,44]),{13:[1,147]},{1:[2,4]},t(et,[2,54]),t(et,[2,53]),{16:39,18:148,19:40,58:p,84:f,99:D,101:F,102:B},t(M,[2,65]),t(S,[2,33]),{41:[1,149]},{24:95,40:150,41:[2,37],43:23,46:a},{45:151,49:Y},t(w,[2,41]),{41:[2,47]},t(S,[2,45]),t(S,[2,77]),t(S,[2,79]),t(S,[2,80],{75:[1,152]}),t(S,[2,83]),t(S,[2,84],{13:[1,153]}),t(S,[2,86],{13:[1,155],75:[1,154]}),{22:z,58:Q,80:W,82:156,83:106,84:X,85:j,86:V,87:q,88:H,89:J},t(nt,[2,95]),t(Z,[2,60]),{39:[2,10]},{14:[1,157]},t(et,[2,55]),t(S,[2,34]),{41:[2,38]},{41:[1,158]},t(S,[2,81]),t(S,[2,85]),t(S,[2,87]),t(S,[2,88],{75:[1,159]}),t(it,[2,93],{83:144,22:z,58:Q,80:W,84:X,85:j,86:V,87:q,88:H,89:J}),t(tt,[2,8]),t(w,[2,42]),t(S,[2,89])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,35],122:[2,11],125:[2,4],135:[2,47],146:[2,10],150:[2,38]},parseError:(0,u.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,u.K2)(function(t){var e=this,s=[0],i=[],n=[null],a=[],r=this.table,l="",o=0,c=0,h=0,d=a.slice.call(arguments,1),p=Object.create(this.lexer),A={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(A.yy[y]=this.yy[y]);p.setInput(t,A.yy),A.yy.lexer=p,A.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var C=p.options&&p.options.ranges;function g(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof A.yy.parseError?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,u.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,a.length=a.length-t},"popStack"),(0,u.K2)(g,"lex");for(var b,E,k,T,f,D,F,B,_,S={};;){if(k=s[s.length-1],this.defaultActions[k]?T=this.defaultActions[k]:(null==b&&(b=g()),T=r[k]&&r[k][b]),void 0===T||!T.length||!T[0]){var N="";for(D in _=[],r[k])this.terminals_[D]&&D>2&&_.push("'"+this.terminals_[D]+"'");N=p.showPosition?"Parse error on line "+(o+1)+":\n"+p.showPosition()+"\nExpecting "+_.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[b]||b,line:p.yylineno,loc:m,expected:_})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+b);switch(T[0]){case 1:s.push(b),n.push(p.yytext),a.push(p.yylloc),s.push(T[1]),b=null,E?(b=E,E=null):(c=p.yyleng,l=p.yytext,o=p.yylineno,m=p.yylloc,h>0&&h--);break;case 2:if(F=this.productions_[T[1]][1],S.$=n[n.length-F],S._$={first_line:a[a.length-(F||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(F||1)].first_column,last_column:a[a.length-1].last_column},C&&(S._$.range=[a[a.length-(F||1)].range[0],a[a.length-1].range[1]]),void 0!==(f=this.performAction.apply(S,[l,c,o,A.yy,T[1],n,a].concat(d))))return f;F&&(s=s.slice(0,-1*F*2),n=n.slice(0,-1*F),a=a.slice(0,-1*F)),s.push(this.productions_[T[1]][0]),n.push(S.$),a.push(S._$),B=r[s[s.length-2]][s[s.length-1]],s.push(B);break;case 3:return!0}}return!0},"parse")},rt=function(){return{EOF:1,parseError:(0,u.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,u.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,u.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,u.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,u.K2)(function(){return this._more=!0,this},"more"),reject:(0,u.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,u.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,u.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,u.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,u.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,u.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var a in n)this[a]=n[a];return!1}return!1},"test_match"),next:(0,u.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),a=0;a<n.length;a++)if((s=this._input.match(this.rules[n[a]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,u.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,u.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,u.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,u.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,u.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,u.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,u.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,u.K2)(function(t,e,s,i){switch(s){case 0:return 60;case 1:return 61;case 2:return 62;case 3:return 63;case 4:case 5:case 14:case 31:case 36:case 40:case 47:break;case 6:return this.begin("acc_title"),33;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),35;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 19:case 22:case 24:case 58:case 61:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 35:return 8;case 15:case 16:return 7;case 17:case 37:case 45:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 77;case 23:return 78;case 25:return"STR";case 26:this.begin("string");break;case 27:return 80;case 28:return 55;case 29:return this.begin("namespace"),42;case 30:case 39:return this.popState(),8;case 32:return this.begin("namespace-body"),39;case 33:case 43:return this.popState(),41;case 34:case 44:return"EOF_IN_STRUCT";case 38:return this.begin("class"),46;case 41:return this.popState(),this.popState(),41;case 42:return this.begin("class-body"),39;case 46:return"OPEN_IN_STRUCT";case 48:return"MEMBER";case 49:return 81;case 50:return 73;case 51:return 74;case 52:return 76;case 53:return 52;case 54:return 54;case 55:return 47;case 56:return 48;case 57:return 79;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:case 65:case 66:case 67:return 75;case 68:case 69:return 67;case 70:case 71:return 69;case 72:return 68;case 73:return 66;case 74:return 70;case 75:return 71;case 76:return 72;case 77:return 22;case 78:return 44;case 79:return 99;case 80:return 17;case 81:return"PLUS";case 82:return 85;case 83:return 59;case 84:case 85:return 88;case 86:return 89;case 87:case 88:return"EQUALS";case 89:return 58;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 84;case 94:return 101;case 95:case 96:return 87;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}}}();function ut(){this.yy={}}return at.lexer=rt,(0,u.K2)(ut,"Parser"),ut.prototype=at,at.Parser=ut,new ut}();o.parser=o;var c=o,h=["#","+","~","-",""],d=class{static{(0,u.K2)(this,"ClassMember")}constructor(t,e){this.memberType=e,this.visibility="",this.classifier="",this.text="";const s=(0,u.jZ)(t,(0,u.D7)());this.parseMember(s)}getDisplayDetails(){let t=this.visibility+(0,u.QO)(this.id);"method"===this.memberType&&(t+=`(${(0,u.QO)(this.parameters.trim())})`,this.returnType&&(t+=" : "+(0,u.QO)(this.returnType))),t=t.trim();return{displayText:t,cssStyle:this.parseClassifier()}}parseMember(t){let e="";if("method"===this.memberType){const s=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(s){const t=s[1]?s[1].trim():"";if(h.includes(t)&&(this.visibility=t),this.id=s[2],this.parameters=s[3]?s[3].trim():"",e=s[4]?s[4].trim():"",this.returnType=s[5]?s[5].trim():"",""===e){const t=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(t)&&(e=t,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const s=t.length,i=t.substring(0,1),n=t.substring(s-1);h.includes(i)&&(this.visibility=i),/[$*]/.exec(n)&&(e=n),this.id=t.substring(""===this.visibility?0:1,""===e?s:s-1)}this.classifier=e,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();const s=`${this.visibility?"\\"+this.visibility:""}${(0,u.QO)(this.id)}${"method"===this.memberType?`(${(0,u.QO)(this.parameters)})${this.returnType?" : "+(0,u.QO)(this.returnType):""}`:""}`;this.text=s.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}},p="classId-",A=0,y=(0,u.K2)(t=>u.Y2.sanitizeText(t,(0,u.D7)()),"sanitizeText"),m=class{constructor(){this.relations=[],this.classes=new Map,this.styleClasses=new Map,this.notes=[],this.interfaces=[],this.namespaces=new Map,this.namespaceCounter=0,this.functions=[],this.lineType={LINE:0,DOTTED_LINE:1},this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},this.setupToolTips=(0,u.K2)(t=>{let e=(0,l.Ltv)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,l.Ltv)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,l.Ltv)(t).select("svg").selectAll("g.node").on("mouseover",t=>{const s=(0,l.Ltv)(t.currentTarget);if(null===s.attr("title"))return;const i=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(s.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.top-14+document.body.scrollTop+"px"),e.html(e.html().replace(/<br\/>/g,"<br/>")),s.classed("hover",!0)}).on("mouseout",t=>{e.transition().duration(500).style("opacity",0);(0,l.Ltv)(t.currentTarget).classed("hover",!1)})},"setupToolTips"),this.direction="TB",this.setAccTitle=u.SV,this.getAccTitle=u.iN,this.setAccDescription=u.EI,this.getAccDescription=u.m7,this.setDiagramTitle=u.ke,this.getDiagramTitle=u.ab,this.getConfig=(0,u.K2)(()=>(0,u.D7)().class,"getConfig"),this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{(0,u.K2)(this,"ClassDB")}splitClassNameAndType(t){const e=u.Y2.sanitizeText(t,(0,u.D7)());let s="",i=e;if(e.indexOf("~")>0){const t=e.split("~");i=y(t[0]),s=y(t[1])}return{className:i,type:s}}setClassLabel(t,e){const s=u.Y2.sanitizeText(t,(0,u.D7)());e&&(e=y(e));const{className:i}=this.splitClassNameAndType(s);this.classes.get(i).label=e,this.classes.get(i).text=`${e}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(t){const e=u.Y2.sanitizeText(t,(0,u.D7)()),{className:s,type:i}=this.splitClassNameAndType(e);if(this.classes.has(s))return;const n=u.Y2.sanitizeText(s,(0,u.D7)());this.classes.set(n,{id:n,type:i,label:n,text:`${n}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:p+n+"-"+A}),A++}addInterface(t,e){const s={id:`interface${this.interfaces.length}`,label:t,classId:e};this.interfaces.push(s)}lookUpDomId(t){const e=u.Y2.sanitizeText(t,(0,u.D7)());if(this.classes.has(e))return this.classes.get(e).domId;throw new Error("Class not found: "+e)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",(0,u.IU)()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(t){u.Rm.debug("Adding relation: "+JSON.stringify(t));const e=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1!==this.relationType.LOLLIPOP||e.includes(t.relation.type2)?t.relation.type2!==this.relationType.LOLLIPOP||e.includes(t.relation.type1)?(this.addClass(t.id1),this.addClass(t.id2)):(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2="interface"+(this.interfaces.length-1)):(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1="interface"+(this.interfaces.length-1)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=u.Y2.sanitizeText(t.relationTitle1.trim(),(0,u.D7)()),t.relationTitle2=u.Y2.sanitizeText(t.relationTitle2.trim(),(0,u.D7)()),this.relations.push(t)}addAnnotation(t,e){const s=this.splitClassNameAndType(t).className;this.classes.get(s).annotations.push(e)}addMember(t,e){this.addClass(t);const s=this.splitClassNameAndType(t).className,i=this.classes.get(s);if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?i.annotations.push(y(t.substring(2,t.length-2))):t.indexOf(")")>0?i.methods.push(new d(t,"method")):t&&i.members.push(new d(t,"attribute"))}}addMembers(t,e){Array.isArray(e)&&(e.reverse(),e.forEach(e=>this.addMember(t,e)))}addNote(t,e){const s={id:`note${this.notes.length}`,class:e,text:t};this.notes.push(s)}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),y(t.trim())}setCssClass(t,e){t.split(",").forEach(t=>{let s=t;/\d/.exec(t[0])&&(s=p+s);const i=this.classes.get(s);i&&(i.cssClasses+=" "+e)})}defineClass(t,e){for(const s of t){let t=this.styleClasses.get(s);void 0===t&&(t={id:s,styles:[],textStyles:[]},this.styleClasses.set(s,t)),e&&e.forEach(e=>{if(/color/.exec(e)){const s=e.replace("fill","bgFill");t.textStyles.push(s)}t.styles.push(e)}),this.classes.forEach(t=>{t.cssClasses.includes(s)&&t.styles.push(...e.flatMap(t=>t.split(",")))})}}setTooltip(t,e){t.split(",").forEach(t=>{void 0!==e&&(this.classes.get(t).tooltip=y(e))})}getTooltip(t,e){return e&&this.namespaces.has(e)?this.namespaces.get(e).classes.get(t).tooltip:this.classes.get(t).tooltip}setLink(t,e,s){const i=(0,u.D7)();t.split(",").forEach(t=>{let n=t;/\d/.exec(t[0])&&(n=p+n);const a=this.classes.get(n);a&&(a.link=r._K.formatUrl(e,i),"sandbox"===i.securityLevel?a.linkTarget="_top":a.linkTarget="string"==typeof s?y(s):"_blank")}),this.setCssClass(t,"clickable")}setClickEvent(t,e,s){t.split(",").forEach(t=>{this.setClickFunc(t,e,s),this.classes.get(t).haveCallback=!0}),this.setCssClass(t,"clickable")}setClickFunc(t,e,s){const i=u.Y2.sanitizeText(t,(0,u.D7)());if("loose"!==(0,u.D7)().securityLevel)return;if(void 0===e)return;const n=i;if(this.classes.has(n)){const t=this.lookUpDomId(n);let i=[];if("string"==typeof s){i=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<i.length;t++){let e=i[t].trim();e.startsWith('"')&&e.endsWith('"')&&(e=e.substr(1,e.length-2)),i[t]=e}}0===i.length&&i.push(t),this.functions.push(()=>{const s=document.querySelector(`[id="${t}"]`);null!==s&&s.addEventListener("click",()=>{r._K.runFunc(e,...i)},!1)})}}bindFunctions(t){this.functions.forEach(e=>{e(t)})}getDirection(){return this.direction}setDirection(t){this.direction=t}addNamespace(t){this.namespaces.has(t)||(this.namespaces.set(t,{id:t,classes:new Map,children:{},domId:p+t+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,e){if(this.namespaces.has(t))for(const s of e){const{className:e}=this.splitClassNameAndType(s);this.classes.get(e).parent=t,this.namespaces.get(t).classes.set(e,this.classes.get(e))}}setCssStyle(t,e){const s=this.classes.get(t);if(e&&s)for(const i of e)i.includes(",")?s.styles.push(...i.split(",")):s.styles.push(i)}getArrowMarker(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}getData(){const t=[],e=[],s=(0,u.D7)();for(const n of this.namespaces.keys()){const e=this.namespaces.get(n);if(e){const i={id:e.id,label:e.id,isGroup:!0,padding:s.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:s.look};t.push(i)}}for(const n of this.classes.keys()){const e=this.classes.get(n);if(e){const i=e;i.parentId=e.parent,i.look=s.look,t.push(i)}}let i=0;for(const n of this.notes){i++;const a={id:n.id,label:n.text,isGroup:!1,shape:"note",padding:s.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${s.themeVariables.noteBkgColor}`,`stroke: ${s.themeVariables.noteBorderColor}`],look:s.look};t.push(a);const r=this.classes.get(n.class)?.id??"";if(r){const t={id:`edgeNote${i}`,start:n.id,end:r,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:s.look};e.push(t)}}for(const n of this.interfaces){const e={id:n.id,label:n.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:s.look};t.push(e)}i=0;for(const n of this.relations){i++;const t={id:(0,r.rY)(n.id1,n.id2,{prefix:"id",counter:i}),start:n.id1,end:n.id2,type:"normal",label:n.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(n.relation.type1),arrowTypeEnd:this.getArrowMarker(n.relation.type2),startLabelRight:"none"===n.relationTitle1?"":n.relationTitle1,endLabelLeft:"none"===n.relationTitle2?"":n.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:n.style||"",pattern:1==n.relation.lineType?"dashed":"solid",look:s.look};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:this.getDirection()}}},C=(0,u.K2)(t=>`g.classGroup text {\n fill: ${t.nodeBorder||t.classText};\n stroke: none;\n font-family: ${t.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${t.classText};\n}\n.edgeLabel .label rect {\n fill: ${t.mainBkg};\n}\n.label text {\n fill: ${t.classText};\n}\n\n.labelBkg {\n background: ${t.mainBkg};\n}\n.edgeLabel .label span {\n background: ${t.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${t.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n line-height: initial;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n ${(0,i.o)()}\n`,"getStyles"),g=(0,u.K2)((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir"),b={getClasses:(0,u.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,u.K2)(async function(t,e,s,i){u.Rm.info("REF0:"),u.Rm.info("Drawing class diagram (v3)",e);const{securityLevel:l,state:o,layout:c}=(0,u.D7)(),h=i.db.getData(),d=(0,n.A)(e,l);h.type=i.type,h.layoutAlgorithm=(0,a.q7)(c),h.nodeSpacing=o?.nodeSpacing||50,h.rankSpacing=o?.rankSpacing||50,h.markers=["aggregation","extension","composition","dependency","lollipop"],h.diagramId=e,await(0,a.XX)(h,d);r._K.insertTitle(d,"classDiagramTitleText",o?.titleTopMargin??25,i.db.getDiagramTitle()),(0,n.P)(d,8,"classDiagram",o?.useMaxWidth??!0)},"draw"),getDir:g}},53776:(t,e,s)=>{s.d(e,{o:()=>i});var i=(0,s(27293).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},97576:(t,e,s)=>{s.d(e,{A:()=>a,P:()=>r});var i=s(27293),n=s(61274),a=(0,i.K2)((t,e)=>{let s;"sandbox"===e&&(s=(0,n.Ltv)("#i"+t));return("sandbox"===e?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${t}"]`)},"getDiagramElement"),r=(0,i.K2)((t,e,s,n)=>{t.attr("class",s);const{width:a,height:r,x:o,y:c}=u(t,e);(0,i.a$)(t,r,a,n);const h=l(o,c,a,r,e);t.attr("viewBox",h),i.Rm.debug(`viewBox configured: ${h} with padding: ${e}`)},"setupViewPortForSVG"),u=(0,i.K2)((t,e)=>{const s=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*e,height:s.height+2*e,x:s.x,y:s.y}},"calculateDimensionsWithPadding"),l=(0,i.K2)((t,e,s,i,n)=>`${t-n} ${e-n} ${s} ${i}`,"createViewBox")}}]); \ No newline at end of file diff --git a/assets/js/64018eb5.14ae6d1d.js b/assets/js/64018eb5.14ae6d1d.js new file mode 100644 index 0000000000..99e4c42bf5 --- /dev/null +++ b/assets/js/64018eb5.14ae6d1d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6494],{58994:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>t,metadata:()=>d,toc:()=>l});const d=JSON.parse('{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.11.1/rules/android/disable_viewbinding.md","sourceDirName":"rules/android","slug":"/rules/android/disable_viewbinding","permalink":"/ModuleCheck/docs/0.11.1/rules/android/disable_viewbinding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/android/disable_viewbinding.md","tags":[],"version":"0.11.1","frontMatter":{"id":"disable_viewbinding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.11.1/rules/android/disable_resources"}}');var s=i(23420),o=i(65404);const t={id:"disable_viewbinding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,a={},l=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},65404:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>r});var d=i(36672);const s={},o=d.createContext(s);function t(e){const n=d.useContext(o);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),d.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6518a949.2a328af4.js b/assets/js/6518a949.2a328af4.js new file mode 100644 index 0000000000..3a31b24703 --- /dev/null +++ b/assets/js/6518a949.2a328af4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8904],{87834:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.12.4","label":"0.12.4","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.12.4","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.12.4/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.12.4/configuration","docId":"configuration","unlisted":false},{"type":"link","label":"Suppressing Findings","href":"/ModuleCheck/docs/0.12.4/suppressing-findings","docId":"suppressing-findings","unlisted":false},{"type":"link","label":"CI Workflow","href":"/ModuleCheck/docs/0.12.4/ci-workflow","docId":"ci-workflow","unlisted":false},{"type":"category","label":"Rules","collapsed":false,"items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.12.4/rules/unused_dependency","docId":"rules/unused_dependency","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/0.12.4/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/0.12.4/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"type":"link","label":"Redundant Dependency","href":"/ModuleCheck/docs/0.12.4/rules/redundant_dependency","docId":"rules/redundant_dependency","unlisted":false},{"type":"link","label":"Overshot Dependency","href":"/ModuleCheck/docs/0.12.4/rules/overshot_dependency","docId":"rules/overshot_dependency","unlisted":false},{"type":"link","label":"Project Depth","href":"/ModuleCheck/docs/0.12.4/rules/project_depth","docId":"rules/project_depth","unlisted":false},{"type":"category","label":"Compiler","collapsed":false,"items":[{"type":"link","label":"Could Use Anvil Factory Generation","href":"/ModuleCheck/docs/0.12.4/rules/use_anvil_factory_generation","docId":"rules/compiler/use_anvil_factory_generation","unlisted":false},{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_processor","docId":"rules/compiler/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_plugin","docId":"rules/compiler/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.12.4/rules/custom_kapt_matchers","docId":"rules/compiler/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"type":"category","label":"Sorting","collapsed":false,"items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.12.4/rules/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.12.4/rules/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"type":"category","label":"Android","collapsed":false,"items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.12.4/rules/disable_android_resources","docId":"rules/android/disable_android_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.12.4/rules/disable_view_binding","docId":"rules/android/disable_view_binding","unlisted":false},{"type":"link","label":"Unused Kotlin Android Extensions","href":"/ModuleCheck/docs/0.12.4/rules/unused_kotlin_android_extensions","docId":"rules/android/unused_kotlin_android_extensions","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"ci-workflow":{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","sidebar":"Docs"},"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"Dependencies","sidebar":"Docs"},"rules/android/disable_android_resources":{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_view_binding":{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/android/unused_kotlin_android_extensions":{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","sidebar":"Docs"},"rules/compiler/custom_kapt_matchers":{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/compiler/unused_kapt_plugin":{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","sidebar":"Docs"},"rules/compiler/unused_kapt_processor":{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/compiler/use_anvil_factory_generation":{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/overshot_dependency":{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","sidebar":"Docs"},"rules/project_depth":{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","sidebar":"Docs"},"rules/redundant_dependency":{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused_dependency":{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"},"suppressing-findings":{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/6538.749844d5.js b/assets/js/6538.749844d5.js new file mode 100644 index 0000000000..93d5808808 --- /dev/null +++ b/assets/js/6538.749844d5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6538],{94157:(t,e,n)=>{n.d(e,{diagram:()=>J});var i=n(27293),s=n(61274),r=n(13212),a=n(58480),o=n(81896),c=function(){var t=(0,i.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,11,12,14,16,17,20,21],n=[1,9],s=[1,10],r=[1,11],a=[1,12],o=[1,13],c=[1,16],l=[1,17],h={trace:(0,i.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:(0,i.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.getCommonDb().setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 9:this.$=r[o].trim(),i.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=r[o].trim(),i.getCommonDb().setAccDescription(this.$);break;case 12:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 15:i.addTask(r[o],0,""),this.$=r[o];break;case 16:i.addEvent(r[o].substr(2)),this.$=r[o]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:s,14:r,16:a,17:o,18:14,19:15,20:c,21:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:n,12:s,14:r,16:a,17:o,18:14,19:15,20:c,21:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:(0,i.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,i.K2)(function(t){var e=this,n=[0],s=[],r=[null],a=[],o=this.table,c="",l=0,h=0,d=0,u=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var f=p.yylloc;a.push(f);var m=p.options&&p.options.ranges;function x(){var t;return"number"!=typeof(t=s.pop()||p.lex()||1)&&(t instanceof Array&&(t=(s=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,i.K2)(function(t){n.length=n.length-2*t,r.length=r.length-t,a.length=a.length-t},"popStack"),(0,i.K2)(x,"lex");for(var b,k,_,w,v,K,S,$,E,T={};;){if(_=n[n.length-1],this.defaultActions[_]?w=this.defaultActions[_]:(null==b&&(b=x()),w=o[_]&&o[_][b]),void 0===w||!w.length||!w[0]){var I="";for(K in E=[],o[_])this.terminals_[K]&&K>2&&E.push("'"+this.terminals_[K]+"'");I=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(I,{text:p.match,token:this.terminals_[b]||b,line:p.yylineno,loc:f,expected:E})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+b);switch(w[0]){case 1:n.push(b),r.push(p.yytext),a.push(p.yylloc),n.push(w[1]),b=null,k?(b=k,k=null):(h=p.yyleng,c=p.yytext,l=p.yylineno,f=p.yylloc,d>0&&d--);break;case 2:if(S=this.productions_[w[1]][1],T.$=r[r.length-S],T._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(T._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(v=this.performAction.apply(T,[c,h,l,y.yy,w[1],r,a].concat(u))))return v;S&&(n=n.slice(0,-1*S*2),r=r.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[w[1]][0]),r.push(T.$),a.push(T._$),$=o[n[n.length-2]][n[n.length-1]],n.push($);break;case 3:return!0}}return!0},"parse")},d=function(){return{EOF:1,parseError:(0,i.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,i.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,i.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,i.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,i.K2)(function(){return this._more=!0,this},"more"),reject:(0,i.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,i.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,i.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,i.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,i.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,i.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,i.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;r<s.length;r++)if((n=this._input.match(this.rules[s[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,i.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,i.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,i.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,i.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,i.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,i.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,i.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,i.K2)(function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 10;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}}}();function u(){this.yy={}}return h.lexer=d,(0,i.K2)(u,"Parser"),u.prototype=h,h.Parser=u,new u}();c.parser=c;var l=c,h={};(0,i.VA)(h,{addEvent:()=>w,addSection:()=>x,addTask:()=>_,addTaskOrg:()=>v,clear:()=>m,default:()=>S,getCommonDb:()=>f,getSections:()=>b,getTasks:()=>k});var d="",u=0,p=[],y=[],g=[],f=(0,i.K2)(()=>i.Wt,"getCommonDb"),m=(0,i.K2)(function(){p.length=0,y.length=0,d="",g.length=0,(0,i.IU)()},"clear"),x=(0,i.K2)(function(t){d=t,p.push(t)},"addSection"),b=(0,i.K2)(function(){return p},"getSections"),k=(0,i.K2)(function(){let t=K();let e=0;for(;!t&&e<100;)t=K(),e++;return y.push(...g),y},"getTasks"),_=(0,i.K2)(function(t,e,n){const i={id:u++,section:d,type:d,task:t,score:e||0,events:n?[n]:[]};g.push(i)},"addTask"),w=(0,i.K2)(function(t){g.find(t=>t.id===u-1).events.push(t)},"addEvent"),v=(0,i.K2)(function(t){const e={section:d,type:d,description:t,task:t,classes:[]};y.push(e)},"addTaskOrg"),K=(0,i.K2)(function(){const t=(0,i.K2)(function(t){return g[t].processed},"compileTask");let e=!0;for(const[n,i]of g.entries())t(n),e=e&&i.processed;return e},"compileTasks"),S={clear:m,getCommonDb:f,addSection:x,getSections:b,getTasks:k,addTask:_,addTaskOrg:v,addEvent:w},$=(0,i.K2)(function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},"drawRect"),E=(0,i.K2)(function(t,e){const n=15,r=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),a=t.append("g");function o(t){const i=(0,s.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function c(t){const i=(0,s.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function l(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),a.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,i.K2)(o,"smile"),(0,i.K2)(c,"sad"),(0,i.K2)(l,"ambivalent"),e.score>3?o(a):e.score<3?c(a):l(a),r},"drawFace"),T=(0,i.K2)(function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},"drawCircle"),I=(0,i.K2)(function(t,e){const n=e.text.replace(/<br\s*\/?>/gi," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const s=i.append("tspan");return s.attr("x",e.x+2*e.textMargin),s.text(n),i},"drawText"),R=(0,i.K2)(function(t,e){function n(t,e,n,i,s){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-s)+" "+(t+n-1.2*s)+","+(e+i)+" "+t+","+(e+i)}(0,i.K2)(n,"genPoints");const s=t.append("polygon");s.attr("points",n(e.x,e.y,50,20,7)),s.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,I(t,e)},"drawLabel"),A=(0,i.K2)(function(t,e,n){const i=t.append("g"),s=P();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=n.width,s.height=n.height,s.class="journey-section section-type-"+e.num,s.rx=3,s.ry=3,$(i,s),H(n)(e.text,i,s.x,s.y,s.width,s.height,{class:"journey-section section-type-"+e.num},n,e.colour)},"drawSection"),L=-1,M=(0,i.K2)(function(t,e,n){const i=e.x+n.width/2,s=t.append("g");L++;s.append("line").attr("id","task"+L).attr("x1",i).attr("y1",e.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),E(s,{cx:i,cy:300+30*(5-e.score),score:e.score});const r=P();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width,r.height=n.height,r.class="task task-type-"+e.num,r.rx=3,r.ry=3,$(s,r),H(n)(e.task,s,r.x,r.y,r.width,r.height,{class:"task"},n,e.colour)},"drawTask"),C=(0,i.K2)(function(t,e){$(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),N=(0,i.K2)(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),P=(0,i.K2)(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),H=function(){function t(t,e,n,i,r,a,o,c){s(e.append("text").attr("x",n+r/2).attr("y",i+a/2+5).style("font-color",c).style("text-anchor","middle").text(t),o)}function e(t,e,n,i,r,a,o,c,l){const{taskFontSize:h,taskFontFamily:d}=c,u=t.split(/<br\s*\/?>/gi);for(let p=0;p<u.length;p++){const t=p*h-h*(u.length-1)/2,c=e.append("text").attr("x",n+r/2).attr("y",i).attr("fill",l).style("text-anchor","middle").style("font-size",h).style("font-family",d);c.append("tspan").attr("x",n+r/2).attr("dy",t).text(u[p]),c.attr("y",i+a/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),s(c,o)}}function n(t,n,i,r,a,o,c,l){const h=n.append("switch"),d=h.append("foreignObject").attr("x",i).attr("y",r).attr("width",a).attr("height",o).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");d.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,h,i,r,a,o,c,l),s(d,c)}function s(t,e){for(const n in e)n in e&&t.attr(n,e[n])}return(0,i.K2)(t,"byText"),(0,i.K2)(e,"byTspan"),(0,i.K2)(n,"byFo"),(0,i.K2)(s,"_setTextAttrs"),function(i){return"fo"===i.textPlacement?n:"old"===i.textPlacement?t:e}}(),O=(0,i.K2)(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics");function j(t,e){t.each(function(){var t,n=(0,s.Ltv)(this),i=n.text().split(/(\s+|<br>)/).reverse(),r=[],a=n.attr("y"),o=parseFloat(n.attr("dy")),c=n.text(null).append("tspan").attr("x",0).attr("y",a).attr("dy",o+"em");for(let s=0;s<i.length;s++)t=i[i.length-1-s],r.push(t),c.text(r.join(" ").trim()),(c.node().getComputedTextLength()>e||"<br>"===t)&&(r.pop(),c.text(r.join(" ").trim()),r="<br>"===t?[""]:[t],c=n.append("tspan").attr("x",0).attr("y",a).attr("dy","1.1em").text(t))})}(0,i.K2)(j,"wrap");var D=(0,i.K2)(function(t,e,n,i){const s=n%12-1,r=t.append("g");e.section=s,r.attr("class",(e.class?e.class+" ":"")+"timeline-node section-"+s);const a=r.append("g"),o=r.append("g"),c=o.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(j,e.width).node().getBBox(),l=i.fontSize?.replace?i.fontSize.replace("px",""):i.fontSize;return e.height=c.height+1.1*l*.5+e.padding,e.height=Math.max(e.height,e.maxHeight),e.width=e.width+2*e.padding,o.attr("transform","translate("+e.width/2+", "+e.padding/2+")"),W(a,e,s,i),e},"drawNode"),z=(0,i.K2)(function(t,e,n){const i=t.append("g"),s=i.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(j,e.width).node().getBBox(),r=n.fontSize?.replace?n.fontSize.replace("px",""):n.fontSize;return i.remove(),s.height+1.1*r*.5+e.padding},"getVirtualNodeHeight"),W=(0,i.K2)(function(t,e,n){t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("d",`M0 ${e.height-5} v${10-e.height} q0,-5 5,-5 h${e.width-10} q5,0 5,5 v${e.height-5} H0 Z`),t.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)},"defaultBkg"),B={drawRect:$,drawCircle:T,drawSection:A,drawText:I,drawLabel:R,drawTask:M,drawBackgroundRect:C,getTextObj:N,getNoteRect:P,initGraphics:O,drawNode:D,getVirtualNodeHeight:z},F=(0,i.K2)(function(t,e,n,r){const a=(0,i.D7)(),o=a.leftMargin??50;i.Rm.debug("timeline",r.db);const c=a.securityLevel;let l;"sandbox"===c&&(l=(0,s.Ltv)("#i"+e));const h=("sandbox"===c?(0,s.Ltv)(l.nodes()[0].contentDocument.body):(0,s.Ltv)("body")).select("#"+e);h.append("g");const d=r.db.getTasks(),u=r.db.getCommonDb().getDiagramTitle();i.Rm.debug("task",d),B.initGraphics(h);const p=r.db.getSections();i.Rm.debug("sections",p);let y=0,g=0,f=0,m=0,x=50+o,b=50;m=50;let k=0,_=!0;p.forEach(function(t){const e={number:k,descr:t,section:k,width:150,padding:20,maxHeight:y},n=B.getVirtualNodeHeight(h,e,a);i.Rm.debug("sectionHeight before draw",n),y=Math.max(y,n+20)});let w=0,v=0;i.Rm.debug("tasks.length",d.length);for(const[s,S]of d.entries()){const t={number:s,descr:S,section:S.section,width:150,padding:20,maxHeight:g},e=B.getVirtualNodeHeight(h,t,a);i.Rm.debug("taskHeight before draw",e),g=Math.max(g,e+20),w=Math.max(w,S.events.length);let n=0;for(const i of S.events){const t={descr:i,section:S.section,number:S.section,width:150,padding:20,maxHeight:50};n+=B.getVirtualNodeHeight(h,t,a)}S.events.length>0&&(n+=10*(S.events.length-1)),v=Math.max(v,n)}i.Rm.debug("maxSectionHeight before draw",y),i.Rm.debug("maxTaskHeight before draw",g),p&&p.length>0?p.forEach(t=>{const e=d.filter(e=>e.section===t),n={number:k,descr:t,section:k,width:200*Math.max(e.length,1)-50,padding:20,maxHeight:y};i.Rm.debug("sectionNode",n);const s=h.append("g"),r=B.drawNode(s,n,k,a);i.Rm.debug("sectionNode output",r),s.attr("transform",`translate(${x}, 50)`),b+=y+50,e.length>0&&V(h,e,k,x,b,g,a,w,v,y,!1),x+=200*Math.max(e.length,1),b=50,k++}):(_=!1,V(h,d,k,x,b,g,a,w,v,y,!0));const K=h.node().getBBox();i.Rm.debug("bounds",K),u&&h.append("text").text(u).attr("x",K.width/2-o).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),f=_?y+g+150:g+100;h.append("g").attr("class","lineWrapper").append("line").attr("x1",o).attr("y1",f).attr("x2",K.width+3*o).attr("y2",f).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),(0,i.ot)(void 0,h,a.timeline?.padding??50,a.timeline?.useMaxWidth??!1)},"draw"),V=(0,i.K2)(function(t,e,n,s,r,a,o,c,l,h,d){for(const u of e){const e={descr:u.task,section:n,number:n,width:150,padding:20,maxHeight:a};i.Rm.debug("taskNode",e);const c=t.append("g").attr("class","taskWrapper"),h=B.drawNode(c,e,n,o).height;if(i.Rm.debug("taskHeight after draw",h),c.attr("transform",`translate(${s}, ${r})`),a=Math.max(a,h),u.events){const e=t.append("g").attr("class","lineWrapper");let i=a;r+=100,i+=G(t,u.events,n,s,r,o),r-=100,e.append("line").attr("x1",s+95).attr("y1",r+a).attr("x2",s+95).attr("y2",r+a+100+l+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}s+=200,d&&!o.timeline?.disableMulticolor&&n++}r-=10},"drawTasks"),G=(0,i.K2)(function(t,e,n,s,r,a){let o=0;const c=r;r+=100;for(const l of e){const e={descr:l,section:n,number:n,width:150,padding:20,maxHeight:50};i.Rm.debug("eventNode",e);const c=t.append("g").attr("class","eventWrapper"),h=B.drawNode(c,e,n,a).height;o+=h,c.attr("transform",`translate(${s}, ${r})`),r=r+10+h}return r=c,o},"drawEvents"),U={setConf:(0,i.K2)(()=>{},"setConf"),draw:F},q=(0,i.K2)(t=>{let e="";for(let n=0;n<t.THEME_COLOR_LIMIT;n++)t["lineColor"+n]=t["lineColor"+n]||t["cScaleInv"+n],(0,r.A)(t["lineColor"+n])?t["lineColor"+n]=(0,a.A)(t["lineColor"+n],20):t["lineColor"+n]=(0,o.A)(t["lineColor"+n],20);for(let n=0;n<t.THEME_COLOR_LIMIT;n++){const i=""+(17-3*n);e+=`\n .section-${n-1} rect, .section-${n-1} path, .section-${n-1} circle, .section-${n-1} path {\n fill: ${t["cScale"+n]};\n }\n .section-${n-1} text {\n fill: ${t["cScaleLabel"+n]};\n }\n .node-icon-${n-1} {\n font-size: 40px;\n color: ${t["cScaleLabel"+n]};\n }\n .section-edge-${n-1}{\n stroke: ${t["cScale"+n]};\n }\n .edge-depth-${n-1}{\n stroke-width: ${i};\n }\n .section-${n-1} line {\n stroke: ${t["cScaleInv"+n]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${t["cScaleLabel"+n]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `}return e},"genSections"),J={db:h,renderer:U,parser:l,styles:(0,i.K2)(t=>`\n .edge {\n stroke-width: 3;\n }\n ${q(t)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/66e00e19.3dc8d15e.js b/assets/js/66e00e19.3dc8d15e.js new file mode 100644 index 0000000000..4f301f6cff --- /dev/null +++ b/assets/js/66e00e19.3dc8d15e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5939],{24094:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","source":"@site/versioned_docs/version-0.12.5/rules/project_depth.md","sourceDirName":"rules","slug":"/rules/project_depth","permalink":"/ModuleCheck/docs/rules/project_depth","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/project_depth.md","tags":[],"version":"0.12.5","frontMatter":{"id":"project_depth","slug":"/rules/project_depth","title":"Project Depth","sidebar_label":"Project Depth"},"sidebar":"Docs","previous":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/rules/overshot_dependency"},"next":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/rules/use_anvil_factory_generation"}}');var r=l(23420),t=l(65404);const d={id:"project_depth",slug:"/rules/project_depth",title:"Project Depth",sidebar_label:"Project Depth"},i=void 0,c={},o=[{value:"Dependencies and Build Concurrency",id:"dependencies-and-build-concurrency",level:3},{value:"Depth",id:"depth",level:3}];function h(e){const n={a:"a",code:"code",em:"em",h3:"h3",hr:"hr",li:"li",mermaid:"mermaid",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"TL;DR - Low depth values mean faster builds and better all-around scalability."}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["It's often useful to think of module dependencies as a directed tree\nor ",(0,r.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Directed_acyclic_graph",children:"directed acyclic graph"}),". If a module is a\nnode, then each module dependency is a child node, and the dependencies of those dependencies are\ngrand-child nodes."]}),"\n",(0,r.jsxs)(n.p,{children:["This is especially useful when thinking about ",(0,r.jsx)(n.strong,{children:"build performance"}),", because the parent-child\nrelationship is clear: ",(0,r.jsx)(n.em,{children:"child nodes must build before parent nodes"}),"."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(:app):::depth2\n\n screen1(:screen-1):::depth1\n screen2(:screen-2):::depth1\n\n lib1(:lib-1):::depth0\n lib2(:lib-2):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n\n screen1 --\x3e lib1\n screen1 --\x3e lib2\n screen2 --\x3e lib2"}),"\n",(0,r.jsx)(n.p,{children:"In the above example,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," must be built before ",(0,r.jsx)(n.code,{children:":screen-1"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-2"})," must be build before ",(0,r.jsx)(n.code,{children:":screen-2"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":screen-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," must be built before ",(0,r.jsx)(n.code,{children:":app"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build\nbefore their parents."}),"\n",(0,r.jsx)(n.h3,{id:"dependencies-and-build-concurrency",children:"Dependencies and Build Concurrency"}),"\n",(0,r.jsx)(n.p,{children:"Individual module builds are always done single-threaded, but multiple modules may build in parallel\nso long as no module in the set depends upon another module in that set. In the above graph,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":scren-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of parallel module builds is determined by the structure of the dependency graph\nand the number of available processor cores on the machine which is performing the build."}),"\n",(0,r.jsx)(n.h3,{id:"depth",children:"Depth"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Depth"})," refers to the maximum number of edges between a module and each of its leaf nodes in the\nproject dependency graph."]}),"\n",(0,r.jsx)(n.p,{children:"Low depth values indicate a shallow or flat project structure with loose (or no) coupling between\nmodules. In a full build, these projects scale well with hardware upgrades because they're able to\nbuild all those independent modules in parallel."}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n subgraph sg [A shallow graph]\n direction TB\n\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 2):::depth2\n\n screen1(depth: 1):::depth1\n screen2(depth: 1):::depth1\n screen3(depth: 1):::depth1\n screen4(depth: 1):::depth1\n\n lib1(depth: 0):::depth0\n lib2(depth: 0):::depth0\n lib3(depth: 0):::depth0\n lib4(depth: 0):::depth0\n lib5(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e lib1\n screen1 --\x3e lib4\n\n screen2 --\x3e lib1\n screen2 --\x3e lib3\n screen2 --\x3e lib4\n\n screen3 --\x3e lib2\n screen3 --\x3e lib3\n screen3 --\x3e lib4\n\n screen4 --\x3e lib3\n screen4 --\x3e lib5\n\n end\n\n style sg opacity:0.0\n"}),"\n",(0,r.jsxs)(n.p,{children:['On the other hand, "deep" projects do not offer many opportunities for parallelization. They have\nproject dependencies which must be built ',(0,r.jsx)(n.em,{children:"sequentially"}),". They also perform poorly in incremental\nbuilds, because a single change to even a mid-level module invalidates cached builds for half of the\nproject."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n style sg opacity:0.0\n subgraph sg [A deep graph]\n direction TB\n\n classDef depth6 fill:#800,stroke:#000,color:#FFF\n classDef depth5 fill:#A50,stroke:#000,color:#FFF\n classDef depth4 fill:#C0B,stroke:#000,color:#000\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 6):::depth6\n\n screen1(depth: 5):::depth5\n screen2(depth: 5):::depth5\n\n screen3(depth: 4):::depth4\n screen4(depth: 4):::depth4\n\n lib1(depth: 3):::depth3\n lib2(depth: 3):::depth3\n\n lib3(depth: 2):::depth2\n lib4(depth: 2):::depth2\n\n lib5(depth: 1):::depth1\n\n lib6(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e screen3\n screen1 --\x3e screen4\n\n screen2 --\x3e screen4\n\n screen3 --\x3e lib1\n screen3 --\x3e lib2\n\n screen4 --\x3e lib1\n screen4 --\x3e lib4\n\n lib1 --\x3e lib3\n lib1 --\x3e lib4\n\n lib2 --\x3e lib3\n\n lib3 --\x3e lib5\n lib4 --\x3e lib5\n\n lib5 --\x3e lib6\n\n end\n"})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},65404:(e,n,l)=>{l.d(n,{R:()=>d,x:()=>i});var s=l(36672);const r={},t=s.createContext(r);function d(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6710.fc711c77.js b/assets/js/6710.fc711c77.js new file mode 100644 index 0000000000..229e31e0c8 --- /dev/null +++ b/assets/js/6710.fc711c77.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6710],{46710:(t,e,s)=>{s.d(e,{diagram:()=>b});var i=s(97576),n=s(57442),r=(s(84982),s(43545),s(61598),s(70837),s(24199),s(47794)),a=s(27293),c=s(61274),o=s(80124),l=s(30941),h=function(){var t=(0,a.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],s=[1,10],i=[1,11],n=[1,12],r=[1,13],c=[1,20],o=[1,21],l=[1,22],h=[1,23],u=[1,24],y=[1,19],d=[1,25],p=[1,26],_=[1,18],g=[1,33],b=[1,34],m=[1,35],f=[1,36],E=[1,37],k=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],S=[1,42],O=[1,43],T=[1,52],A=[40,50,68,69],R=[1,63],N=[1,61],I=[1,58],C=[1,62],x=[1,64],D=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],$=[63,64,65,66,67],v=[1,81],w=[1,80],K=[1,78],L=[1,79],M=[6,10,42,47],B=[6,10,13,41,42,47,48,49],F=[1,89],P=[1,88],Y=[1,87],G=[19,56],z=[1,98],U=[1,97],Z=[19,56,58,60],j={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:(0,a.K2)(function(t,e,s,i,n,r,a){var c=r.length-1;switch(n){case 1:break;case 2:case 6:case 7:this.$=[];break;case 3:r[c-1].push(r[c]),this.$=r[c-1];break;case 4:case 5:case 55:case 78:case 62:case 63:case 66:this.$=r[c];break;case 8:i.addEntity(r[c-4]),i.addEntity(r[c-2]),i.addRelationship(r[c-4],r[c],r[c-2],r[c-3]);break;case 9:i.addEntity(r[c-8]),i.addEntity(r[c-4]),i.addRelationship(r[c-8],r[c],r[c-4],r[c-5]),i.setClass([r[c-8]],r[c-6]),i.setClass([r[c-4]],r[c-2]);break;case 10:i.addEntity(r[c-6]),i.addEntity(r[c-2]),i.addRelationship(r[c-6],r[c],r[c-2],r[c-3]),i.setClass([r[c-6]],r[c-4]);break;case 11:i.addEntity(r[c-6]),i.addEntity(r[c-4]),i.addRelationship(r[c-6],r[c],r[c-4],r[c-5]),i.setClass([r[c-4]],r[c-2]);break;case 12:i.addEntity(r[c-3]),i.addAttributes(r[c-3],r[c-1]);break;case 13:i.addEntity(r[c-5]),i.addAttributes(r[c-5],r[c-1]),i.setClass([r[c-5]],r[c-3]);break;case 14:i.addEntity(r[c-2]);break;case 15:i.addEntity(r[c-4]),i.setClass([r[c-4]],r[c-2]);break;case 16:i.addEntity(r[c]);break;case 17:i.addEntity(r[c-2]),i.setClass([r[c-2]],r[c]);break;case 18:i.addEntity(r[c-6],r[c-4]),i.addAttributes(r[c-6],r[c-1]);break;case 19:i.addEntity(r[c-8],r[c-6]),i.addAttributes(r[c-8],r[c-1]),i.setClass([r[c-8]],r[c-3]);break;case 20:i.addEntity(r[c-5],r[c-3]);break;case 21:i.addEntity(r[c-7],r[c-5]),i.setClass([r[c-7]],r[c-2]);break;case 22:i.addEntity(r[c-3],r[c-1]);break;case 23:i.addEntity(r[c-5],r[c-3]),i.setClass([r[c-5]],r[c]);break;case 24:case 25:this.$=r[c].trim(),i.setAccTitle(this.$);break;case 26:case 27:this.$=r[c].trim(),i.setAccDescription(this.$);break;case 32:i.setDirection("TB");break;case 33:i.setDirection("BT");break;case 34:i.setDirection("RL");break;case 35:i.setDirection("LR");break;case 36:this.$=r[c-3],i.addClass(r[c-2],r[c-1]);break;case 37:case 38:case 56:case 64:case 43:this.$=[r[c]];break;case 39:case 40:this.$=r[c-2].concat([r[c]]);break;case 41:this.$=r[c-2],i.setClass(r[c-1],r[c]);break;case 42:this.$=r[c-3],i.addCssStyles(r[c-2],r[c-1]);break;case 44:case 65:r[c-2].push(r[c]),this.$=r[c-2];break;case 46:this.$=r[c-1]+r[c];break;case 54:case 76:case 77:case 67:this.$=r[c].replace(/"/g,"");break;case 57:r[c].push(r[c-1]),this.$=r[c];break;case 58:this.$={type:r[c-1],name:r[c]};break;case 59:this.$={type:r[c-2],name:r[c-1],keys:r[c]};break;case 60:this.$={type:r[c-2],name:r[c-1],comment:r[c]};break;case 61:this.$={type:r[c-3],name:r[c-2],keys:r[c-1],comment:r[c]};break;case 68:this.$={cardA:r[c],relType:r[c-1],cardB:r[c-2]};break;case 69:this.$=i.Cardinality.ZERO_OR_ONE;break;case 70:this.$=i.Cardinality.ZERO_OR_MORE;break;case 71:this.$=i.Cardinality.ONE_OR_MORE;break;case 72:this.$=i.Cardinality.ONLY_ONE;break;case 73:this.$=i.Cardinality.MD_PARENT;break;case 74:this.$=i.Identification.NON_IDENTIFYING;break;case 75:this.$=i.Identification.IDENTIFYING}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:c,34:o,35:l,36:h,37:u,40:y,43:d,44:p,50:_},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:c,34:o,35:l,36:h,37:u,40:y,43:d,44:p,50:_},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:g,64:b,65:m,66:f,67:E}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(k,[2,54]),t(k,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:S,41:O},{16:44,40:S,41:O},{16:45,40:S,41:O},t(e,[2,4]),{11:46,40:y,50:_},{16:47,40:S,41:O},{18:48,19:[1,49],51:50,52:51,56:T},{11:53,40:y,50:_},{62:54,68:[1,55],69:[1,56]},t(A,[2,69]),t(A,[2,70]),t(A,[2,71]),t(A,[2,72]),t(A,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:R,38:57,41:N,42:I,45:59,46:60,48:C,49:x},t(D,[2,37]),t(D,[2,38]),{16:65,40:S,41:O,42:I},{13:R,38:66,41:N,42:I,45:59,46:60,48:C,49:x},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:I,63:g,64:b,65:m,66:f,67:E}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:T},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:g,64:b,65:m,66:f,67:E},t($,[2,74]),t($,[2,75]),{6:v,10:w,39:77,42:K,47:L},{40:[1,82],41:[1,83]},t(M,[2,43],{46:84,13:R,41:N,48:C,49:x}),t(B,[2,45]),t(B,[2,50]),t(B,[2,51]),t(B,[2,52]),t(B,[2,53]),t(e,[2,41],{42:I}),{6:v,10:w,39:85,42:K,47:L},{14:86,40:F,50:P,70:Y},{16:90,40:S,41:O},{11:91,40:y,50:_},{18:92,19:[1,93],51:50,52:51,56:T},t(e,[2,12]),{19:[2,57]},t(G,[2,58],{54:94,55:95,57:96,59:z,60:U}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:R,41:N,45:101,46:60,48:C,49:x},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(D,[2,39]),t(D,[2,40]),t(B,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:I},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(G,[2,59],{55:106,58:[1,107],60:U}),t(G,[2,60]),t(Z,[2,64]),t(G,[2,67]),t(Z,[2,66]),{18:108,19:[1,109],51:50,52:51,56:T},{16:110,40:S,41:O},t(M,[2,44],{46:84,13:R,41:N,48:C,49:x}),{14:111,40:F,50:P,70:Y},{16:112,40:S,41:O},{14:113,40:F,50:P,70:Y},t(e,[2,13]),t(G,[2,61]),{57:114,59:z},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:I}),t(e,[2,11]),{13:[1,117],42:I},t(e,[2,10]),t(Z,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:T},{14:120,40:F,50:P,70:Y},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:(0,a.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,a.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],c=this.table,o="",l=0,h=0,u=0,y=r.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(p.yy[_]=this.yy[_]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var g=d.yylloc;r.push(g);var b=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,a.K2)(m,"lex");for(var f,E,k,S,O,T,A,R,N,I={};;){if(k=s[s.length-1],this.defaultActions[k]?S=this.defaultActions[k]:(null==f&&(f=m()),S=c[k]&&c[k][f]),void 0===S||!S.length||!S[0]){var C="";for(T in N=[],c[k])this.terminals_[T]&&T>2&&N.push("'"+this.terminals_[T]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+N.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[f]||f,line:d.yylineno,loc:g,expected:N})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+f);switch(S[0]){case 1:s.push(f),n.push(d.yytext),r.push(d.yylloc),s.push(S[1]),f=null,E?(f=E,E=null):(h=d.yyleng,o=d.yytext,l=d.yylineno,g=d.yylloc,u>0&&u--);break;case 2:if(A=this.productions_[S[1]][1],I.$=n[n.length-A],I._$={first_line:r[r.length-(A||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(A||1)].first_column,last_column:r[r.length-1].last_column},b&&(I._$.range=[r[r.length-(A||1)].range[0],r[r.length-1].range[1]]),void 0!==(O=this.performAction.apply(I,[o,h,l,p.yy,S[1],n,r].concat(y))))return O;A&&(s=s.slice(0,-1*A*2),n=n.slice(0,-1*A),r=r.slice(0,-1*A)),s.push(this.productions_[S[1]][0]),n.push(I.$),r.push(I._$),R=c[s[s.length-2]][s[s.length-1]],s.push(R);break;case 3:return!0}}return!0},"parse")},W=function(){return{EOF:1,parseError:(0,a.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,a.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,a.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,a.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,a.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,a.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),24;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),26;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:case 23:case 28:case 35:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;case 18:case 19:case 38:return 49;case 20:case 37:return 42;case 21:return 15;case 22:case 36:return 13;case 24:return 59;case 25:case 26:return 56;case 27:return 60;case 29:return this.popState(),19;case 30:case 73:return e.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;case 34:return this.popState(),10;case 39:return this.begin("style"),37;case 40:return 43;case 41:case 45:case 46:case 59:return 63;case 42:case 43:case 44:case 52:case 54:case 61:return 65;case 47:case 48:case 49:case 50:case 51:case 53:case 60:return 64;case 55:case 56:case 57:case 58:return 66;case 62:return 67;case 63:case 66:case 67:case 68:return 68;case 64:case 65:return 69;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 74:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74],inclusive:!0}}}}();function X(){this.yy={}}return j.lexer=W,(0,a.K2)(X,"Parser"),X.prototype=j,j.Parser=X,new X}();h.parser=h;var u=h,y=class{constructor(){this.entities=new Map,this.relationships=[],this.classes=new Map,this.direction="TB",this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},this.setAccTitle=a.SV,this.getAccTitle=a.iN,this.setAccDescription=a.EI,this.getAccDescription=a.m7,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.getConfig=(0,a.K2)(()=>(0,a.D7)().er,"getConfig"),this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,a.K2)(this,"ErDB")}addEntity(t,e=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&e&&(this.entities.get(t).alias=e,a.Rm.info(`Add alias '${e}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:e,shape:"erBox",look:(0,a.D7)().look??"default",cssClasses:"default",cssStyles:[]}),a.Rm.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,e){const s=this.addEntity(t);let i;for(i=e.length-1;i>=0;i--)e[i].keys||(e[i].keys=[]),e[i].comment||(e[i].comment=""),s.attributes.push(e[i]),a.Rm.debug("Added attribute ",e[i].name)}addRelationship(t,e,s,i){const n=this.entities.get(t),r=this.entities.get(s);if(!n||!r)return;const c={entityA:n.id,roleA:e,entityB:r.id,relSpec:i};this.relationships.push(c),a.Rm.debug("Added new relationship :",c)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map(t=>t.trim())),t?.textStyles&&(e=[...e,...t.textStyles??[]].map(t=>t.trim()))}return e}addCssStyles(t,e){for(const s of t){const t=this.entities.get(s);if(!e||!t)return;for(const s of e)t.cssStyles.push(s)}}addClass(t,e){t.forEach(t=>{let s=this.classes.get(t);void 0===s&&(s={id:t,styles:[],textStyles:[]},this.classes.set(t,s)),e&&e.forEach(function(t){if(/color/.exec(t)){const e=t.replace("fill","bgFill");s.textStyles.push(e)}s.styles.push(t)})})}setClass(t,e){for(const s of t){const t=this.entities.get(s);if(t)for(const s of e)t.cssClasses+=" "+s}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],(0,a.IU)()}getData(){const t=[],e=[],s=(0,a.D7)();for(const n of this.entities.keys()){const e=this.entities.get(n);e&&(e.cssCompiledStyles=this.getCompiledStyles(e.cssClasses.split(" ")),t.push(e))}let i=0;for(const n of this.relationships){const t={id:(0,r.rY)(n.entityA,n.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:n.entityA,end:n.entityB,label:n.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:n.relSpec.cardB.toLowerCase(),arrowTypeEnd:n.relSpec.cardA.toLowerCase(),pattern:"IDENTIFYING"==n.relSpec.relType?"solid":"dashed",look:s.look};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:"TB"}}},d={};(0,a.VA)(d,{draw:()=>p});var p=(0,a.K2)(async function(t,e,s,o){a.Rm.info("REF0:"),a.Rm.info("Drawing er diagram (unified)",e);const{securityLevel:l,er:h,layout:u}=(0,a.D7)(),y=o.db.getData(),d=(0,i.A)(e,l);y.type=o.type,y.layoutAlgorithm=(0,n.q7)(u),y.config.flowchart.nodeSpacing=h?.nodeSpacing||140,y.config.flowchart.rankSpacing=h?.rankSpacing||80,y.direction=o.db.getDirection(),y.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],y.diagramId=e,await(0,n.XX)(y,d),"elk"===y.layoutAlgorithm&&d.select(".edges").lower();const p=d.selectAll('[id*="-background"]');Array.from(p).length>0&&p.each(function(){const t=(0,c.Ltv)(this),e=t.attr("id").replace("-background",""),s=d.select(`#${CSS.escape(e)}`);if(!s.empty()){const e=s.attr("transform");t.attr("transform",e)}});r._K.insertTitle(d,"erDiagramTitleText",h?.titleTopMargin??25,o.db.getDiagramTitle()),(0,i.P)(d,8,"erDiagram",h?.useMaxWidth??!0)},"draw"),_=(0,a.K2)((t,e)=>{const s=o.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return l.A(i,n,r,e)},"fade"),g=(0,a.K2)(t=>`\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .labelBkg {\n background-color: ${_(t.tertiaryColor,.5)};\n }\n\n .edgeLabel .label {\n fill: ${t.nodeBorder};\n font-size: 14px;\n }\n\n .label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .edge-pattern-dashed {\n stroke-dasharray: 8,8;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon\n {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n }\n\n .marker {\n fill: none !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n`,"getStyles"),b={parser:u,get db(){return new y},renderer:d,styles:g}},80124:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(46554),n=s(55385);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])},97576:(t,e,s)=>{s.d(e,{A:()=>r,P:()=>a});var i=s(27293),n=s(61274),r=(0,i.K2)((t,e)=>{let s;"sandbox"===e&&(s=(0,n.Ltv)("#i"+t));return("sandbox"===e?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${t}"]`)},"getDiagramElement"),a=(0,i.K2)((t,e,s,n)=>{t.attr("class",s);const{width:r,height:a,x:l,y:h}=c(t,e);(0,i.a$)(t,a,r,n);const u=o(l,h,r,a,e);t.attr("viewBox",u),i.Rm.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),c=(0,i.K2)((t,e)=>{const s=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*e,height:s.height+2*e,x:s.x,y:s.y}},"calculateDimensionsWithPadding"),o=(0,i.K2)((t,e,s,i,n)=>`${t-n} ${e-n} ${s} ${i}`,"createViewBox")}}]); \ No newline at end of file diff --git a/assets/js/6751.ad5458e5.js b/assets/js/6751.ad5458e5.js new file mode 100644 index 0000000000..f9d91f91e0 --- /dev/null +++ b/assets/js/6751.ad5458e5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6751],{7391:(t,e,a)=>{a.d(e,{CP:()=>c,HT:()=>d,PB:()=>h,aC:()=>o,lC:()=>s,m:()=>l,tk:()=>r});var n=a(27293),i=a(41407),r=(0,n.K2)((t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),e.name&&a.attr("name",e.name),e.rx&&a.attr("rx",e.rx),e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const n in e.attrs)a.attr(n,e.attrs[n]);return e.class&&a.attr("class",e.class),a},"drawRect"),s=(0,n.K2)((t,e)=>{const a={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};r(t,a).lower()},"drawBackgroundRect"),l=(0,n.K2)((t,e)=>{const a=e.text.replace(n.H1," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),e.class&&i.attr("class",e.class);const r=i.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(a),i},"drawText"),o=(0,n.K2)((t,e,a,n)=>{const r=t.append("image");r.attr("x",e),r.attr("y",a);const s=(0,i.J)(n);r.attr("xlink:href",s)},"drawImage"),c=(0,n.K2)((t,e,a,n)=>{const r=t.append("use");r.attr("x",e),r.attr("y",a);const s=(0,i.J)(n);r.attr("xlink:href",`#${s}`)},"drawEmbeddedImage"),h=(0,n.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),d=(0,n.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")},76751:(t,e,a)=>{a.d(e,{diagram:()=>Nt});var n=a(7391),i=a(47794),r=a(27293),s=a(61274),l=a(41407),o=function(){var t=(0,r.K2)(function(t,e,a,n){for(a=a||{},n=t.length;n--;a[t[n]]=e);return a},"o"),e=[1,24],a=[1,25],n=[1,26],i=[1,27],s=[1,28],l=[1,63],o=[1,64],h=[1,65],d=[1,66],u=[1,67],p=[1,68],y=[1,69],g=[1,29],f=[1,30],b=[1,31],x=[1,32],m=[1,33],_=[1,34],E=[1,35],S=[1,36],A=[1,37],C=[1,38],w=[1,39],k=[1,40],O=[1,41],T=[1,42],v=[1,43],R=[1,44],D=[1,45],N=[1,46],P=[1,47],B=[1,48],I=[1,50],M=[1,51],j=[1,52],K=[1,53],L=[1,54],Y=[1,55],U=[1,56],F=[1,57],X=[1,58],z=[1,59],W=[1,60],Q=[14,42],$=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],H=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],q=[1,82],V=[1,83],G=[1,84],J=[1,85],Z=[12,14,42],tt=[12,14,33,42],et=[12,14,33,42,76,77,79,80],at=[12,33],nt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],it={trace:(0,r.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:(0,r.K2)(function(t,e,a,n,i,r,s){var l=r.length-1;switch(i){case 3:n.setDirection("TB");break;case 4:n.setDirection("BT");break;case 5:n.setDirection("RL");break;case 6:n.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:n.setC4Type(r[l-3]);break;case 19:n.setTitle(r[l].substring(6)),this.$=r[l].substring(6);break;case 20:n.setAccDescription(r[l].substring(15)),this.$=r[l].substring(15);break;case 21:this.$=r[l].trim(),n.setTitle(this.$);break;case 22:case 23:this.$=r[l].trim(),n.setAccDescription(this.$);break;case 28:r[l].splice(2,0,"ENTERPRISE"),n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 29:r[l].splice(2,0,"SYSTEM"),n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 30:n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 31:r[l].splice(2,0,"CONTAINER"),n.addContainerBoundary(...r[l]),this.$=r[l];break;case 32:n.addDeploymentNode("node",...r[l]),this.$=r[l];break;case 33:n.addDeploymentNode("nodeL",...r[l]),this.$=r[l];break;case 34:n.addDeploymentNode("nodeR",...r[l]),this.$=r[l];break;case 35:n.popBoundaryParseStack();break;case 39:n.addPersonOrSystem("person",...r[l]),this.$=r[l];break;case 40:n.addPersonOrSystem("external_person",...r[l]),this.$=r[l];break;case 41:n.addPersonOrSystem("system",...r[l]),this.$=r[l];break;case 42:n.addPersonOrSystem("system_db",...r[l]),this.$=r[l];break;case 43:n.addPersonOrSystem("system_queue",...r[l]),this.$=r[l];break;case 44:n.addPersonOrSystem("external_system",...r[l]),this.$=r[l];break;case 45:n.addPersonOrSystem("external_system_db",...r[l]),this.$=r[l];break;case 46:n.addPersonOrSystem("external_system_queue",...r[l]),this.$=r[l];break;case 47:n.addContainer("container",...r[l]),this.$=r[l];break;case 48:n.addContainer("container_db",...r[l]),this.$=r[l];break;case 49:n.addContainer("container_queue",...r[l]),this.$=r[l];break;case 50:n.addContainer("external_container",...r[l]),this.$=r[l];break;case 51:n.addContainer("external_container_db",...r[l]),this.$=r[l];break;case 52:n.addContainer("external_container_queue",...r[l]),this.$=r[l];break;case 53:n.addComponent("component",...r[l]),this.$=r[l];break;case 54:n.addComponent("component_db",...r[l]),this.$=r[l];break;case 55:n.addComponent("component_queue",...r[l]),this.$=r[l];break;case 56:n.addComponent("external_component",...r[l]),this.$=r[l];break;case 57:n.addComponent("external_component_db",...r[l]),this.$=r[l];break;case 58:n.addComponent("external_component_queue",...r[l]),this.$=r[l];break;case 60:n.addRel("rel",...r[l]),this.$=r[l];break;case 61:n.addRel("birel",...r[l]),this.$=r[l];break;case 62:n.addRel("rel_u",...r[l]),this.$=r[l];break;case 63:n.addRel("rel_d",...r[l]),this.$=r[l];break;case 64:n.addRel("rel_l",...r[l]),this.$=r[l];break;case 65:n.addRel("rel_r",...r[l]),this.$=r[l];break;case 66:n.addRel("rel_b",...r[l]),this.$=r[l];break;case 67:r[l].splice(0,1),n.addRel("rel",...r[l]),this.$=r[l];break;case 68:n.updateElStyle("update_el_style",...r[l]),this.$=r[l];break;case 69:n.updateRelStyle("update_rel_style",...r[l]),this.$=r[l];break;case 70:n.updateLayoutConfig("update_layout_config",...r[l]),this.$=r[l];break;case 71:this.$=[r[l]];break;case 72:r[l].unshift(r[l-1]),this.$=r[l];break;case 73:case 75:this.$=r[l].trim();break;case 74:let t={};t[r[l-1].trim()]=r[l].trim(),this.$=t;break;case 76:this.$=""}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:m,49:_,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:70,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:m,49:_,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:71,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:m,49:_,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:72,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:m,49:_,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:73,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:m,49:_,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{14:[1,74]},t(Q,[2,13],{43:23,29:49,30:61,32:62,20:75,34:l,36:o,37:h,38:d,39:u,40:p,41:y,44:g,45:f,46:b,47:x,48:m,49:_,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W}),t(Q,[2,14]),t($,[2,16],{12:[1,76]}),t(Q,[2,36],{12:[1,77]}),t(H,[2,19]),t(H,[2,20]),{25:[1,78]},{27:[1,79]},t(H,[2,23]),{35:80,75:81,76:q,77:V,79:G,80:J},{35:86,75:81,76:q,77:V,79:G,80:J},{35:87,75:81,76:q,77:V,79:G,80:J},{35:88,75:81,76:q,77:V,79:G,80:J},{35:89,75:81,76:q,77:V,79:G,80:J},{35:90,75:81,76:q,77:V,79:G,80:J},{35:91,75:81,76:q,77:V,79:G,80:J},{35:92,75:81,76:q,77:V,79:G,80:J},{35:93,75:81,76:q,77:V,79:G,80:J},{35:94,75:81,76:q,77:V,79:G,80:J},{35:95,75:81,76:q,77:V,79:G,80:J},{35:96,75:81,76:q,77:V,79:G,80:J},{35:97,75:81,76:q,77:V,79:G,80:J},{35:98,75:81,76:q,77:V,79:G,80:J},{35:99,75:81,76:q,77:V,79:G,80:J},{35:100,75:81,76:q,77:V,79:G,80:J},{35:101,75:81,76:q,77:V,79:G,80:J},{35:102,75:81,76:q,77:V,79:G,80:J},{35:103,75:81,76:q,77:V,79:G,80:J},{35:104,75:81,76:q,77:V,79:G,80:J},t(Z,[2,59]),{35:105,75:81,76:q,77:V,79:G,80:J},{35:106,75:81,76:q,77:V,79:G,80:J},{35:107,75:81,76:q,77:V,79:G,80:J},{35:108,75:81,76:q,77:V,79:G,80:J},{35:109,75:81,76:q,77:V,79:G,80:J},{35:110,75:81,76:q,77:V,79:G,80:J},{35:111,75:81,76:q,77:V,79:G,80:J},{35:112,75:81,76:q,77:V,79:G,80:J},{35:113,75:81,76:q,77:V,79:G,80:J},{35:114,75:81,76:q,77:V,79:G,80:J},{35:115,75:81,76:q,77:V,79:G,80:J},{20:116,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:m,49:_,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{12:[1,118],33:[1,117]},{35:119,75:81,76:q,77:V,79:G,80:J},{35:120,75:81,76:q,77:V,79:G,80:J},{35:121,75:81,76:q,77:V,79:G,80:J},{35:122,75:81,76:q,77:V,79:G,80:J},{35:123,75:81,76:q,77:V,79:G,80:J},{35:124,75:81,76:q,77:V,79:G,80:J},{35:125,75:81,76:q,77:V,79:G,80:J},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(Q,[2,15]),t($,[2,17],{21:22,19:130,22:e,23:a,24:n,26:i,28:s}),t(Q,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:a,24:n,26:i,28:s,34:l,36:o,37:h,38:d,39:u,40:p,41:y,44:g,45:f,46:b,47:x,48:m,49:_,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W}),t(H,[2,21]),t(H,[2,22]),t(Z,[2,39]),t(tt,[2,71],{75:81,35:132,76:q,77:V,79:G,80:J}),t(et,[2,73]),{78:[1,133]},t(et,[2,75]),t(et,[2,76]),t(Z,[2,40]),t(Z,[2,41]),t(Z,[2,42]),t(Z,[2,43]),t(Z,[2,44]),t(Z,[2,45]),t(Z,[2,46]),t(Z,[2,47]),t(Z,[2,48]),t(Z,[2,49]),t(Z,[2,50]),t(Z,[2,51]),t(Z,[2,52]),t(Z,[2,53]),t(Z,[2,54]),t(Z,[2,55]),t(Z,[2,56]),t(Z,[2,57]),t(Z,[2,58]),t(Z,[2,60]),t(Z,[2,61]),t(Z,[2,62]),t(Z,[2,63]),t(Z,[2,64]),t(Z,[2,65]),t(Z,[2,66]),t(Z,[2,67]),t(Z,[2,68]),t(Z,[2,69]),t(Z,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(at,[2,28]),t(at,[2,29]),t(at,[2,30]),t(at,[2,31]),t(at,[2,32]),t(at,[2,33]),t(at,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t($,[2,18]),t(Q,[2,38]),t(tt,[2,72]),t(et,[2,74]),t(Z,[2,24]),t(Z,[2,35]),t(nt,[2,25]),t(nt,[2,26],{12:[1,138]}),t(nt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:(0,r.K2)(function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)},"parseError"),parse:(0,r.K2)(function(t){var e=this,a=[0],n=[],i=[null],s=[],l=this.table,o="",c=0,h=0,d=0,u=s.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var f=p.yylloc;s.push(f);var b=p.options&&p.options.ranges;function x(){var t;return"number"!=typeof(t=n.pop()||p.lex()||1)&&(t instanceof Array&&(t=(n=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,r.K2)(function(t){a.length=a.length-2*t,i.length=i.length-t,s.length=s.length-t},"popStack"),(0,r.K2)(x,"lex");for(var m,_,E,S,A,C,w,k,O,T={};;){if(E=a[a.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==m&&(m=x()),S=l[E]&&l[E][m]),void 0===S||!S.length||!S[0]){var v="";for(C in O=[],l[E])this.terminals_[C]&&C>2&&O.push("'"+this.terminals_[C]+"'");v=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+O.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(v,{text:p.match,token:this.terminals_[m]||m,line:p.yylineno,loc:f,expected:O})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+m);switch(S[0]){case 1:a.push(m),i.push(p.yytext),s.push(p.yylloc),a.push(S[1]),m=null,_?(m=_,_=null):(h=p.yyleng,o=p.yytext,c=p.yylineno,f=p.yylloc,d>0&&d--);break;case 2:if(w=this.productions_[S[1]][1],T.$=i[i.length-w],T._$={first_line:s[s.length-(w||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(w||1)].first_column,last_column:s[s.length-1].last_column},b&&(T._$.range=[s[s.length-(w||1)].range[0],s[s.length-1].range[1]]),void 0!==(A=this.performAction.apply(T,[o,h,c,y.yy,S[1],i,s].concat(u))))return A;w&&(a=a.slice(0,-1*w*2),i=i.slice(0,-1*w),s=s.slice(0,-1*w)),a.push(this.productions_[S[1]][0]),i.push(T.$),s.push(T._$),k=l[a[a.length-2]][a[a.length-1]],a.push(k);break;case 3:return!0}}return!0},"parse")},rt=function(){return{EOF:1,parseError:(0,r.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,r.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,r.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,r.K2)(function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===n.length?this.yylloc.first_column:0)+n[n.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,r.K2)(function(){return this._more=!0,this},"more"),reject:(0,r.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,r.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,r.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,r.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,r.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,r.K2)(function(t,e){var a,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var r in i)this[r]=i[r];return!1}return!1},"test_match"),next:(0,r.K2)(function(){if(this.done)return this.EOF;var t,e,a,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),r=0;r<i.length;r++)if((a=this._input.match(this.rules[i[r]]))&&(!e||a[0].length>e[0].length)){if(e=a,n=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,i[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,r.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,r.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,r.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,r.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,r.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,r.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,r.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,r.K2)(function(t,e,a,n){switch(a){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 73:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 16:case 70:break;case 14:c;break;case 15:return 12;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:case 53:return this.begin("rel_u"),66;case 54:case 55:return this.begin("rel_d"),67;case 56:case 57:return this.begin("rel_l"),68;case 58:case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68:case 79:this.popState(),this.popState();break;case 69:case 71:return 80;case 72:this.begin("string");break;case 74:case 80:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}}}();function st(){this.yy={}}return it.lexer=rt,(0,r.K2)(st,"Parser"),st.prototype=it,it.Parser=st,new st}();o.parser=o;var h,d=o,u=[],p=[""],y="global",g="",f=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],b=[],x="",m=!1,_=4,E=2,S=(0,r.K2)(function(){return h},"getC4Type"),A=(0,r.K2)(function(t){let e=(0,r.jZ)(t,(0,r.D7)());h=e},"setC4Type"),C=(0,r.K2)(function(t,e,a,n,i,r,s,l,o){if(null==t||null==e||null==a||null==n)return;let c={};const h=b.find(t=>t.from===e&&t.to===a);if(h?c=h:b.push(c),c.type=t,c.from=e,c.to=a,c.label={text:n},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.sprite=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];c[t]=e}else c.tags=l;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.link=o;c.wrap=$()},"addRel"),w=(0,r.K2)(function(t,e,a,n,i,r,s){if(null===e||null===a)return;let l={};const o=u.find(t=>t.alias===e);if(o&&e===o.alias?l=o:(l.alias=e,u.push(l)),l.label=null==a?{text:""}:{text:a},null==n)l.descr={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];l[t]={text:e}}else l.descr={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.sprite=i;if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=e}else l.tags=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=y,l.wrap=$()},"addPersonOrSystem"),k=(0,r.K2)(function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=u.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,u.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.techn={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.techn={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.sprite=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=$(),o.typeC4Shape={text:t},o.parentBoundary=y},"addContainer"),O=(0,r.K2)(function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=u.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,u.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.techn={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.techn={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.sprite=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=$(),o.typeC4Shape={text:t},o.parentBoundary=y},"addComponent"),T=(0,r.K2)(function(t,e,a,n,i){if(null===t||null===e)return;let r={};const s=f.find(e=>e.alias===t);if(s&&t===s.alias?r=s:(r.alias=t,f.push(r)),r.label=null==e?{text:""}:{text:e},null==a)r.type={text:"system"};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];r[t]={text:e}}else r.type={text:a};if("object"==typeof n){let[t,e]=Object.entries(n)[0];r[t]=e}else r.tags=n;if("object"==typeof i){let[t,e]=Object.entries(i)[0];r[t]=e}else r.link=i;r.parentBoundary=y,r.wrap=$(),g=y,y=t,p.push(g)},"addPersonOrSystemBoundary"),v=(0,r.K2)(function(t,e,a,n,i){if(null===t||null===e)return;let r={};const s=f.find(e=>e.alias===t);if(s&&t===s.alias?r=s:(r.alias=t,f.push(r)),r.label=null==e?{text:""}:{text:e},null==a)r.type={text:"container"};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];r[t]={text:e}}else r.type={text:a};if("object"==typeof n){let[t,e]=Object.entries(n)[0];r[t]=e}else r.tags=n;if("object"==typeof i){let[t,e]=Object.entries(i)[0];r[t]=e}else r.link=i;r.parentBoundary=y,r.wrap=$(),g=y,y=t,p.push(g)},"addContainerBoundary"),R=(0,r.K2)(function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=f.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,f.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.type={text:"node"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.type={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.nodeType=t,o.parentBoundary=y,o.wrap=$(),g=y,y=e,p.push(g)},"addDeploymentNode"),D=(0,r.K2)(function(){y=g,p.pop(),g=p.pop(),p.push(g)},"popBoundaryParseStack"),N=(0,r.K2)(function(t,e,a,n,i,r,s,l,o,c,h){let d=u.find(t=>t.alias===e);if(void 0!==d||(d=f.find(t=>t.alias===e),void 0!==d)){if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];d[t]=e}else d.bgColor=a;if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];d[t]=e}else d.fontColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];d[t]=e}else d.borderColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];d[t]=e}else d.shadowing=r;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];d[t]=e}else d.shape=s;if(null!=l)if("object"==typeof l){let[t,e]=Object.entries(l)[0];d[t]=e}else d.sprite=l;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];d[t]=e}else d.techn=o;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];d[t]=e}else d.legendText=c;if(null!=h)if("object"==typeof h){let[t,e]=Object.entries(h)[0];d[t]=e}else d.legendSprite=h}},"updateElStyle"),P=(0,r.K2)(function(t,e,a,n,i,r,s){const l=b.find(t=>t.from===e&&t.to===a);if(void 0!==l){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];l[t]=e}else l.textColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.lineColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=parseInt(e)}else l.offsetX=parseInt(r);if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=parseInt(e)}else l.offsetY=parseInt(s)}},"updateRelStyle"),B=(0,r.K2)(function(t,e,a){let n=_,i=E;if("object"==typeof e){const t=Object.values(e)[0];n=parseInt(t)}else n=parseInt(e);if("object"==typeof a){const t=Object.values(a)[0];i=parseInt(t)}else i=parseInt(a);n>=1&&(_=n),i>=1&&(E=i)},"updateLayoutConfig"),I=(0,r.K2)(function(){return _},"getC4ShapeInRow"),M=(0,r.K2)(function(){return E},"getC4BoundaryInRow"),j=(0,r.K2)(function(){return y},"getCurrentBoundaryParse"),K=(0,r.K2)(function(){return g},"getParentBoundaryParse"),L=(0,r.K2)(function(t){return null==t?u:u.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),Y=(0,r.K2)(function(t){return u.find(e=>e.alias===t)},"getC4Shape"),U=(0,r.K2)(function(t){return Object.keys(L(t))},"getC4ShapeKeys"),F=(0,r.K2)(function(t){return null==t?f:f.filter(e=>e.parentBoundary===t)},"getBoundaries"),X=F,z=(0,r.K2)(function(){return b},"getRels"),W=(0,r.K2)(function(){return x},"getTitle"),Q=(0,r.K2)(function(t){m=t},"setWrap"),$=(0,r.K2)(function(){return m},"autoWrap"),H=(0,r.K2)(function(){u=[],f=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],g="",y="global",p=[""],b=[],p=[""],x="",m=!1,_=4,E=2},"clear"),q=(0,r.K2)(function(t){let e=(0,r.jZ)(t,(0,r.D7)());x=e},"setTitle"),V={addPersonOrSystem:w,addPersonOrSystemBoundary:T,addContainer:k,addContainerBoundary:v,addComponent:O,addDeploymentNode:R,popBoundaryParseStack:D,addRel:C,updateElStyle:N,updateRelStyle:P,updateLayoutConfig:B,autoWrap:$,setWrap:Q,getC4ShapeArray:L,getC4Shape:Y,getC4ShapeKeys:U,getBoundaries:F,getBoundarys:X,getCurrentBoundaryParse:j,getParentBoundaryParse:K,getRels:z,getTitle:W,getC4Type:S,getC4ShapeInRow:I,getC4BoundaryInRow:M,setAccTitle:r.SV,getAccTitle:r.iN,getAccDescription:r.m7,setAccDescription:r.EI,getConfig:(0,r.K2)(()=>(0,r.D7)().c4,"getConfig"),clear:H,LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:q,setC4Type:A},G=(0,r.K2)(function(t,e){return(0,n.tk)(t,e)},"drawRect"),J=(0,r.K2)(function(t,e,a,n,i,r){const s=t.append("image");s.attr("width",e),s.attr("height",a),s.attr("x",n),s.attr("y",i);let o=r.startsWith("data:image/png;base64")?r:(0,l.J)(r);s.attr("xlink:href",o)},"drawImage"),Z=(0,r.K2)((t,e,a)=>{const n=t.append("g");let i=0;for(let r of e){let t=r.textColor?r.textColor:"#444444",e=r.lineColor?r.lineColor:"#444444",s=r.offsetX?parseInt(r.offsetX):0,l=r.offsetY?parseInt(r.offsetY):0,o="";if(0===i){let t=n.append("line");t.attr("x1",r.startPoint.x),t.attr("y1",r.startPoint.y),t.attr("x2",r.endPoint.x),t.attr("y2",r.endPoint.y),t.attr("stroke-width","1"),t.attr("stroke",e),t.style("fill","none"),"rel_b"!==r.type&&t.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+o+"#arrowend)"),i=-1}else{let t=n.append("path");t.attr("fill","none").attr("stroke-width","1").attr("stroke",e).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",r.startPoint.x).replaceAll("starty",r.startPoint.y).replaceAll("controlx",r.startPoint.x+(r.endPoint.x-r.startPoint.x)/2-(r.endPoint.x-r.startPoint.x)/4).replaceAll("controly",r.startPoint.y+(r.endPoint.y-r.startPoint.y)/2).replaceAll("stopx",r.endPoint.x).replaceAll("stopy",r.endPoint.y)),"rel_b"!==r.type&&t.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+o+"#arrowend)")}let c=a.messageFont();dt(a)(r.label.text,n,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+s,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+l,r.label.width,r.label.height,{fill:t},c),r.techn&&""!==r.techn.text&&(c=a.messageFont(),dt(a)("["+r.techn.text+"]",n,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+s,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+a.messageFontSize+5+l,Math.max(r.label.width,r.techn.width),r.techn.height,{fill:t,"font-style":"italic"},c))}},"drawRels"),tt=(0,r.K2)(function(t,e,a){const n=t.append("g");let i=e.bgColor?e.bgColor:"none",r=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let o={x:e.x,y:e.y,fill:i,stroke:r,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};G(n,o);let c=a.boundaryFont();c.fontWeight="bold",c.fontSize=c.fontSize+2,c.fontColor=s,dt(a)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},c),e.type&&""!==e.type.text&&(c=a.boundaryFont(),c.fontColor=s,dt(a)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},c)),e.descr&&""!==e.descr.text&&(c=a.boundaryFont(),c.fontSize=c.fontSize-2,c.fontColor=s,dt(a)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},c))},"drawBoundary"),et=(0,r.K2)(function(t,e,a){let i=e.bgColor?e.bgColor:a[e.typeC4Shape.text+"_bg_color"],r=e.borderColor?e.borderColor:a[e.typeC4Shape.text+"_border_color"],s=e.fontColor?e.fontColor:"#FFFFFF",l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII="}const o=t.append("g");o.attr("class","person-man");const c=(0,n.PB)();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":c.x=e.x,c.y=e.y,c.fill=i,c.width=e.width,c.height=e.height,c.stroke=r,c.rx=2.5,c.ry=2.5,c.attrs={"stroke-width":.5},G(o,c);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2))}let h=ht(a,e.typeC4Shape.text);switch(o.append("text").attr("fill",s).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":J(o,48,48,e.x+e.width/2-24,e.y+e.image.Y,l)}let d=a[e.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=s,dt(a)(e.label.text,o,e.x,e.y+e.label.Y,e.width,e.height,{fill:s},d),d=a[e.typeC4Shape.text+"Font"](),d.fontColor=s,e.techn&&""!==e.techn?.text?dt(a)(e.techn.text,o,e.x,e.y+e.techn.Y,e.width,e.height,{fill:s,"font-style":"italic"},d):e.type&&""!==e.type.text&&dt(a)(e.type.text,o,e.x,e.y+e.type.Y,e.width,e.height,{fill:s,"font-style":"italic"},d),e.descr&&""!==e.descr.text&&(d=a.personFont(),d.fontColor=s,dt(a)(e.descr.text,o,e.x,e.y+e.descr.Y,e.width,e.height,{fill:s},d)),e.height},"drawC4Shape"),at=(0,r.K2)(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),nt=(0,r.K2)(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),it=(0,r.K2)(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),rt=(0,r.K2)(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),st=(0,r.K2)(function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),lt=(0,r.K2)(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),ot=(0,r.K2)(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),ct=(0,r.K2)(function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),ht=(0,r.K2)((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),dt=function(){function t(t,e,a,i,r,s,l){n(e.append("text").attr("x",a+r/2).attr("y",i+s/2+5).style("text-anchor","middle").text(t),l)}function e(t,e,a,i,s,l,o,c){const{fontSize:h,fontFamily:d,fontWeight:u}=c,p=t.split(r.Y2.lineBreakRegex);for(let r=0;r<p.length;r++){const t=r*h-h*(p.length-1)/2,l=e.append("text").attr("x",a+s/2).attr("y",i).style("text-anchor","middle").attr("dominant-baseline","middle").style("font-size",h).style("font-weight",u).style("font-family",d);l.append("tspan").attr("dy",t).text(p[r]).attr("alignment-baseline","mathematical"),n(l,o)}}function a(t,a,i,r,s,l,o,c){const h=a.append("switch"),d=h.append("foreignObject").attr("x",i).attr("y",r).attr("width",s).attr("height",l).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");d.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,h,i,r,s,0,o,c),n(d,o)}function n(t,e){for(const a in e)e.hasOwnProperty(a)&&t.attr(a,e[a])}return(0,r.K2)(t,"byText"),(0,r.K2)(e,"byTspan"),(0,r.K2)(a,"byFo"),(0,r.K2)(n,"_setTextAttrs"),function(n){return"fo"===n.textPlacement?a:"old"===n.textPlacement?t:e}}(),ut={drawRect:G,drawBoundary:tt,drawC4Shape:et,drawRels:Z,drawImage:J,insertArrowHead:rt,insertArrowEnd:st,insertArrowFilledHead:lt,insertDynamicNumber:ot,insertArrowCrossHead:ct,insertDatabaseIcon:at,insertComputerIcon:nt,insertClockIcon:it},pt=0,yt=0,gt=4,ft=2;o.yy=V;var bt={},xt=class{static{(0,r.K2)(this,"Bounds")}constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,mt(t.db.getConfig())}setData(t,e,a,n){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=e,this.nextData.starty=this.data.starty=a,this.nextData.stopy=this.data.stopy=n}updateVal(t,e,a,n){void 0===t[e]?t[e]=a:t[e]=n(a,t[e])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let e=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+2*t.margin,a=e+t.width,n=this.nextData.starty+2*t.margin,i=n+t.height;(e>=this.data.widthLimit||a>=this.data.widthLimit||this.nextData.cnt>gt)&&(e=this.nextData.startx+t.margin+bt.nextLinePaddingX,n=this.nextData.stopy+2*t.margin,this.nextData.stopx=a=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=n+t.height,this.nextData.cnt=1),t.x=e,t.y=n,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",n,Math.min),this.updateVal(this.data,"stopx",a,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",n,Math.min),this.updateVal(this.nextData,"stopx",a,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},mt(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},mt=(0,r.K2)(function(t){(0,r.hH)(bt,t),t.fontFamily&&(bt.personFontFamily=bt.systemFontFamily=bt.messageFontFamily=t.fontFamily),t.fontSize&&(bt.personFontSize=bt.systemFontSize=bt.messageFontSize=t.fontSize),t.fontWeight&&(bt.personFontWeight=bt.systemFontWeight=bt.messageFontWeight=t.fontWeight)},"setConf"),_t=(0,r.K2)((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),Et=(0,r.K2)(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),St=(0,r.K2)(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");function At(t,e,a,n,s){if(!e[t].width)if(a)e[t].text=(0,i.bH)(e[t].text,s,n),e[t].textLines=e[t].text.split(r.Y2.lineBreakRegex).length,e[t].width=s,e[t].height=(0,i.ru)(e[t].text,n);else{let a=e[t].text.split(r.Y2.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(const r of a)e[t].width=Math.max((0,i.Un)(r,n),e[t].width),s=(0,i.ru)(r,n),e[t].height=e[t].height+s}}(0,r.K2)(At,"calcC4ShapeTextWH");var Ct=(0,r.K2)(function(t,e,a){e.x=a.data.startx,e.y=a.data.starty,e.width=a.data.stopx-a.data.startx,e.height=a.data.stopy-a.data.starty,e.label.y=bt.c4ShapeMargin-35;let n=e.wrap&&bt.wrap,r=Et(bt);r.fontSize=r.fontSize+2,r.fontWeight="bold",At("label",e,n,r,(0,i.Un)(e.label.text,r)),ut.drawBoundary(t,e,bt)},"drawBoundary"),wt=(0,r.K2)(function(t,e,a,n){let r=0;for(const s of n){r=0;const n=a[s];let l=_t(bt,n.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,n.typeC4Shape.width=(0,i.Un)("\xab"+n.typeC4Shape.text+"\xbb",l),n.typeC4Shape.height=l.fontSize+2,n.typeC4Shape.Y=bt.c4ShapePadding,r=n.typeC4Shape.Y+n.typeC4Shape.height-4,n.image={width:0,height:0,Y:0},n.typeC4Shape.text){case"person":case"external_person":n.image.width=48,n.image.height=48,n.image.Y=r,r=n.image.Y+n.image.height}n.sprite&&(n.image.width=48,n.image.height=48,n.image.Y=r,r=n.image.Y+n.image.height);let o=n.wrap&&bt.wrap,c=bt.width-2*bt.c4ShapePadding,h=_t(bt,n.typeC4Shape.text);if(h.fontSize=h.fontSize+2,h.fontWeight="bold",At("label",n,o,h,c),n.label.Y=r+8,r=n.label.Y+n.label.height,n.type&&""!==n.type.text){n.type.text="["+n.type.text+"]",At("type",n,o,_t(bt,n.typeC4Shape.text),c),n.type.Y=r+5,r=n.type.Y+n.type.height}else if(n.techn&&""!==n.techn.text){n.techn.text="["+n.techn.text+"]",At("techn",n,o,_t(bt,n.techn.text),c),n.techn.Y=r+5,r=n.techn.Y+n.techn.height}let d=r,u=n.label.width;if(n.descr&&""!==n.descr.text){At("descr",n,o,_t(bt,n.typeC4Shape.text),c),n.descr.Y=r+20,r=n.descr.Y+n.descr.height,u=Math.max(n.label.width,n.descr.width),d=r-5*n.descr.textLines}u+=bt.c4ShapePadding,n.width=Math.max(n.width||bt.width,u,bt.width),n.height=Math.max(n.height||bt.height,d,bt.height),n.margin=n.margin||bt.c4ShapeMargin,t.insert(n),ut.drawC4Shape(e,n,bt)}t.bumpLastMargin(bt.c4ShapeMargin)},"drawC4ShapeArray"),kt=class{static{(0,r.K2)(this,"Point")}constructor(t,e){this.x=t,this.y=e}},Ot=(0,r.K2)(function(t,e){let a=t.x,n=t.y,i=e.x,r=e.y,s=a+t.width/2,l=n+t.height/2,o=Math.abs(a-i),c=Math.abs(n-r),h=c/o,d=t.height/t.width,u=null;return n==r&&a<i?u=new kt(a+t.width,l):n==r&&a>i?u=new kt(a,l):a==i&&n<r?u=new kt(s,n+t.height):a==i&&n>r&&(u=new kt(s,n)),a>i&&n<r?u=d>=h?new kt(a,l+h*t.width/2):new kt(s-o/c*t.height/2,n+t.height):a<i&&n<r?u=d>=h?new kt(a+t.width,l+h*t.width/2):new kt(s+o/c*t.height/2,n+t.height):a<i&&n>r?u=d>=h?new kt(a+t.width,l-h*t.width/2):new kt(s+t.height/2*o/c,n):a>i&&n>r&&(u=d>=h?new kt(a,l-t.width/2*h):new kt(s-t.height/2*o/c,n)),u},"getIntersectPoint"),Tt=(0,r.K2)(function(t,e){let a={x:0,y:0};a.x=e.x+e.width/2,a.y=e.y+e.height/2;let n=Ot(t,a);return a.x=t.x+t.width/2,a.y=t.y+t.height/2,{startPoint:n,endPoint:Ot(e,a)}},"getIntersectPoints"),vt=(0,r.K2)(function(t,e,a,n){let r=0;for(let s of e){r+=1;let t=s.wrap&&bt.wrap,e=St(bt);"C4Dynamic"===n.db.getC4Type()&&(s.label.text=r+": "+s.label.text);let l=(0,i.Un)(s.label.text,e);At("label",s,t,e,l),s.techn&&""!==s.techn.text&&(l=(0,i.Un)(s.techn.text,e),At("techn",s,t,e,l)),s.descr&&""!==s.descr.text&&(l=(0,i.Un)(s.descr.text,e),At("descr",s,t,e,l));let o=a(s.from),c=a(s.to),h=Tt(o,c);s.startPoint=h.startPoint,s.endPoint=h.endPoint}ut.drawRels(t,e,bt)},"drawRels");function Rt(t,e,a,n,i){let r=new xt(i);r.data.widthLimit=a.data.widthLimit/Math.min(ft,n.length);for(let[s,l]of n.entries()){let n=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=n,n=l.image.Y+l.image.height);let o=l.wrap&&bt.wrap,c=Et(bt);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",At("label",l,o,c,r.data.widthLimit),l.label.Y=n+8,n=l.label.Y+l.label.height,l.type&&""!==l.type.text){l.type.text="["+l.type.text+"]",At("type",l,o,Et(bt),r.data.widthLimit),l.type.Y=n+5,n=l.type.Y+l.type.height}if(l.descr&&""!==l.descr.text){let t=Et(bt);t.fontSize=t.fontSize-2,At("descr",l,o,t,r.data.widthLimit),l.descr.Y=n+20,n=l.descr.Y+l.descr.height}if(0==s||s%ft===0){let t=a.data.startx+bt.diagramMarginX,e=a.data.stopy+bt.diagramMarginY+n;r.setData(t,t,e,e)}else{let t=r.data.stopx!==r.data.startx?r.data.stopx+bt.diagramMarginX:r.data.startx,e=r.data.starty;r.setData(t,t,e,e)}r.name=l.alias;let h=i.db.getC4ShapeArray(l.alias),d=i.db.getC4ShapeKeys(l.alias);d.length>0&&wt(r,t,h,d),e=l.alias;let u=i.db.getBoundaries(e);u.length>0&&Rt(t,e,r,u,i),"global"!==l.alias&&Ct(t,l,r),a.data.stopy=Math.max(r.data.stopy+bt.c4ShapeMargin,a.data.stopy),a.data.stopx=Math.max(r.data.stopx+bt.c4ShapeMargin,a.data.stopx),pt=Math.max(pt,a.data.stopx),yt=Math.max(yt,a.data.stopy)}}(0,r.K2)(Rt,"drawInsideBoundary");var Dt={drawPersonOrSystemArray:wt,drawBoundary:Ct,setConf:mt,draw:(0,r.K2)(function(t,e,a,n){bt=(0,r.D7)().c4;const i=(0,r.D7)().securityLevel;let l;"sandbox"===i&&(l=(0,s.Ltv)("#i"+e));const o="sandbox"===i?(0,s.Ltv)(l.nodes()[0].contentDocument.body):(0,s.Ltv)("body");let c=n.db;n.db.setWrap(bt.wrap),gt=c.getC4ShapeInRow(),ft=c.getC4BoundaryInRow(),r.Rm.debug(`C:${JSON.stringify(bt,null,2)}`);const h="sandbox"===i?o.select(`[id="${e}"]`):(0,s.Ltv)(`[id="${e}"]`);ut.insertComputerIcon(h),ut.insertDatabaseIcon(h),ut.insertClockIcon(h);let d=new xt(n);d.setData(bt.diagramMarginX,bt.diagramMarginX,bt.diagramMarginY,bt.diagramMarginY),d.data.widthLimit=screen.availWidth,pt=bt.diagramMarginX,yt=bt.diagramMarginY;const u=n.db.getTitle();Rt(h,"",d,n.db.getBoundaries(""),n),ut.insertArrowHead(h),ut.insertArrowEnd(h),ut.insertArrowCrossHead(h),ut.insertArrowFilledHead(h),vt(h,n.db.getRels(),n.db.getC4Shape,n),d.data.stopx=pt,d.data.stopy=yt;const p=d.data;let y=p.stopy-p.starty+2*bt.diagramMarginY;const g=p.stopx-p.startx+2*bt.diagramMarginX;u&&h.append("text").text(u).attr("x",(p.stopx-p.startx)/2-4*bt.diagramMarginX).attr("y",p.starty+bt.diagramMarginY),(0,r.a$)(h,y,g,bt.useMaxWidth);const f=u?60:0;h.attr("viewBox",p.startx-bt.diagramMarginX+" -"+(bt.diagramMarginY+f)+" "+g+" "+(y+f)),r.Rm.debug("models:",p)},"draw")},Nt={parser:d,db:V,renderer:Dt,styles:(0,r.K2)(t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,"getStyles"),init:(0,r.K2)(({c4:t,wrap:e})=>{Dt.setConf(t),V.setWrap(e)},"init")}}}]); \ No newline at end of file diff --git a/assets/js/686.7b631913.js b/assets/js/686.7b631913.js new file mode 100644 index 0000000000..93c353db56 --- /dev/null +++ b/assets/js/686.7b631913.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[686],{7391:(t,e,n)=>{n.d(e,{CP:()=>c,HT:()=>u,PB:()=>h,aC:()=>l,lC:()=>a,m:()=>o,tk:()=>r});var i=n(27293),s=n(41407),r=(0,i.K2)((t,e)=>{const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),e.name&&n.attr("name",e.name),e.rx&&n.attr("rx",e.rx),e.ry&&n.attr("ry",e.ry),void 0!==e.attrs)for(const i in e.attrs)n.attr(i,e.attrs[i]);return e.class&&n.attr("class",e.class),n},"drawRect"),a=(0,i.K2)((t,e)=>{const n={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};r(t,n).lower()},"drawBackgroundRect"),o=(0,i.K2)((t,e)=>{const n=e.text.replace(i.H1," "),s=t.append("text");s.attr("x",e.x),s.attr("y",e.y),s.attr("class","legend"),s.style("text-anchor",e.anchor),e.class&&s.attr("class",e.class);const r=s.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(n),s},"drawText"),l=(0,i.K2)((t,e,n,i)=>{const r=t.append("image");r.attr("x",e),r.attr("y",n);const a=(0,s.J)(i);r.attr("xlink:href",a)},"drawImage"),c=(0,i.K2)((t,e,n,i)=>{const r=t.append("use");r.attr("x",e),r.attr("y",n);const a=(0,s.J)(i);r.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),h=(0,i.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),u=(0,i.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")},10686:(t,e,n)=>{n.d(e,{diagram:()=>J});var i=n(7391),s=n(53776),r=n(27293),a=n(61274),o=function(){var t=(0,r.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,11,12,14,16,17,18],n=[1,9],i=[1,10],s=[1,11],a=[1,12],o=[1,13],l=[1,14],c={trace:(0,r.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:(0,r.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 9:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 10:case 11:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 12:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 13:i.addTask(r[o-1],r[o]),this.$="task"}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:s,16:a,17:o,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:n,12:i,14:s,16:a,17:o,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:(0,r.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,r.K2)(function(t){var e=this,n=[0],i=[],s=[null],a=[],o=this.table,l="",c=0,h=0,u=0,y=a.slice.call(arguments,1),p=Object.create(this.lexer),d={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(d.yy[f]=this.yy[f]);p.setInput(t,d.yy),d.yy.lexer=p,d.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var g=p.yylloc;a.push(g);var x=p.options&&p.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,r.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,a.length=a.length-t},"popStack"),(0,r.K2)(m,"lex");for(var k,b,_,w,v,K,$,T,M,S={};;){if(_=n[n.length-1],this.defaultActions[_]?w=this.defaultActions[_]:(null==k&&(k=m()),w=o[_]&&o[_][k]),void 0===w||!w.length||!w[0]){var C="";for(K in M=[],o[_])this.terminals_[K]&&K>2&&M.push("'"+this.terminals_[K]+"'");C=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==k?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[k]||k,line:p.yylineno,loc:g,expected:M})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+k);switch(w[0]){case 1:n.push(k),s.push(p.yytext),a.push(p.yylloc),n.push(w[1]),k=null,b?(k=b,b=null):(h=p.yyleng,l=p.yytext,c=p.yylineno,g=p.yylloc,u>0&&u--);break;case 2:if($=this.productions_[w[1]][1],S.$=s[s.length-$],S._$={first_line:a[a.length-($||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-($||1)].first_column,last_column:a[a.length-1].last_column},x&&(S._$.range=[a[a.length-($||1)].range[0],a[a.length-1].range[1]]),void 0!==(v=this.performAction.apply(S,[l,h,c,d.yy,w[1],s,a].concat(y))))return v;$&&(n=n.slice(0,-1*$*2),s=s.slice(0,-1*$),a=a.slice(0,-1*$)),n.push(this.productions_[w[1]][0]),s.push(S.$),a.push(S._$),T=o[n[n.length-2]][n[n.length-1]],n.push(T);break;case 3:return!0}}return!0},"parse")},h=function(){return{EOF:1,parseError:(0,r.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,r.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,r.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,r.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,r.K2)(function(){return this._more=!0,this},"more"),reject:(0,r.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,r.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,r.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,r.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,r.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,r.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,r.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;r<s.length;r++)if((n=this._input.match(this.rules[s[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,r.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,r.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,r.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,r.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,r.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,r.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,r.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,r.K2)(function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 10;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}}}();function u(){this.yy={}}return c.lexer=h,(0,r.K2)(u,"Parser"),u.prototype=c,c.Parser=u,new u}();o.parser=o;var l=o,c="",h=[],u=[],y=[],p=(0,r.K2)(function(){h.length=0,u.length=0,c="",y.length=0,(0,r.IU)()},"clear"),d=(0,r.K2)(function(t){c=t,h.push(t)},"addSection"),f=(0,r.K2)(function(){return h},"getSections"),g=(0,r.K2)(function(){let t=b();let e=0;for(;!t&&e<100;)t=b(),e++;return u.push(...y),u},"getTasks"),x=(0,r.K2)(function(){const t=[];u.forEach(e=>{e.people&&t.push(...e.people)});return[...new Set(t)].sort()},"updateActors"),m=(0,r.K2)(function(t,e){const n=e.substr(1).split(":");let i=0,s=[];1===n.length?(i=Number(n[0]),s=[]):(i=Number(n[0]),s=n[1].split(","));const r=s.map(t=>t.trim()),a={section:c,type:c,people:r,task:t,score:i};y.push(a)},"addTask"),k=(0,r.K2)(function(t){const e={section:c,type:c,description:t,task:t,classes:[]};u.push(e)},"addTaskOrg"),b=(0,r.K2)(function(){const t=(0,r.K2)(function(t){return y[t].processed},"compileTask");let e=!0;for(const[n,i]of y.entries())t(n),e=e&&i.processed;return e},"compileTasks"),_=(0,r.K2)(function(){return x()},"getActors"),w={getConfig:(0,r.K2)(()=>(0,r.D7)().journey,"getConfig"),clear:p,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:d,getSections:f,getTasks:g,addTask:m,addTaskOrg:k,getActors:_},v=(0,r.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n font-family: ${t.fontFamily};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n ${(0,s.o)()}\n`,"getStyles"),K=(0,r.K2)(function(t,e){return(0,i.tk)(t,e)},"drawRect"),$=(0,r.K2)(function(t,e){const n=15,i=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),s=t.append("g");function o(t){const i=(0,a.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function l(t){const i=(0,a.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function c(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),s.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,r.K2)(o,"smile"),(0,r.K2)(l,"sad"),(0,r.K2)(c,"ambivalent"),e.score>3?o(s):e.score<3?l(s):c(s),i},"drawFace"),T=(0,r.K2)(function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},"drawCircle"),M=(0,r.K2)(function(t,e){return(0,i.m)(t,e)},"drawText"),S=(0,r.K2)(function(t,e){function n(t,e,n,i,s){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-s)+" "+(t+n-1.2*s)+","+(e+i)+" "+t+","+(e+i)}(0,r.K2)(n,"genPoints");const i=t.append("polygon");i.attr("points",n(e.x,e.y,50,20,7)),i.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,M(t,e)},"drawLabel"),C=(0,r.K2)(function(t,e,n){const s=t.append("g"),r=(0,i.PB)();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width*e.taskCount+n.diagramMarginX*(e.taskCount-1),r.height=n.height,r.class="journey-section section-type-"+e.num,r.rx=3,r.ry=3,K(s,r),A(n)(e.text,s,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+e.num},n,e.colour)},"drawSection"),E=-1,I=(0,r.K2)(function(t,e,n){const s=e.x+n.width/2,r=t.append("g");E++;r.append("line").attr("id","task"+E).attr("x1",s).attr("y1",e.y).attr("x2",s).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),$(r,{cx:s,cy:300+30*(5-e.score),score:e.score});const a=(0,i.PB)();a.x=e.x,a.y=e.y,a.fill=e.fill,a.width=n.width,a.height=n.height,a.class="task task-type-"+e.num,a.rx=3,a.ry=3,K(r,a);let o=e.x+14;e.people.forEach(t=>{const n=e.actors[t].color,i={cx:o,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};T(r,i),o+=10}),A(n)(e.task,r,a.x,a.y,a.width,a.height,{class:"task"},n,e.colour)},"drawTask"),P=(0,r.K2)(function(t,e){(0,i.lC)(t,e)},"drawBackgroundRect"),A=function(){function t(t,e,n,s,r,a,o,l){i(e.append("text").attr("x",n+r/2).attr("y",s+a/2+5).style("font-color",l).style("text-anchor","middle").text(t),o)}function e(t,e,n,s,r,a,o,l,c){const{taskFontSize:h,taskFontFamily:u}=l,y=t.split(/<br\s*\/?>/gi);for(let p=0;p<y.length;p++){const t=p*h-h*(y.length-1)/2,l=e.append("text").attr("x",n+r/2).attr("y",s).attr("fill",c).style("text-anchor","middle").style("font-size",h).style("font-family",u);l.append("tspan").attr("x",n+r/2).attr("dy",t).text(y[p]),l.attr("y",s+a/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),i(l,o)}}function n(t,n,s,r,a,o,l,c){const h=n.append("switch"),u=h.append("foreignObject").attr("x",s).attr("y",r).attr("width",a).attr("height",o).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");u.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,h,s,r,a,o,l,c),i(u,l)}function i(t,e){for(const n in e)n in e&&t.attr(n,e[n])}return(0,r.K2)(t,"byText"),(0,r.K2)(e,"byTspan"),(0,r.K2)(n,"byFo"),(0,r.K2)(i,"_setTextAttrs"),function(i){return"fo"===i.textPlacement?n:"old"===i.textPlacement?t:e}}(),j={drawRect:K,drawCircle:T,drawSection:C,drawText:M,drawLabel:S,drawTask:I,drawBackgroundRect:P,initGraphics:(0,r.K2)(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics")},B=(0,r.K2)(function(t){Object.keys(t).forEach(function(e){V[e]=t[e]})},"setConf"),F={},L=0;function D(t){const e=(0,r.D7)().journey,n=e.maxLabelWidth;L=0;let i=60;Object.keys(F).forEach(s=>{const r=F[s].color,a={cx:20,cy:i,r:7,fill:r,stroke:"#000",pos:F[s].position};j.drawCircle(t,a);let o=t.append("text").attr("visibility","hidden").text(s);const l=o.node().getBoundingClientRect().width;o.remove();let c=[];if(l<=n)c=[s];else{const e=s.split(" ");let i="";o=t.append("text").attr("visibility","hidden"),e.forEach(t=>{const e=i?`${i} ${t}`:t;o.text(e);if(o.node().getBoundingClientRect().width>n){if(i&&c.push(i),i=t,o.text(t),o.node().getBoundingClientRect().width>n){let e="";for(const i of t)e+=i,o.text(e+"-"),o.node().getBoundingClientRect().width>n&&(c.push(e.slice(0,-1)+"-"),e=i);i=e}}else i=e}),i&&c.push(i),o.remove()}c.forEach((n,s)=>{const r={x:40,y:i+7+20*s,fill:"#666",text:n,textMargin:e.boxTextMargin??5},a=j.drawText(t,r).node().getBoundingClientRect().width;a>L&&a>e.leftMargin-a&&(L=a)}),i+=Math.max(20,20*c.length)})}(0,r.K2)(D,"drawActorLegend");var V=(0,r.D7)().journey,R=0,O=(0,r.K2)(function(t,e,n,i){const s=(0,r.D7)(),o=s.journey.titleColor,l=s.journey.titleFontSize,c=s.journey.titleFontFamily,h=s.securityLevel;let u;"sandbox"===h&&(u=(0,a.Ltv)("#i"+e));const y="sandbox"===h?(0,a.Ltv)(u.nodes()[0].contentDocument.body):(0,a.Ltv)("body");N.init();const p=y.select("#"+e);j.initGraphics(p);const d=i.db.getTasks(),f=i.db.getDiagramTitle(),g=i.db.getActors();for(const r in F)delete F[r];let x=0;g.forEach(t=>{F[t]={color:V.actorColours[x%V.actorColours.length],position:x},x++}),D(p),R=V.leftMargin+L,N.insert(0,0,R,50*Object.keys(F).length),Y(p,d,0);const m=N.getBounds();f&&p.append("text").text(f).attr("x",R).attr("font-size",l).attr("font-weight","bold").attr("y",25).attr("fill",o).attr("font-family",c);const k=m.stopy-m.starty+2*V.diagramMarginY,b=R+m.stopx+2*V.diagramMarginX;(0,r.a$)(p,k,b,V.useMaxWidth),p.append("line").attr("x1",R).attr("y1",4*V.height).attr("x2",b-R-4).attr("y2",4*V.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const _=f?70:0;p.attr("viewBox",`${m.startx} -25 ${b} ${k+_}`),p.attr("preserveAspectRatio","xMinYMin meet"),p.attr("height",k+_+25)},"draw"),N={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:(0,r.K2)(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:(0,r.K2)(function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])},"updateVal"),updateBounds:(0,r.K2)(function(t,e,n,i){const s=(0,r.D7)().journey,a=this;let o=0;function l(l){return(0,r.K2)(function(r){o++;const c=a.sequenceItems.length-o+1;a.updateVal(r,"starty",e-c*s.boxMargin,Math.min),a.updateVal(r,"stopy",i+c*s.boxMargin,Math.max),a.updateVal(N.data,"startx",t-c*s.boxMargin,Math.min),a.updateVal(N.data,"stopx",n+c*s.boxMargin,Math.max),"activation"!==l&&(a.updateVal(r,"startx",t-c*s.boxMargin,Math.min),a.updateVal(r,"stopx",n+c*s.boxMargin,Math.max),a.updateVal(N.data,"starty",e-c*s.boxMargin,Math.min),a.updateVal(N.data,"stopy",i+c*s.boxMargin,Math.max))},"updateItemBounds")}(0,r.K2)(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:(0,r.K2)(function(t,e,n,i){const s=Math.min(t,n),r=Math.max(t,n),a=Math.min(e,i),o=Math.max(e,i);this.updateVal(N.data,"startx",s,Math.min),this.updateVal(N.data,"starty",a,Math.min),this.updateVal(N.data,"stopx",r,Math.max),this.updateVal(N.data,"stopy",o,Math.max),this.updateBounds(s,a,r,o)},"insert"),bumpVerticalPos:(0,r.K2)(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:(0,r.K2)(function(){return this.verticalPos},"getVerticalPos"),getBounds:(0,r.K2)(function(){return this.data},"getBounds")},z=V.sectionFills,W=V.sectionColours,Y=(0,r.K2)(function(t,e,n){const i=(0,r.D7)().journey;let s="";const a=n+(2*i.height+i.diagramMarginY);let o=0,l="#CCC",c="black",h=0;for(const[r,u]of e.entries()){if(s!==u.section){l=z[o%z.length],h=o%z.length,c=W[o%W.length];let n=0;const a=u.section;for(let t=r;t<e.length&&e[t].section==a;t++)n+=1;const y={x:r*i.taskMargin+r*i.width+R,y:50,text:u.section,fill:l,num:h,colour:c,taskCount:n};j.drawSection(t,y,i),s=u.section,o++}const n=u.people.reduce((t,e)=>(F[e]&&(t[e]=F[e]),t),{});u.x=r*i.taskMargin+r*i.width+R,u.y=a,u.width=i.diagramMarginX,u.height=i.diagramMarginY,u.colour=c,u.fill=l,u.num=h,u.actors=n,j.drawTask(t,u,i),N.insert(u.x,u.y,u.x+u.width+i.taskMargin,450)}},"drawTasks"),q={setConf:B,draw:O},J={parser:l,db:w,renderer:q,styles:v,init:(0,r.K2)(t=>{q.setConf(t.journey),w.clear()},"init")}},53776:(t,e,n)=>{n.d(e,{o:()=>i});var i=(0,n(27293).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")}}]); \ No newline at end of file diff --git a/assets/js/6993.7a3e92a9.js b/assets/js/6993.7a3e92a9.js new file mode 100644 index 0000000000..06f108aaa0 --- /dev/null +++ b/assets/js/6993.7a3e92a9.js @@ -0,0 +1 @@ +(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6993],{22318:function(t){var e;e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=28)}([function(t,e,i){"use strict";function n(){}n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(8),o=i(9);function s(t,e,i){n.call(this,i),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=i,this.bendpoints=[],this.source=t,this.target=e}for(var a in s.prototype=Object.create(n.prototype),n)s[a]=n[a];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(t,e){for(var i=this.getOtherEnd(t),n=e.getGraphManager().getRoot();;){if(i.getOwner()==e)return i;if(i.getOwner()==n)break;i=i.getOwner().getParent()}return null},s.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=r.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,i){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(13),s=i(0),a=i(16),h=i(5);function l(t,e,i,s){null==i&&null==s&&(s=e),n.call(this,s),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=r.MIN_VALUE,this.inclusionTreeDepth=r.MAX_VALUE,this.vGraphObject=s,this.edges=[],this.graphManager=t,this.rect=null!=i&&null!=e?new o(e.x,e.y,i.width,i.height):new o}for(var c in l.prototype=Object.create(n.prototype),n)l[c]=n[c];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(t){this.rect.width=t},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(t){this.rect.height=t},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new h(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new h(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},l.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},l.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},l.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},l.prototype.getEdgeListToNode=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.target==t){if(n.source!=i)throw"Incorrect edge source!";e.push(n)}}),e},l.prototype.getEdgesBetween=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.source!=i&&n.target!=i)throw"Incorrect edge source and/or target";n.target!=t&&n.source!=t||e.push(n)}),e},l.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach(function(i){if(i.source==e)t.add(i.target);else{if(i.target!=e)throw"Incorrect incidency!";t.add(i.source)}}),t},l.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),i=0;i<e.length;i++)e[i].withChildren().forEach(function(e){t.add(e)});return t},l.prototype.getNoOfChildren=function(){var t=0;if(null==this.child)t=1;else for(var e=this.child.getNodes(),i=0;i<e.length;i++)t+=e[i].getNoOfChildren();return 0==t&&(t=1),t},l.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},l.prototype.calcEstimatedSize=function(){return null==this.child?this.estimatedSize=(this.rect.width+this.rect.height)/2:(this.estimatedSize=this.child.calcEstimatedSize(),this.rect.width=this.estimatedSize,this.rect.height=this.estimatedSize,this.estimatedSize)},l.prototype.scatter=function(){var t,e,i=-s.INITIAL_WORLD_BOUNDARY,n=s.INITIAL_WORLD_BOUNDARY;t=s.WORLD_CENTER_X+a.nextDouble()*(n-i)+i;var r=-s.INITIAL_WORLD_BOUNDARY,o=s.INITIAL_WORLD_BOUNDARY;e=s.WORLD_CENTER_Y+a.nextDouble()*(o-r)+r,this.rect.x=t,this.rect.y=e},l.prototype.updateBounds=function(){if(null==this.getChild())throw"assert failed";if(0!=this.getChild().getNodes().length){var t=this.getChild();if(t.updateBounds(!0),this.rect.x=t.getLeft(),this.rect.y=t.getTop(),this.setWidth(t.getRight()-t.getLeft()),this.setHeight(t.getBottom()-t.getTop()),s.NODE_DIMENSIONS_INCLUDE_LABELS){var e=t.getRight()-t.getLeft(),i=t.getBottom()-t.getTop();this.labelWidth&&("left"==this.labelPosHorizontal?(this.rect.x-=this.labelWidth,this.setWidth(e+this.labelWidth)):"center"==this.labelPosHorizontal&&this.labelWidth>e?(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)):"right"==this.labelPosHorizontal&&this.setWidth(e+this.labelWidth)),this.labelHeight&&("top"==this.labelPosVertical?(this.rect.y-=this.labelHeight,this.setHeight(i+this.labelHeight)):"center"==this.labelPosVertical&&this.labelHeight>i?(this.rect.y-=(this.labelHeight-i)/2,this.setHeight(this.labelHeight)):"bottom"==this.labelPosVertical&&this.setHeight(i+this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==r.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var n=new h(e,i),r=t.inverseTransformPoint(n);this.setLocation(r.x,r.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";var n=i(0);function r(){}for(var o in n)r[o]=n[o];r.MAX_ITERATIONS=2500,r.DEFAULT_EDGE_LENGTH=50,r.DEFAULT_SPRING_STRENGTH=.45,r.DEFAULT_REPULSION_STRENGTH=4500,r.DEFAULT_GRAVITY_STRENGTH=.4,r.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,r.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,r.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,r.COOLING_ADAPTATION_FACTOR=.33,r.ADAPTATION_LOWER_NODE_LIMIT=1e3,r.ADAPTATION_UPPER_NODE_LIMIT=5e3,r.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,r.MAX_NODE_DISPLACEMENT=3*r.MAX_NODE_DISPLACEMENT_INCREMENTAL,r.MIN_REPULSION_DIST=r.DEFAULT_EDGE_LENGTH/10,r.CONVERGENCE_CHECK_PERIOD=100,r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,r.MIN_EDGE_LENGTH=1,r.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=r},function(t,e,i){"use strict";function n(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(t){this.x=t},n.prototype.setY=function(t){this.y=t},n.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(0),s=i(7),a=i(3),h=i(1),l=i(13),c=i(12),d=i(11);function g(t,e,i){n.call(this,i),this.estimatedSize=r.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var u in g.prototype=Object.create(n.prototype),n)g[u]=n[u];g.prototype.getNodes=function(){return this.nodes},g.prototype.getEdges=function(){return this.edges},g.prototype.getGraphManager=function(){return this.graphManager},g.prototype.getParent=function(){return this.parent},g.prototype.getLeft=function(){return this.left},g.prototype.getRight=function(){return this.right},g.prototype.getTop=function(){return this.top},g.prototype.getBottom=function(){return this.bottom},g.prototype.isConnected=function(){return this.isConnected},g.prototype.add=function(t,e,i){if(null==e&&null==i){var n=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(n)>-1)throw"Node already in graph!";return n.owner=this,this.getNodes().push(n),n}var r=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(r.source=e,r.target=i,r.isInterGraph=!1,this.getEdges().push(r),e.edges.push(r),i!=e&&i.edges.push(r),r)},g.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),n=i.length,r=0;r<n;r++)(o=i[r]).isInterGraph?this.graphManager.remove(o):o.source.owner.remove(o);if(-1==(s=this.nodes.indexOf(e)))throw"Node not in owner node list!";this.nodes.splice(s,1)}else if(t instanceof h){var o;if(null==(o=t))throw"Edge is null!";if(null==o.source||null==o.target)throw"Source and/or target is null!";if(null==o.source.owner||null==o.target.owner||o.source.owner!=this||o.target.owner!=this)throw"Source and/or target owner is invalid!";var s,l=o.source.edges.indexOf(o),c=o.target.edges.indexOf(o);if(!(l>-1&&c>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(c,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},g.prototype.updateLeftTop=function(){for(var t,e,i,n=r.MAX_VALUE,o=r.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h<a;h++){var l=s[h];n>(t=l.getTop())&&(n=t),o>(e=l.getLeft())&&(o=e)}return n==r.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=n-i,new c(this.left,this.top))},g.prototype.updateBounds=function(t){for(var e,i,n,o,s,a=r.MAX_VALUE,h=-r.MAX_VALUE,c=r.MAX_VALUE,d=-r.MAX_VALUE,g=this.nodes,u=g.length,f=0;f<u;f++){var p=g[f];t&&null!=p.child&&p.updateBounds(),a>(e=p.getLeft())&&(a=e),h<(i=p.getRight())&&(h=i),c>(n=p.getTop())&&(c=n),d<(o=p.getBottom())&&(d=o)}var v=new l(a,c,h-a,d-c);a==r.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=g[0].getParent().paddingLeft?g[0].getParent().paddingLeft:this.margin,this.left=v.x-s,this.right=v.x+v.width+s,this.top=v.y-s,this.bottom=v.y+v.height+s},g.calculateBounds=function(t){for(var e,i,n,o,s=r.MAX_VALUE,a=-r.MAX_VALUE,h=r.MAX_VALUE,c=-r.MAX_VALUE,d=t.length,g=0;g<d;g++){var u=t[g];s>(e=u.getLeft())&&(s=e),a<(i=u.getRight())&&(a=i),h>(n=u.getTop())&&(h=n),c<(o=u.getBottom())&&(c=o)}return new l(s,h,a-s,c-h)},g.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},g.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},g.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,n=0;n<i;n++)t+=e[n].calcEstimatedSize();return this.estimatedSize=0==t?o.EMPTY_COMPOUND_NODE_SIZE:t/Math.sqrt(this.nodes.length),this.estimatedSize},g.prototype.updateConnected=function(){var t=this;if(0!=this.nodes.length){var e,i,n=new d,r=new Set,o=this.nodes[0];for(o.withChildren().forEach(function(t){n.push(t),r.add(t)});0!==n.length;)for(var s=(e=(o=n.shift()).getEdges()).length,a=0;a<s;a++)null==(i=e[a].getOtherEndInGraph(o,this))||r.has(i)||i.withChildren().forEach(function(t){n.push(t),r.add(t)});if(this.isConnected=!1,r.size>=this.nodes.length){var h=0;r.forEach(function(e){e.owner==t&&h++}),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=g},function(t,e,i){"use strict";var n,r=i(1);function o(t){n=i(6),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,n,r){if(null==i&&null==n&&null==r){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}r=i,i=t;var o=(n=e).getOwner(),s=r.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,n,r);if(i.isInterGraph=!0,i.source=n,i.target=r,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof n){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a<s;a++)i=o[a],e.remove(i);var h,l=[];for(s=(l=l.concat(e.getNodes())).length,a=0;a<s;a++)h=l[a],e.remove(h);e==this.rootGraph&&this.setRootGraph(null);var c=this.graphs.indexOf(e);this.graphs.splice(c,1),e.parent=null}else if(t instanceof r){if(null==(i=t))throw"Edge is null!";if(!i.isInterGraph)throw"Not an inter-graph edge!";if(null==i.source||null==i.target)throw"Source and/or target is null!";if(-1==i.source.edges.indexOf(i)||-1==i.target.edges.indexOf(i))throw"Source and/or target doesn't know this edge!";if(c=i.source.edges.indexOf(i),i.source.edges.splice(c,1),c=i.target.edges.indexOf(i),i.target.edges.splice(c,1),null==i.source.owner||null==i.source.owner.getGraphManager())throw"Edge owner graph or owner graph manager is null!";if(-1==i.source.owner.getGraphManager().edges.indexOf(i))throw"Not in owner graph manager's edge list!";c=i.source.owner.getGraphManager().edges.indexOf(i),i.source.owner.getGraphManager().edges.splice(c,1)}},o.prototype.updateBounds=function(){this.rootGraph.updateBounds(!0)},o.prototype.getGraphs=function(){return this.graphs},o.prototype.getAllNodes=function(){if(null==this.allNodes){for(var t=[],e=this.getGraphs(),i=e.length,n=0;n<i;n++)t=t.concat(e[n].getNodes());this.allNodes=t}return this.allNodes},o.prototype.resetAllNodes=function(){this.allNodes=null},o.prototype.resetAllEdges=function(){this.allEdges=null},o.prototype.resetAllNodesToApplyGravitation=function(){this.allNodesToApplyGravitation=null},o.prototype.getAllEdges=function(){if(null==this.allEdges){for(var t=[],e=this.getGraphs(),i=(e.length,0);i<e.length;i++)t=t.concat(e[i].getEdges());t=t.concat(this.edges),this.allEdges=t}return this.allEdges},o.prototype.getAllNodesToApplyGravitation=function(){return this.allNodesToApplyGravitation},o.prototype.setAllNodesToApplyGravitation=function(t){if(null!=this.allNodesToApplyGravitation)throw"assert failed";this.allNodesToApplyGravitation=t},o.prototype.getRoot=function(){return this.rootGraph},o.prototype.setRootGraph=function(t){if(t.getGraphManager()!=this)throw"Root not in this graph mgr!";this.rootGraph=t,null==t.parent&&(t.parent=this.layout.newNode("Root node"))},o.prototype.getLayout=function(){return this.layout},o.prototype.isOneAncestorOfOther=function(t,e){if(null==t||null==e)throw"assert failed";if(t==e)return!0;for(var i,n=t.getOwner();null!=(i=n.getParent());){if(i==e)return!0;if(null==(n=i.getOwner()))break}for(n=e.getOwner();null!=(i=n.getParent());){if(i==t)return!0;if(null==(n=i.getOwner()))break}return!1},o.prototype.calcLowestCommonAncestors=function(){for(var t,e,i,n,r,o=this.getAllEdges(),s=o.length,a=0;a<s;a++)if(e=(t=o[a]).source,i=t.target,t.lca=null,t.sourceInLca=e,t.targetInLca=i,e!=i){for(n=e.getOwner();null==t.lca;){for(t.targetInLca=i,r=i.getOwner();null==t.lca;){if(r==n){t.lca=r;break}if(r==this.rootGraph)break;if(null!=t.lca)throw"assert failed";t.targetInLca=r.getParent(),r=t.targetInLca.getOwner()}if(n==this.rootGraph)break;null==t.lca&&(t.sourceInLca=n.getParent(),n=t.sourceInLca.getOwner())}if(null==t.lca)throw"assert failed"}else t.lca=e.getOwner()},o.prototype.calcLowestCommonAncestor=function(t,e){if(t==e)return t.getOwner();for(var i=t.getOwner();null!=i;){for(var n=e.getOwner();null!=n;){if(n==i)return n;n=n.getParent().getOwner()}i=i.getParent().getOwner()}return i},o.prototype.calcInclusionTreeDepths=function(t,e){var i;null==t&&null==e&&(t=this.rootGraph,e=1);for(var n=t.getNodes(),r=n.length,o=0;o<r;o++)(i=n[o]).inclusionTreeDepth=e,null!=i.child&&this.calcInclusionTreeDepths(i.child,e+1)},o.prototype.includesInvalidEdge=function(){for(var t,e=[],i=this.edges.length,n=0;n<i;n++)t=this.edges[n],this.isOneAncestorOfOther(t.source,t.target)&&e.push(t);for(n=0;n<e.length;n++)this.remove(e[n]);return!1},t.exports=o},function(t,e,i){"use strict";var n=i(12);function r(){}r.calcSeparationAmount=function(t,e,i,n){if(!t.intersects(e))throw"assert failed";var r=new Array(2);this.decideDirectionsForOverlappingNodes(t,e,r),i[0]=Math.min(t.getRight(),e.getRight())-Math.max(t.x,e.x),i[1]=Math.min(t.getBottom(),e.getBottom())-Math.max(t.y,e.y),t.getX()<=e.getX()&&t.getRight()>=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]<a?a=i[0]:s=i[1],i[0]=-1*r[0]*(a/2+n),i[1]=-1*r[1]*(s/2+n)},r.decideDirectionsForOverlappingNodes=function(t,e,i){t.getCenterX()<e.getCenterX()?i[0]=-1:i[0]=1,t.getCenterY()<e.getCenterY()?i[1]=-1:i[1]=1},r.getIntersection2=function(t,e,i){var n=t.getCenterX(),r=t.getCenterY(),o=e.getCenterX(),s=e.getCenterY();if(t.intersects(e))return i[0]=n,i[1]=r,i[2]=o,i[3]=s,!0;var a=t.getX(),h=t.getY(),l=t.getRight(),c=t.getX(),d=t.getBottom(),g=t.getRight(),u=t.getWidthHalf(),f=t.getHeightHalf(),p=e.getX(),v=e.getY(),y=e.getRight(),m=e.getX(),E=e.getBottom(),N=e.getRight(),T=e.getWidthHalf(),A=e.getHeightHalf(),w=!1,L=!1;if(n===o){if(r>s)return i[0]=n,i[1]=h,i[2]=o,i[3]=E,!1;if(r<s)return i[0]=n,i[1]=d,i[2]=o,i[3]=v,!1}else if(r===s){if(n>o)return i[0]=a,i[1]=r,i[2]=y,i[3]=s,!1;if(n<o)return i[0]=l,i[1]=r,i[2]=p,i[3]=s,!1}else{var I=t.height/t.width,C=e.height/e.width,_=(s-r)/(o-n),M=void 0,x=void 0,O=void 0,D=void 0,R=void 0,b=void 0;if(-I===_?n>o?(i[0]=c,i[1]=d,w=!0):(i[0]=l,i[1]=h,w=!0):I===_&&(n>o?(i[0]=a,i[1]=h,w=!0):(i[0]=g,i[1]=d,w=!0)),-C===_?o>n?(i[2]=m,i[3]=E,L=!0):(i[2]=y,i[3]=v,L=!0):C===_&&(o>n?(i[2]=p,i[3]=v,L=!0):(i[2]=N,i[3]=E,L=!0)),w&&L)return!1;if(n>o?r>s?(M=this.getCardinalDirection(I,_,4),x=this.getCardinalDirection(C,_,2)):(M=this.getCardinalDirection(-I,_,3),x=this.getCardinalDirection(-C,_,1)):r>s?(M=this.getCardinalDirection(-I,_,1),x=this.getCardinalDirection(-C,_,3)):(M=this.getCardinalDirection(I,_,2),x=this.getCardinalDirection(C,_,4)),!w)switch(M){case 1:D=h,O=n+-f/_,i[0]=O,i[1]=D;break;case 2:O=g,D=r+u*_,i[0]=O,i[1]=D;break;case 3:D=d,O=n+f/_,i[0]=O,i[1]=D;break;case 4:O=c,D=r+-u*_,i[0]=O,i[1]=D}if(!L)switch(x){case 1:b=v,R=o+-A/_,i[2]=R,i[3]=b;break;case 2:R=N,b=s+T*_,i[2]=R,i[3]=b;break;case 3:b=E,R=o+A/_,i[2]=R,i[3]=b;break;case 4:R=m,b=s+-T*_,i[2]=R,i[3]=b}}return!1},r.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},r.getIntersection=function(t,e,i,r){if(null==r)return this.getIntersection2(t,e,i);var o,s,a,h,l,c,d,g=t.x,u=t.y,f=e.x,p=e.y,v=i.x,y=i.y,m=r.x,E=r.y;return 0===(d=(o=p-u)*(h=v-m)-(s=E-y)*(a=g-f))?null:new n((a*(c=m*y-v*E)-h*(l=f*u-g*p))/d,(s*l-o*c)/d)},r.angleOfVector=function(t,e,i,n){var r=void 0;return t!==i?(r=Math.atan((n-e)/(i-t)),i<t?r+=Math.PI:n<e&&(r+=this.TWO_PI)):r=n<e?this.ONE_AND_HALF_PI:this.HALF_PI,r},r.doIntersect=function(t,e,i,n){var r=t.x,o=t.y,s=e.x,a=e.y,h=i.x,l=i.y,c=n.x,d=n.y,g=(s-r)*(d-l)-(c-h)*(a-o);if(0===g)return!1;var u=((d-l)*(c-r)+(h-c)*(d-o))/g,f=((o-a)*(c-r)+(s-r)*(d-o))/g;return 0<u&&u<1&&0<f&&f<1},r.findCircleLineIntersections=function(t,e,i,n,r,o,s){var a=(i-t)*(i-t)+(n-e)*(n-e),h=2*((t-r)*(i-t)+(e-o)*(n-e)),l=(t-r)*(t-r)+(e-o)*(e-o)-s*s;if(h*h-4*a*l>=0){var c=(-h+Math.sqrt(h*h-4*a*l))/(2*a),d=(-h-Math.sqrt(h*h-4*a*l))/(2*a);return c>=0&&c<=1?[c]:d>=0&&d<=1?[d]:null}return null},r.HALF_PI=.5*Math.PI,r.ONE_AND_HALF_PI=1.5*Math.PI,r.TWO_PI=2*Math.PI,r.THREE_PI=3*Math.PI,t.exports=r},function(t,e,i){"use strict";function n(){}n.sign=function(t){return t>0?1:t<0?-1:0},n.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},n.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=n},function(t,e,i){"use strict";function n(){}n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=function(t){return{value:t,next:null,prev:null}},o=function(t,e,i,n){return null!==t?t.next=e:n.head=e,null!==i?i.prev=e:n.tail=e,e.prev=t,e.next=i,n.length++,e},s=function(t,e){var i=t.prev,n=t.next;return null!==i?i.next=n:e.head=n,null!==n?n.prev=i:e.tail=i,t.prev=t.next=null,e.length--,t},a=function(){function t(e){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.length=0,this.head=null,this.tail=null,null!=e&&e.forEach(function(t){return i.push(t)})}return n(t,[{key:"size",value:function(){return this.length}},{key:"insertBefore",value:function(t,e){return o(e.prev,r(t),e,this)}},{key:"insertAfter",value:function(t,e){return o(e,r(t),e.next,this)}},{key:"insertNodeBefore",value:function(t,e){return o(e.prev,t,e,this)}},{key:"insertNodeAfter",value:function(t,e){return o(e,t,e.next,this)}},{key:"push",value:function(t){return o(this.tail,r(t),null,this)}},{key:"unshift",value:function(t){return o(null,r(t),this.head,this)}},{key:"remove",value:function(t){return s(t,this)}},{key:"pop",value:function(){return s(this.tail,this).value}},{key:"popNode",value:function(){return s(this.tail,this)}},{key:"shift",value:function(){return s(this.head,this).value}},{key:"shiftNode",value:function(){return s(this.head,this)}},{key:"get_object_at",value:function(t){if(t<=this.length()){for(var e=1,i=this.head;e<t;)i=i.next,e++;return i.value}}},{key:"set_object_at",value:function(t,e){if(t<=this.length()){for(var i=1,n=this.head;i<t;)n=n.next,i++;n.value=e}}}]),t}();t.exports=a},function(t,e,i){"use strict";function n(t,e,i){this.x=null,this.y=null,null==t&&null==e&&null==i?(this.x=0,this.y=0):"number"==typeof t&&"number"==typeof e&&null==i?(this.x=t,this.y=e):"Point"==t.constructor.name&&null==e&&null==i&&(i=t,this.x=i.x,this.y=i.y)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.getLocation=function(){return new n(this.x,this.y)},n.prototype.setLocation=function(t,e,i){"Point"==t.constructor.name&&null==e&&null==i?(i=t,this.setLocation(i.x,i.y)):"number"==typeof t&&"number"==typeof e&&null==i&&(parseInt(t)==t&&parseInt(e)==e?this.move(t,e):(this.x=Math.floor(t+.5),this.y=Math.floor(e+.5)))},n.prototype.move=function(t,e){this.x=t,this.y=e},n.prototype.translate=function(t,e){this.x+=t,this.y+=e},n.prototype.equals=function(t){if("Point"==t.constructor.name){var e=t;return this.x==e.x&&this.y==e.y}return this==t},n.prototype.toString=function(){return(new n).constructor.name+"[x="+this.x+",y="+this.y+"]"},t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){this.x=0,this.y=0,this.width=0,this.height=0,null!=t&&null!=e&&null!=i&&null!=n&&(this.x=t,this.y=e,this.width=i,this.height=n)}n.prototype.getX=function(){return this.x},n.prototype.setX=function(t){this.x=t},n.prototype.getY=function(){return this.y},n.prototype.setY=function(t){this.y=t},n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(t){this.width=t},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(t){this.height=t},n.prototype.getRight=function(){return this.x+this.width},n.prototype.getBottom=function(){return this.y+this.height},n.prototype.intersects=function(t){return!(this.getRight()<t.x||this.getBottom()<t.y||t.getRight()<this.x||t.getBottom()<this.y)},n.prototype.getCenterX=function(){return this.x+this.width/2},n.prototype.getMinX=function(){return this.getX()},n.prototype.getMaxX=function(){return this.getX()+this.width},n.prototype.getCenterY=function(){return this.y+this.height/2},n.prototype.getMinY=function(){return this.getY()},n.prototype.getMaxY=function(){return this.getY()+this.height},n.prototype.getWidthHalf=function(){return this.width/2},n.prototype.getHeightHalf=function(){return this.height/2},t.exports=n},function(t,e,i){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function r(){}r.lastID=0,r.createID=function(t){return r.isPrimitive(t)?t:(null!=t.uniqueID||(t.uniqueID=r.getString(),r.lastID++),t.uniqueID)},r.getString=function(t){return null==t&&(t=r.lastID),"Object#"+t},r.isPrimitive=function(t){var e=void 0===t?"undefined":n(t);return null==t||"object"!=e&&"function"!=e},t.exports=r},function(t,e,i){"use strict";function n(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}var r=i(0),o=i(7),s=i(3),a=i(1),h=i(6),l=i(5),c=i(17),d=i(29);function g(t){d.call(this),this.layoutQuality=r.QUALITY,this.createBendsAsNeeded=r.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=r.DEFAULT_INCREMENTAL,this.animationOnLayout=r.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=r.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=r.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=r.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new o(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,null!=t&&(this.isRemoteUse=t)}g.RANDOM_SEED=1,g.prototype=Object.create(d.prototype),g.prototype.getGraphManager=function(){return this.graphManager},g.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},g.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},g.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},g.prototype.newGraphManager=function(){var t=new o(this);return this.graphManager=t,t},g.prototype.newGraph=function(t){return new h(null,this.graphManager,t)},g.prototype.newNode=function(t){return new s(this.graphManager,t)},g.prototype.newEdge=function(t){return new a(null,null,t)},g.prototype.checkLayoutSuccess=function(){return null==this.graphManager.getRoot()||0==this.graphManager.getRoot().getNodes().length||this.graphManager.includesInvalidEdge()},g.prototype.runLayout=function(){var t;return this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters(),t=!this.checkLayoutSuccess()&&this.layout(),"during"!==r.ANIMATE&&(t&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,t)},g.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},g.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var t=this.graphManager.getAllEdges(),e=0;e<t.length;e++)t[e];var i=this.graphManager.getRoot().getNodes();for(e=0;e<i.length;e++)i[e];this.update(this.graphManager.getRoot())}},g.prototype.update=function(t){if(null==t)this.update2();else if(t instanceof s){var e=t;if(null!=e.getChild())for(var i=e.getChild().getNodes(),n=0;n<i.length;n++)update(i[n]);null!=e.vGraphObject&&e.vGraphObject.update(e)}else if(t instanceof a){var r=t;null!=r.vGraphObject&&r.vGraphObject.update(r)}else if(t instanceof h){var o=t;null!=o.vGraphObject&&o.vGraphObject.update(o)}},g.prototype.initParameters=function(){this.isSubLayout||(this.layoutQuality=r.QUALITY,this.animationDuringLayout=r.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=r.DEFAULT_ANIMATION_PERIOD,this.animationOnLayout=r.DEFAULT_ANIMATION_ON_LAYOUT,this.incremental=r.DEFAULT_INCREMENTAL,this.createBendsAsNeeded=r.DEFAULT_CREATE_BENDS_AS_NEEDED,this.uniformLeafNodeSizes=r.DEFAULT_UNIFORM_LEAF_NODE_SIZES),this.animationDuringLayout&&(this.animationOnLayout=!1)},g.prototype.transform=function(t){if(null==t)this.transform(new l(0,0));else{var e=new c,i=this.graphManager.getRoot().updateLeftTop();if(null!=i){e.setWorldOrgX(t.x),e.setWorldOrgY(t.y),e.setDeviceOrgX(i.x),e.setDeviceOrgY(i.y);for(var n=this.getAllNodes(),r=0;r<n.length;r++)n[r].transform(e)}}},g.prototype.positionNodesRandomly=function(t){if(null==t)this.positionNodesRandomly(this.getGraphManager().getRoot()),this.getGraphManager().getRoot().updateBounds(!0);else for(var e,i,n=t.getNodes(),r=0;r<n.length;r++)null==(i=(e=n[r]).getChild())||0==i.getNodes().length?e.scatter():(this.positionNodesRandomly(i),e.updateBounds())},g.prototype.getFlatForest=function(){for(var t=[],e=!0,i=this.graphManager.getRoot().getNodes(),r=!0,o=0;o<i.length;o++)null!=i[o].getChild()&&(r=!1);if(!r)return t;var s=new Set,a=[],h=new Map,l=[];for(l=l.concat(i);l.length>0&&e;){for(a.push(l[0]);a.length>0&&e;){var c=a[0];a.splice(0,1),s.add(c);var d=c.getEdges();for(o=0;o<d.length;o++){var g=d[o].getOtherEnd(c);if(h.get(c)!=g){if(s.has(g)){e=!1;break}a.push(g),h.set(g,c)}}}if(e){var u=[].concat(n(s));for(t.push(u),o=0;o<u.length;o++){var f=u[o],p=l.indexOf(f);p>-1&&l.splice(p,1)}s=new Set,h=new Map}else t=[]}return t},g.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,n=this.graphManager.calcLowestCommonAncestor(t.source,t.target),r=0;r<t.bendpoints.length;r++){var o=this.newNode(null);o.setRect(new Point(0,0),new Dimension(1,1)),n.add(o);var s=this.newEdge(null);this.graphManager.add(s,i,o),e.add(o),i=o}return s=this.newEdge(null),this.graphManager.add(s,i,t.target),this.edgeToDummyNodes.set(t,e),t.isInterGraph()?this.graphManager.remove(t):n.remove(t),e},g.prototype.createBendpointsFromDummyNodes=function(){var t=[];t=t.concat(this.graphManager.getAllEdges()),t=[].concat(n(this.edgeToDummyNodes.keys())).concat(t);for(var e=0;e<t.length;e++){var i=t[e];if(i.bendpoints.length>0){for(var r=this.edgeToDummyNodes.get(i),o=0;o<r.length;o++){var s=r[o],a=new l(s.getCenterX(),s.getCenterY()),h=i.bendpoints.get(o);h.x=a.x,h.y=a.y,s.getOwner().remove(s)}this.graphManager.add(i,i.source,i.target)}}},g.transform=function(t,e,i,n){if(null!=i&&null!=n){var r=e;return t<=50?r-=(e-e/i)/50*(50-t):r+=(e*n-e)/50*(t-50),r}var o,s;return t<=50?(o=9*e/500,s=e/10):(o=9*e/50,s=-8*e),o*t+s},g.findCenterOfTree=function(t){var e=[];e=e.concat(t);var i=[],n=new Map,r=!1,o=null;1!=e.length&&2!=e.length||(r=!0,o=e[0]);for(var s=0;s<e.length;s++){var a=(c=e[s]).getNeighborsList().size;n.set(c,c.getNeighborsList().size),1==a&&i.push(c)}var h=[];for(h=h.concat(i);!r;){var l=[];for(l=l.concat(h),h=[],s=0;s<e.length;s++){var c=e[s],d=e.indexOf(c);d>=0&&e.splice(d,1),c.getNeighborsList().forEach(function(t){if(i.indexOf(t)<0){var e=n.get(t)-1;1==e&&h.push(t),n.set(t,e)}})}i=i.concat(h),1!=e.length&&2!=e.length||(r=!0,o=e[0])}return o},g.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=g},function(t,e,i){"use strict";function n(){}n.seed=1,n.x=0,n.nextDouble=function(){return n.x=1e4*Math.sin(n.seed++),n.x-Math.floor(n.x)},t.exports=n},function(t,e,i){"use strict";var n=i(5);function r(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}r.prototype.getWorldOrgX=function(){return this.lworldOrgX},r.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},r.prototype.getWorldOrgY=function(){return this.lworldOrgY},r.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},r.prototype.getWorldExtX=function(){return this.lworldExtX},r.prototype.setWorldExtX=function(t){this.lworldExtX=t},r.prototype.getWorldExtY=function(){return this.lworldExtY},r.prototype.setWorldExtY=function(t){this.lworldExtY=t},r.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},r.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},r.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},r.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},r.prototype.getDeviceExtX=function(){return this.ldeviceExtX},r.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},r.prototype.getDeviceExtY=function(){return this.ldeviceExtY},r.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},r.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},r.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},r.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},r.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},r.prototype.inverseTransformPoint=function(t){return new n(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=r},function(t,e,i){"use strict";var n=i(15),r=i(4),o=i(0),s=i(8),a=i(9);function h(){n.call(this),this.useSmartIdealEdgeLengthCalculation=r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=r.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=r.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=r.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=r.MAX_ITERATIONS}for(var l in h.prototype=Object.create(n.prototype),n)h[l]=n[l];h.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,n,s,a,h,l=this.getGraphManager().getAllEdges(),c=0;c<l.length;c++)e=(t=l[c]).idealLength,t.isInterGraph&&(n=t.getSource(),s=t.getTarget(),a=t.getSourceInLca().getEstimatedSize(),h=t.getTargetInLca().getEstimatedSize(),this.useSmartIdealEdgeLengthCalculation&&(t.idealLength+=a+h-2*o.SIMPLE_NODE_SIZE),i=t.getLca().getInclusionTreeDepth(),t.idealLength+=e*r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR*(n.getInclusionTreeDepth()+s.getInclusionTreeDepth()-2*i))},h.prototype.initSpringEmbedder=function(){var t=this.getAllNodes().length;this.incremental?(t>r.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*r.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-r.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>r.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(r.COOLING_ADAPTATION_FACTOR,1-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*(1-r.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i<e.length;i++)t=e[i],this.calcSpringForce(t,t.idealLength)},h.prototype.calcRepulsionForces=function(){var t,e,i,n,o,s=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t<h.length;t++)i=h[t],this.calculateRepulsionForceOfANode(i,o,s,a),o.add(i);else for(t=0;t<h.length;t++)for(i=h[t],e=t+1;e<h.length;e++)n=h[e],i.getOwner()==n.getOwner()&&this.calcRepulsionForce(i,n)},h.prototype.calcGravitationalForces=function(){for(var t,e=this.getAllNodesToApplyGravitation(),i=0;i<e.length;i++)t=e[i],this.calcGravitationalForce(t)},h.prototype.moveNodes=function(){for(var t=this.getAllNodes(),e=0;e<t.length;e++)t[e].move()},h.prototype.calcSpringForce=function(t,e){var i,n,r,o,s=t.getSource(),a=t.getTarget();if(this.uniformLeafNodeSizes&&null==s.getChild()&&null==a.getChild())t.updateLengthSimple();else if(t.updateLength(),t.isOverlapingSourceAndTarget)return;0!=(i=t.getLength())&&(r=(n=t.edgeElasticity*(i-e))*(t.lengthX/i),o=n*(t.lengthY/i),s.springForceX+=r,s.springForceY+=o,a.springForceX-=r,a.springForceY-=o)},h.prototype.calcRepulsionForce=function(t,e){var i,n,o,h,l,c,d,g=t.getRect(),u=e.getRect(),f=new Array(2),p=new Array(4);if(g.intersects(u)){s.calcSeparationAmount(g,u,f,r.DEFAULT_EDGE_LENGTH/2),c=2*f[0],d=2*f[1];var v=t.noOfChildren*e.noOfChildren/(t.noOfChildren+e.noOfChildren);t.repulsionForceX-=v*c,t.repulsionForceY-=v*d,e.repulsionForceX+=v*c,e.repulsionForceY+=v*d}else this.uniformLeafNodeSizes&&null==t.getChild()&&null==e.getChild()?(i=u.getCenterX()-g.getCenterX(),n=u.getCenterY()-g.getCenterY()):(s.getIntersection(g,u,p),i=p[2]-p[0],n=p[3]-p[1]),Math.abs(i)<r.MIN_REPULSION_DIST&&(i=a.sign(i)*r.MIN_REPULSION_DIST),Math.abs(n)<r.MIN_REPULSION_DIST&&(n=a.sign(n)*r.MIN_REPULSION_DIST),o=i*i+n*n,h=Math.sqrt(o),c=(l=(t.nodeRepulsion/2+e.nodeRepulsion/2)*t.noOfChildren*e.noOfChildren/o)*i/h,d=l*n/h,t.repulsionForceX-=c,t.repulsionForceY-=d,e.repulsionForceX+=c,e.repulsionForceY+=d},h.prototype.calcGravitationalForce=function(t){var e,i,n,r,o,s,a,h;i=((e=t.getOwner()).getRight()+e.getLeft())/2,n=(e.getTop()+e.getBottom())/2,r=t.getCenterX()-i,o=t.getCenterY()-n,s=Math.abs(r)+t.getWidth()/2,a=Math.abs(o)+t.getHeight()/2,t.getOwner()==this.graphManager.getRoot()?(s>(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement<this.totalDisplacementThreshold,this.oldTotalDisplacement=this.totalDisplacement,t||e},h.prototype.animate=function(){this.animationDuringLayout&&!this.isSubLayout&&(this.notAnimatedIterations==this.animationPeriod?(this.update(),this.notAnimatedIterations=0):this.notAnimatedIterations++)},h.prototype.calcNoOfChildrenForAllNodes=function(){for(var t,e=this.graphManager.getAllNodes(),i=0;i<e.length;i++)(t=e[i]).noOfChildren=t.getNoOfChildren()},h.prototype.calcGrid=function(t){var e,i;e=parseInt(Math.ceil((t.getRight()-t.getLeft())/this.repulsionRange)),i=parseInt(Math.ceil((t.getBottom()-t.getTop())/this.repulsionRange));for(var n=new Array(e),r=0;r<e;r++)n[r]=new Array(i);for(r=0;r<e;r++)for(var o=0;o<i;o++)n[r][o]=new Array;return n},h.prototype.addNodeToGrid=function(t,e,i){var n,r,o,s;n=parseInt(Math.floor((t.getRect().x-e)/this.repulsionRange)),r=parseInt(Math.floor((t.getRect().width+t.getRect().x-e)/this.repulsionRange)),o=parseInt(Math.floor((t.getRect().y-i)/this.repulsionRange)),s=parseInt(Math.floor((t.getRect().height+t.getRect().y-i)/this.repulsionRange));for(var a=n;a<=r;a++)for(var h=o;h<=s;h++)this.grid[a][h].push(t),t.setGridCoordinates(n,r,o,s)},h.prototype.updateGrid=function(){var t,e,i=this.getAllNodes();for(this.grid=this.calcGrid(this.graphManager.getRoot()),t=0;t<i.length;t++)e=i[t],this.addNodeToGrid(e,this.graphManager.getRoot().getLeft(),this.graphManager.getRoot().getTop())},h.prototype.calculateRepulsionForceOfANode=function(t,e,i,n){if(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&i||n){var o,s=new Set;t.surrounding=new Array;for(var a=this.grid,h=t.startX-1;h<t.finishX+2;h++)for(var l=t.startY-1;l<t.finishY+2;l++)if(!(h<0||l<0||h>=a.length||l>=a[0].length))for(var c=0;c<a[h][l].length;c++)if(o=a[h][l][c],t.getOwner()==o.getOwner()&&t!=o&&!e.has(o)&&!s.has(o)){var d=Math.abs(t.getCenterX()-o.getCenterX())-(t.getWidth()/2+o.getWidth()/2),g=Math.abs(t.getCenterY()-o.getCenterY())-(t.getHeight()/2+o.getHeight()/2);d<=this.repulsionRange&&g<=this.repulsionRange&&s.add(o)}t.surrounding=[].concat(function(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}(s))}for(h=0;h<t.surrounding.length;h++)this.calcRepulsionForce(t,t.surrounding[h])},h.prototype.calcRepulsionRange=function(){return 0},t.exports=h},function(t,e,i){"use strict";var n=i(1),r=i(4);function o(t,e,i){n.call(this,t,e,i),this.idealLength=r.DEFAULT_EDGE_LENGTH,this.edgeElasticity=r.DEFAULT_SPRING_STRENGTH}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];t.exports=o},function(t,e,i){"use strict";var n=i(3),r=i(4);function o(t,e,i,o){n.call(this,t,e,i,o),this.nodeRepulsion=r.DEFAULT_REPULSION_STRENGTH,this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0,this.startX=0,this.finishX=0,this.startY=0,this.finishY=0,this.surrounding=[]}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];o.prototype.setGridCoordinates=function(t,e,i,n){this.startX=t,this.finishX=e,this.startY=i,this.finishY=n},t.exports=o},function(t,e,i){"use strict";function n(t,e){this.width=0,this.height=0,null!==t&&null!==e&&(this.height=e,this.width=t)}n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(t){this.width=t},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(t){this.height=t},t.exports=n},function(t,e,i){"use strict";var n=i(14);function r(){this.map={},this.keys=[]}r.prototype.put=function(t,e){var i=n.createID(t);this.contains(i)||(this.map[i]=e,this.keys.push(t))},r.prototype.contains=function(t){return n.createID(t),null!=this.map[t]},r.prototype.get=function(t){var e=n.createID(t);return this.map[e]},r.prototype.keySet=function(){return this.keys},t.exports=r},function(t,e,i){"use strict";var n=i(14);function r(){this.set={}}r.prototype.add=function(t){var e=n.createID(t);this.contains(e)||(this.set[e]=t)},r.prototype.remove=function(t){delete this.set[n.createID(t)]},r.prototype.clear=function(){this.set={}},r.prototype.contains=function(t){return this.set[n.createID(t)]==t},r.prototype.isEmpty=function(){return 0===this.size()},r.prototype.size=function(){return Object.keys(this.set).length},r.prototype.addAllTo=function(t){for(var e=Object.keys(this.set),i=e.length,n=0;n<i;n++)t.push(this.set[e[n]])},r.prototype.size=function(){return Object.keys(this.set).length},r.prototype.addAll=function(t){for(var e=t.length,i=0;i<e;i++){var n=t[i];this.add(n)}},t.exports=r},function(t,e,i){"use strict";function n(){}n.multMat=function(t,e){for(var i=[],n=0;n<t.length;n++){i[n]=[];for(var r=0;r<e[0].length;r++){i[n][r]=0;for(var o=0;o<t[0].length;o++)i[n][r]+=t[n][o]*e[o][r]}}return i},n.transpose=function(t){for(var e=[],i=0;i<t[0].length;i++){e[i]=[];for(var n=0;n<t.length;n++)e[i][n]=t[n][i]}return e},n.multCons=function(t,e){for(var i=[],n=0;n<t.length;n++)i[n]=t[n]*e;return i},n.minusOp=function(t,e){for(var i=[],n=0;n<t.length;n++)i[n]=t[n]-e[n];return i},n.dotProduct=function(t,e){for(var i=0,n=0;n<t.length;n++)i+=t[n]*e[n];return i},n.mag=function(t){return Math.sqrt(this.dotProduct(t,t))},n.normalize=function(t){for(var e=[],i=this.mag(t),n=0;n<t.length;n++)e[n]=t[n]/i;return e},n.multGamma=function(t){for(var e=[],i=0,n=0;n<t.length;n++)i+=t[n];i*=-1/t.length;for(var r=0;r<t.length;r++)e[r]=i+t[r];return e},n.multL=function(t,e,i){for(var n=[],r=[],o=[],s=0;s<e[0].length;s++){for(var a=0,h=0;h<e.length;h++)a+=-.5*e[h][s]*t[h];r[s]=a}for(var l=0;l<i.length;l++){for(var c=0,d=0;d<i.length;d++)c+=i[l][d]*r[d];o[l]=c}for(var g=0;g<e.length;g++){for(var u=0,f=0;f<e[0].length;f++)u+=e[g][f]*o[f];n[g]=u}return n},t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=i(11),o=function(){function t(e,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),null===i&&void 0===i||(this.compareFunction=this._defaultCompareFunction);var n=void 0;n=e instanceof r?e.size():e.length,this._quicksort(e,0,n-1)}return n(t,[{key:"_quicksort",value:function(t,e,i){if(e<i){var n=this._partition(t,e,i);this._quicksort(t,e,n),this._quicksort(t,n+1,i)}}},{key:"_partition",value:function(t,e,i){for(var n=this._get(t,e),r=e,o=i;;){for(;this.compareFunction(n,this._get(t,o));)o--;for(;this.compareFunction(this._get(t,r),n);)r++;if(!(r<o))return o;this._swap(t,r,o),r++,o--}}},{key:"_get",value:function(t,e){return t instanceof r?t.get_object_at(e):t[e]}},{key:"_set",value:function(t,e,i){t instanceof r?t.set_object_at(e,i):t[e]=i}},{key:"_swap",value:function(t,e,i){var n=this._get(t,e);this._set(t,e,this._get(t,i)),this._set(t,i,n)}},{key:"_defaultCompareFunction",value:function(t,e){return e>t}}]),t}();t.exports=o},function(t,e,i){"use strict";function n(){}n.svd=function(t){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=t.length,this.n=t[0].length;var e=Math.min(this.m,this.n);this.s=function(t){for(var e=[];t-- >0;)e.push(0);return e}(Math.min(this.m+1,this.n)),this.U=function t(e){if(0==e.length)return 0;for(var i=[],n=0;n<e[0];n++)i.push(t(e.slice(1)));return i}([this.m,e]),this.V=function(t){return function t(e){if(0==e.length)return 0;for(var i=[],n=0;n<e[0];n++)i.push(t(e.slice(1)));return i}(t)}([this.n,this.n]);for(var i=function(t){for(var e=[];t-- >0;)e.push(0);return e}(this.n),r=function(t){for(var e=[];t-- >0;)e.push(0);return e}(this.m),o=Math.min(this.m-1,this.n),s=Math.max(0,Math.min(this.n-2,this.m)),a=0;a<Math.max(o,s);a++){if(a<o){this.s[a]=0;for(var h=a;h<this.m;h++)this.s[a]=n.hypot(this.s[a],t[h][a]);if(0!==this.s[a]){t[a][a]<0&&(this.s[a]=-this.s[a]);for(var l=a;l<this.m;l++)t[l][a]/=this.s[a];t[a][a]+=1}this.s[a]=-this.s[a]}for(var c=a+1;c<this.n;c++){if(function(t,e){return t&&e}(a<o,0!==this.s[a])){for(var d=0,g=a;g<this.m;g++)d+=t[g][a]*t[g][c];d=-d/t[a][a];for(var u=a;u<this.m;u++)t[u][c]+=d*t[u][a]}i[c]=t[a][c]}if(function(t,e){return e}(0,a<o))for(var f=a;f<this.m;f++)this.U[f][a]=t[f][a];if(a<s){i[a]=0;for(var p=a+1;p<this.n;p++)i[a]=n.hypot(i[a],i[p]);if(0!==i[a]){i[a+1]<0&&(i[a]=-i[a]);for(var v=a+1;v<this.n;v++)i[v]/=i[a];i[a+1]+=1}if(i[a]=-i[a],function(t,e){return t&&e}(a+1<this.m,0!==i[a])){for(var y=a+1;y<this.m;y++)r[y]=0;for(var m=a+1;m<this.n;m++)for(var E=a+1;E<this.m;E++)r[E]+=i[m]*t[E][m];for(var N=a+1;N<this.n;N++)for(var T=-i[N]/i[a+1],A=a+1;A<this.m;A++)t[A][N]+=T*r[A]}for(var w=a+1;w<this.n;w++)this.V[w][a]=i[w]}}var L=Math.min(this.n,this.m+1);o<this.n&&(this.s[o]=t[o][o]),this.m<L&&(this.s[L-1]=0),s+1<L&&(i[s]=t[s][L-1]),i[L-1]=0;for(var I=o;I<e;I++){for(var C=0;C<this.m;C++)this.U[C][I]=0;this.U[I][I]=1}for(var _=o-1;_>=0;_--)if(0!==this.s[_]){for(var M=_+1;M<e;M++){for(var x=0,O=_;O<this.m;O++)x+=this.U[O][_]*this.U[O][M];x=-x/this.U[_][_];for(var D=_;D<this.m;D++)this.U[D][M]+=x*this.U[D][_]}for(var R=_;R<this.m;R++)this.U[R][_]=-this.U[R][_];this.U[_][_]=1+this.U[_][_];for(var b=0;b<_-1;b++)this.U[b][_]=0}else{for(var G=0;G<this.m;G++)this.U[G][_]=0;this.U[_][_]=1}for(var F=this.n-1;F>=0;F--){if(function(t,e){return t&&e}(F<s,0!==i[F]))for(var S=F+1;S<e;S++){for(var P=0,U=F+1;U<this.n;U++)P+=this.V[U][F]*this.V[U][S];P=-P/this.V[F+1][F];for(var Y=F+1;Y<this.n;Y++)this.V[Y][S]+=P*this.V[Y][F]}for(var k=0;k<this.n;k++)this.V[k][F]=0;this.V[F][F]=1}for(var H=L-1,X=Math.pow(2,-52),z=Math.pow(2,-966);L>0;){var V=void 0,B=void 0;for(V=L-2;V>=-1&&-1!==V;V--)if(Math.abs(i[V])<=z+X*(Math.abs(this.s[V])+Math.abs(this.s[V+1]))){i[V]=0;break}if(V===L-2)B=4;else{var W=void 0;for(W=L-1;W>=V&&W!==V;W--){var j=(W!==L?Math.abs(i[W]):0)+(W!==V+1?Math.abs(i[W-1]):0);if(Math.abs(this.s[W])<=z+X*j){this.s[W]=0;break}}W===V?B=3:W===L-1?B=1:(B=2,V=W)}switch(V++,B){case 1:var $=i[L-2];i[L-2]=0;for(var q=L-2;q>=V;q--){var K=n.hypot(this.s[q],$),Z=this.s[q]/K,Q=$/K;this.s[q]=K,q!==V&&($=-Q*i[q-1],i[q-1]=Z*i[q-1]);for(var J=0;J<this.n;J++)K=Z*this.V[J][q]+Q*this.V[J][L-1],this.V[J][L-1]=-Q*this.V[J][q]+Z*this.V[J][L-1],this.V[J][q]=K}break;case 2:var tt=i[V-1];i[V-1]=0;for(var et=V;et<L;et++){var it=n.hypot(this.s[et],tt),nt=this.s[et]/it,rt=tt/it;this.s[et]=it,tt=-rt*i[et],i[et]=nt*i[et];for(var ot=0;ot<this.m;ot++)it=nt*this.U[ot][et]+rt*this.U[ot][V-1],this.U[ot][V-1]=-rt*this.U[ot][et]+nt*this.U[ot][V-1],this.U[ot][et]=it}break;case 3:var st=Math.max(Math.max(Math.max(Math.max(Math.abs(this.s[L-1]),Math.abs(this.s[L-2])),Math.abs(i[L-2])),Math.abs(this.s[V])),Math.abs(i[V])),at=this.s[L-1]/st,ht=this.s[L-2]/st,lt=i[L-2]/st,ct=this.s[V]/st,dt=i[V]/st,gt=((ht+at)*(ht-at)+lt*lt)/2,ut=at*lt*(at*lt),ft=0;(function(t,e){return t||e})(0!==gt,0!==ut)&&(ft=Math.sqrt(gt*gt+ut),gt<0&&(ft=-ft),ft=ut/(gt+ft));for(var pt=(ct+at)*(ct-at)+ft,vt=ct*dt,yt=V;yt<L-1;yt++){var mt=n.hypot(pt,vt),Et=pt/mt,Nt=vt/mt;yt!==V&&(i[yt-1]=mt),pt=Et*this.s[yt]+Nt*i[yt],i[yt]=Et*i[yt]-Nt*this.s[yt],vt=Nt*this.s[yt+1],this.s[yt+1]=Et*this.s[yt+1];for(var Tt=0;Tt<this.n;Tt++)mt=Et*this.V[Tt][yt]+Nt*this.V[Tt][yt+1],this.V[Tt][yt+1]=-Nt*this.V[Tt][yt]+Et*this.V[Tt][yt+1],this.V[Tt][yt]=mt;if(Et=pt/(mt=n.hypot(pt,vt)),Nt=vt/mt,this.s[yt]=mt,pt=Et*i[yt]+Nt*this.s[yt+1],this.s[yt+1]=-Nt*i[yt]+Et*this.s[yt+1],vt=Nt*i[yt+1],i[yt+1]=Et*i[yt+1],yt<this.m-1)for(var At=0;At<this.m;At++)mt=Et*this.U[At][yt]+Nt*this.U[At][yt+1],this.U[At][yt+1]=-Nt*this.U[At][yt]+Et*this.U[At][yt+1],this.U[At][yt]=mt}i[L-2]=pt;break;case 4:if(this.s[V]<=0){this.s[V]=this.s[V]<0?-this.s[V]:0;for(var wt=0;wt<=H;wt++)this.V[wt][V]=-this.V[wt][V]}for(;V<H&&!(this.s[V]>=this.s[V+1]);){var Lt=this.s[V];if(this.s[V]=this.s[V+1],this.s[V+1]=Lt,V<this.n-1)for(var It=0;It<this.n;It++)Lt=this.V[It][V+1],this.V[It][V+1]=this.V[It][V],this.V[It][V]=Lt;if(V<this.m-1)for(var Ct=0;Ct<this.m;Ct++)Lt=this.U[Ct][V+1],this.U[Ct][V+1]=this.U[Ct][V],this.U[Ct][V]=Lt;V++}L--}}return{U:this.U,V:this.V,S:this.s}},n.hypot=function(t,e){var i=void 0;return Math.abs(t)>Math.abs(e)?(i=e/t,i=Math.abs(t)*Math.sqrt(1+i*i)):0!=e?(i=t/e,i=Math.abs(e)*Math.sqrt(1+i*i)):i=0,i},t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=function(){function t(e,i){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=n,this.mismatch_penalty=r,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s<this.iMax;s++){this.grid[s]=new Array(this.jMax);for(var a=0;a<this.jMax;a++)this.grid[s][a]=0}this.tracebackGrid=new Array(this.iMax);for(var h=0;h<this.iMax;h++){this.tracebackGrid[h]=new Array(this.jMax);for(var l=0;l<this.jMax;l++)this.tracebackGrid[h][l]=[null,null,null]}this.alignments=[],this.score=-1,this.computeGrids()}return n(t,[{key:"getScore",value:function(){return this.score}},{key:"getAlignments",value:function(){return this.alignments}},{key:"computeGrids",value:function(){for(var t=1;t<this.jMax;t++)this.grid[0][t]=this.grid[0][t-1]+this.gap_penalty,this.tracebackGrid[0][t]=[!1,!1,!0];for(var e=1;e<this.iMax;e++)this.grid[e][0]=this.grid[e-1][0]+this.gap_penalty,this.tracebackGrid[e][0]=[!1,!0,!1];for(var i=1;i<this.iMax;i++)for(var n=1;n<this.jMax;n++){var r=[this.sequence1[i-1]===this.sequence2[n-1]?this.grid[i-1][n-1]+this.match_score:this.grid[i-1][n-1]+this.mismatch_penalty,this.grid[i-1][n]+this.gap_penalty,this.grid[i][n-1]+this.gap_penalty],o=this.arrayAllMaxIndexes(r);this.grid[i][n]=r[o[0]],this.tracebackGrid[i][n]=[o.includes(0),o.includes(1),o.includes(2)]}this.score=this.grid[this.iMax-1][this.jMax-1]}},{key:"alignmentTraceback",value:function(){var t=[];for(t.push({pos:[this.sequence1.length,this.sequence2.length],seq1:"",seq2:""});t[0];){var e=t[0],i=this.tracebackGrid[e.pos[0]][e.pos[1]];i[0]&&t.push({pos:[e.pos[0]-1,e.pos[1]-1],seq1:this.sequence1[e.pos[0]-1]+e.seq1,seq2:this.sequence2[e.pos[1]-1]+e.seq2}),i[1]&&t.push({pos:[e.pos[0]-1,e.pos[1]],seq1:this.sequence1[e.pos[0]-1]+e.seq1,seq2:"-"+e.seq2}),i[2]&&t.push({pos:[e.pos[0],e.pos[1]-1],seq1:"-"+e.seq1,seq2:this.sequence2[e.pos[1]-1]+e.seq2}),0===e.pos[0]&&0===e.pos[1]&&this.alignments.push({sequence1:e.seq1,sequence2:e.seq2}),t.shift()}return this.alignments}},{key:"getAllIndexes",value:function(t,e){for(var i=[],n=-1;-1!==(n=t.indexOf(e,n+1));)i.push(n);return i}},{key:"arrayAllMaxIndexes",value:function(t){return this.getAllIndexes(t,Math.max.apply(null,t))}}]),t}();t.exports=r},function(t,e,i){"use strict";var n=function(){};n.FDLayout=i(18),n.FDLayoutConstants=i(4),n.FDLayoutEdge=i(19),n.FDLayoutNode=i(20),n.DimensionD=i(21),n.HashMap=i(22),n.HashSet=i(23),n.IGeometry=i(8),n.IMath=i(9),n.Integer=i(10),n.Point=i(12),n.PointD=i(5),n.RandomSeed=i(16),n.RectangleD=i(13),n.Transform=i(17),n.UniqueIDGeneretor=i(14),n.Quicksort=i(25),n.LinkedList=i(11),n.LGraphObject=i(2),n.LGraph=i(6),n.LEdge=i(1),n.LGraphManager=i(7),n.LNode=i(3),n.Layout=i(15),n.LayoutConstants=i(0),n.NeedlemanWunsch=i(27),n.Matrix=i(24),n.SVD=i(26),t.exports=n},function(t,e,i){"use strict";function n(){this.listeners=[]}var r=n.prototype;r.addListener=function(t,e){this.listeners.push({event:t,callback:e})},r.removeListener=function(t,e){for(var i=this.listeners.length;i>=0;i--){var n=this.listeners[i];n.event===t&&n.callback===e&&this.listeners.splice(i,1)}},r.emit=function(t,e){for(var i=0;i<this.listeners.length;i++){var n=this.listeners[i];t===n.event&&n.callback(e)}},t.exports=n}])},t.exports=e()},22775:(t,e,i)=>{"use strict";function n(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}i.d(e,{S:()=>n}),(0,i(27293).K2)(n,"populateCommonDb")},26219:function(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={658:t=>{t.exports=null!=Object.assign?Object.assign.bind(Object):function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];return i.forEach(function(e){Object.keys(e).forEach(function(i){return t[i]=e[i]})}),t}},548:(t,e,i)=>{var n=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var i=[],n=!0,r=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(i.push(s.value),!e||i.length!==e);n=!0);}catch(h){r=!0,o=h}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=i(140).layoutBase.LinkedList,o={getTopMostNodes:function(t){for(var e={},i=0;i<t.length;i++)e[t[i].id()]=!0;var n=t.filter(function(t,i){"number"==typeof t&&(t=i);for(var n=t.parent()[0];null!=n;){if(e[n.id()])return!1;n=n.parent()[0]}return!0});return n},connectComponents:function(t,e,i,n){var o=new r,s=new Set,a=[],h=void 0,l=void 0,c=void 0,d=!1,g=1,u=[],f=[],p=function(){var n=t.collection();f.push(n);var r=i[0],p=t.collection();p.merge(r).merge(r.descendants().intersection(e)),a.push(r),p.forEach(function(t){o.push(t),s.add(t),n.merge(t)});for(var v=function(){r=o.shift();var l=t.collection();r.neighborhood().nodes().forEach(function(t){e.intersection(r.edgesWith(t)).length>0&&l.merge(t)});for(var c=0;c<l.length;c++){var d=l[c];null==(h=i.intersection(d.union(d.ancestors())))||s.has(h[0])||h.union(h.descendants()).forEach(function(t){o.push(t),s.add(t),n.merge(t),i.has(t)&&a.push(t)})}};0!=o.length;)v();if(n.forEach(function(t){e.intersection(t.connectedEdges()).forEach(function(t){n.has(t.source())&&n.has(t.target())&&n.merge(t)})}),a.length==i.length&&(d=!0),!d||d&&g>1){l=a[0],c=l.connectedEdges().length,a.forEach(function(t){t.connectedEdges().length<c&&(c=t.connectedEdges().length,l=t)}),u.push(l.id());var y=t.collection();y.merge(a[0]),a.forEach(function(t){y.merge(t)}),a=[],i=i.difference(y),g++}};do{p()}while(!d);return n&&u.length>0&&n.set("dummy"+(n.size+1),u),f},relocateComponent:function(t,e,i){if(!i.fixedNodeConstraint){var r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;if("draft"==i.quality){var h=!0,l=!1,c=void 0;try{for(var d,g=e.nodeIndexes[Symbol.iterator]();!(h=(d=g.next()).done);h=!0){var u=d.value,f=n(u,2),p=f[0],v=f[1],y=i.cy.getElementById(p);if(y){var m=y.boundingBox(),E=e.xCoords[v]-m.w/2,N=e.xCoords[v]+m.w/2,T=e.yCoords[v]-m.h/2,A=e.yCoords[v]+m.h/2;E<r&&(r=E),N>o&&(o=N),T<s&&(s=T),A>a&&(a=A)}}}catch(_){l=!0,c=_}finally{try{!h&&g.return&&g.return()}finally{if(l)throw c}}var w=t.x-(o+r)/2,L=t.y-(a+s)/2;e.xCoords=e.xCoords.map(function(t){return t+w}),e.yCoords=e.yCoords.map(function(t){return t+L})}else{Object.keys(e).forEach(function(t){var i=e[t],n=i.getRect().x,h=i.getRect().x+i.getRect().width,l=i.getRect().y,c=i.getRect().y+i.getRect().height;n<r&&(r=n),h>o&&(o=h),l<s&&(s=l),c>a&&(a=c)});var I=t.x-(o+r)/2,C=t.y-(a+s)/2;Object.keys(e).forEach(function(t){var i=e[t];i.setCenter(i.getCenterX()+I,i.getCenterY()+C)})}}},calcBoundingBox:function(t,e,i,n){for(var r=Number.MAX_SAFE_INTEGER,o=Number.MIN_SAFE_INTEGER,s=Number.MAX_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER,h=void 0,l=void 0,c=void 0,d=void 0,g=t.descendants().not(":parent"),u=g.length,f=0;f<u;f++){var p=g[f];r>(h=e[n.get(p.id())]-p.width()/2)&&(r=h),o<(l=e[n.get(p.id())]+p.width()/2)&&(o=l),s>(c=i[n.get(p.id())]-p.height()/2)&&(s=c),a<(d=i[n.get(p.id())]+p.height()/2)&&(a=d)}var v={};return v.topLeftX=r,v.topLeftY=s,v.width=o-r,v.height=a-s,v},calcParentsWithoutChildren:function(t,e){var i=t.collection();return e.nodes(":parent").forEach(function(t){var e=!1;t.children().forEach(function(t){"none"!=t.css("display")&&(e=!0)}),e||i.merge(t)}),i}};t.exports=o},816:(t,e,i)=>{var n=i(548),r=i(140).CoSELayout,o=i(140).CoSENode,s=i(140).layoutBase.PointD,a=i(140).layoutBase.DimensionD,h=i(140).layoutBase.LayoutConstants,l=i(140).layoutBase.FDLayoutConstants,c=i(140).CoSEConstants;t.exports={coseLayout:function(t,e){var i=t.cy,d=t.eles,g=d.nodes(),u=d.edges(),f=void 0,p=void 0,v=void 0,y={};t.randomize&&(f=e.nodeIndexes,p=e.xCoords,v=e.yCoords);var m=function(t){return"function"==typeof t},E=function(t,e){return m(t)?t(e):t},N=n.calcParentsWithoutChildren(i,d);null!=t.nestingFactor&&(c.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.nestingFactor),null!=t.gravity&&(c.DEFAULT_GRAVITY_STRENGTH=l.DEFAULT_GRAVITY_STRENGTH=t.gravity),null!=t.numIter&&(c.MAX_ITERATIONS=l.MAX_ITERATIONS=t.numIter),null!=t.gravityRange&&(c.DEFAULT_GRAVITY_RANGE_FACTOR=l.DEFAULT_GRAVITY_RANGE_FACTOR=t.gravityRange),null!=t.gravityCompound&&(c.DEFAULT_COMPOUND_GRAVITY_STRENGTH=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.gravityCompound),null!=t.gravityRangeCompound&&(c.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.gravityRangeCompound),null!=t.initialEnergyOnIncremental&&(c.DEFAULT_COOLING_FACTOR_INCREMENTAL=l.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.initialEnergyOnIncremental),null!=t.tilingCompareBy&&(c.TILING_COMPARE_BY=t.tilingCompareBy),"proof"==t.quality?h.QUALITY=2:h.QUALITY=0,c.NODE_DIMENSIONS_INCLUDE_LABELS=l.NODE_DIMENSIONS_INCLUDE_LABELS=h.NODE_DIMENSIONS_INCLUDE_LABELS=t.nodeDimensionsIncludeLabels,c.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!t.randomize,c.ANIMATE=l.ANIMATE=h.ANIMATE=t.animate,c.TILE=t.tile,c.TILING_PADDING_VERTICAL="function"==typeof t.tilingPaddingVertical?t.tilingPaddingVertical.call():t.tilingPaddingVertical,c.TILING_PADDING_HORIZONTAL="function"==typeof t.tilingPaddingHorizontal?t.tilingPaddingHorizontal.call():t.tilingPaddingHorizontal,c.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!0,c.PURE_INCREMENTAL=!t.randomize,h.DEFAULT_UNIFORM_LEAF_NODE_SIZES=t.uniformNodeDimensions,"transformed"==t.step&&(c.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,c.ENFORCE_CONSTRAINTS=!1,c.APPLY_LAYOUT=!1),"enforced"==t.step&&(c.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,c.ENFORCE_CONSTRAINTS=!0,c.APPLY_LAYOUT=!1),"cose"==t.step&&(c.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,c.ENFORCE_CONSTRAINTS=!1,c.APPLY_LAYOUT=!0),"all"==t.step&&(t.randomize?c.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:c.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,c.ENFORCE_CONSTRAINTS=!0,c.APPLY_LAYOUT=!0),t.fixedNodeConstraint||t.alignmentConstraint||t.relativePlacementConstraint?c.TREE_REDUCTION_ON_INCREMENTAL=!1:c.TREE_REDUCTION_ON_INCREMENTAL=!0;var T=new r,A=T.newGraphManager();return function t(e,i,r,h){for(var l=i.length,c=0;c<l;c++){var d=i[c],g=null;0==d.intersection(N).length&&(g=d.children());var u=void 0,m=d.layoutDimensions({nodeDimensionsIncludeLabels:h.nodeDimensionsIncludeLabels});if(null!=d.outerWidth()&&null!=d.outerHeight())if(h.randomize)if(d.isParent()){var T=n.calcBoundingBox(d,p,v,f);u=0==d.intersection(N).length?e.add(new o(r.graphManager,new s(T.topLeftX,T.topLeftY),new a(T.width,T.height))):e.add(new o(r.graphManager,new s(T.topLeftX,T.topLeftY),new a(parseFloat(m.w),parseFloat(m.h))))}else u=e.add(new o(r.graphManager,new s(p[f.get(d.id())]-m.w/2,v[f.get(d.id())]-m.h/2),new a(parseFloat(m.w),parseFloat(m.h))));else u=e.add(new o(r.graphManager,new s(d.position("x")-m.w/2,d.position("y")-m.h/2),new a(parseFloat(m.w),parseFloat(m.h))));else u=e.add(new o(this.graphManager));u.id=d.data("id"),u.nodeRepulsion=E(h.nodeRepulsion,d),u.paddingLeft=parseInt(d.css("padding")),u.paddingTop=parseInt(d.css("padding")),u.paddingRight=parseInt(d.css("padding")),u.paddingBottom=parseInt(d.css("padding")),h.nodeDimensionsIncludeLabels&&(u.labelWidth=d.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).w,u.labelHeight=d.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).h,u.labelPosVertical=d.css("text-valign"),u.labelPosHorizontal=d.css("text-halign")),y[d.data("id")]=u,isNaN(u.rect.x)&&(u.rect.x=0),isNaN(u.rect.y)&&(u.rect.y=0),null!=g&&g.length>0&&t(r.getGraphManager().add(r.newGraph(),u),g,r,h)}}(A.addRoot(),n.getTopMostNodes(g),T,t),function(e,i,n){for(var r=0,o=0,s=0;s<n.length;s++){var a=n[s],h=y[a.data("source")],d=y[a.data("target")];if(h&&d&&h!==d&&0==h.getEdgesBetween(d).length){var g=i.add(e.newEdge(),h,d);g.id=a.id(),g.idealLength=E(t.idealEdgeLength,a),g.edgeElasticity=E(t.edgeElasticity,a),r+=g.idealLength,o++}}null!=t.idealEdgeLength&&(o>0?c.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=r/o:m(t.idealEdgeLength)?c.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=50:c.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=t.idealEdgeLength,c.MIN_REPULSION_DIST=l.MIN_REPULSION_DIST=l.DEFAULT_EDGE_LENGTH/10,c.DEFAULT_RADIAL_SEPARATION=l.DEFAULT_EDGE_LENGTH)}(T,A,u),function(t,e){e.fixedNodeConstraint&&(t.constraints.fixedNodeConstraint=e.fixedNodeConstraint),e.alignmentConstraint&&(t.constraints.alignmentConstraint=e.alignmentConstraint),e.relativePlacementConstraint&&(t.constraints.relativePlacementConstraint=e.relativePlacementConstraint)}(T,t),T.runLayout(),y}}},212:(t,e,i)=>{var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=i(658),o=i(548),s=i(657).spectralLayout,a=i(816).coseLayout,h=Object.freeze({quality:"default",randomize:!0,animate:!0,animationDuration:1e3,animationEasing:void 0,fit:!0,padding:30,nodeDimensionsIncludeLabels:!1,uniformNodeDimensions:!1,packComponents:!0,step:"all",samplingType:!0,sampleSize:25,nodeSeparation:75,piTol:1e-7,nodeRepulsion:function(t){return 4500},idealEdgeLength:function(t){return 50},edgeElasticity:function(t){return.45},nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,tilingCompareBy:void 0,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.3,fixedNodeConstraint:void 0,alignmentConstraint:void 0,relativePlacementConstraint:void 0,ready:function(){},stop:function(){}}),l=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.options=r({},h,e)}return n(t,[{key:"run",value:function(){var t=this.options,e=t.cy,i=t.eles,n=[],r=[],h=void 0,l=[];!t.fixedNodeConstraint||Array.isArray(t.fixedNodeConstraint)&&0!=t.fixedNodeConstraint.length||(t.fixedNodeConstraint=void 0),t.alignmentConstraint&&(!t.alignmentConstraint.vertical||Array.isArray(t.alignmentConstraint.vertical)&&0!=t.alignmentConstraint.vertical.length||(t.alignmentConstraint.vertical=void 0),!t.alignmentConstraint.horizontal||Array.isArray(t.alignmentConstraint.horizontal)&&0!=t.alignmentConstraint.horizontal.length||(t.alignmentConstraint.horizontal=void 0)),!t.relativePlacementConstraint||Array.isArray(t.relativePlacementConstraint)&&0!=t.relativePlacementConstraint.length||(t.relativePlacementConstraint=void 0),(t.fixedNodeConstraint||t.alignmentConstraint||t.relativePlacementConstraint)&&(t.tile=!1,t.packComponents=!1);var c=void 0,d=!1;if(e.layoutUtilities&&t.packComponents&&((c=e.layoutUtilities("get"))||(c=e.layoutUtilities()),d=!0),i.nodes().length>0)if(d){var g=o.getTopMostNodes(t.eles.nodes());if((h=o.connectComponents(e,t.eles,g)).forEach(function(t){var e=t.boundingBox();l.push({x:e.x1+e.w/2,y:e.y1+e.h/2})}),t.randomize&&h.forEach(function(e){t.eles=e,n.push(s(t))}),"default"==t.quality||"proof"==t.quality){var u=e.collection();if(t.tile){var f=new Map,p=0,v={nodeIndexes:f,xCoords:[],yCoords:[]},y=[];if(h.forEach(function(t,e){0==t.edges().length&&(t.nodes().forEach(function(e,i){u.merge(t.nodes()[i]),e.isParent()||(v.nodeIndexes.set(t.nodes()[i].id(),p++),v.xCoords.push(t.nodes()[0].position().x),v.yCoords.push(t.nodes()[0].position().y))}),y.push(e))}),u.length>1){var m=u.boundingBox();l.push({x:m.x1+m.w/2,y:m.y1+m.h/2}),h.push(u),n.push(v);for(var E=y.length-1;E>=0;E--)h.splice(y[E],1),n.splice(y[E],1),l.splice(y[E],1)}}h.forEach(function(e,i){t.eles=e,r.push(a(t,n[i])),o.relocateComponent(l[i],r[i],t)})}else h.forEach(function(e,i){o.relocateComponent(l[i],n[i],t)});var N=new Set;if(h.length>1){var T=[],A=i.filter(function(t){return"none"==t.css("display")});h.forEach(function(e,i){var s=void 0;if("draft"==t.quality&&(s=n[i].nodeIndexes),e.nodes().not(A).length>0){var a={edges:[],nodes:[]},h=void 0;e.nodes().not(A).forEach(function(e){if("draft"==t.quality)if(e.isParent()){var l=o.calcBoundingBox(e,n[i].xCoords,n[i].yCoords,s);a.nodes.push({x:l.topLeftX,y:l.topLeftY,width:l.width,height:l.height})}else h=s.get(e.id()),a.nodes.push({x:n[i].xCoords[h]-e.boundingbox().w/2,y:n[i].yCoords[h]-e.boundingbox().h/2,width:e.boundingbox().w,height:e.boundingbox().h});else r[i][e.id()]&&a.nodes.push({x:r[i][e.id()].getLeft(),y:r[i][e.id()].getTop(),width:r[i][e.id()].getWidth(),height:r[i][e.id()].getHeight()})}),e.edges().forEach(function(e){var h=e.source(),l=e.target();if("none"!=h.css("display")&&"none"!=l.css("display"))if("draft"==t.quality){var c=s.get(h.id()),d=s.get(l.id()),g=[],u=[];if(h.isParent()){var f=o.calcBoundingBox(h,n[i].xCoords,n[i].yCoords,s);g.push(f.topLeftX+f.width/2),g.push(f.topLeftY+f.height/2)}else g.push(n[i].xCoords[c]),g.push(n[i].yCoords[c]);if(l.isParent()){var p=o.calcBoundingBox(l,n[i].xCoords,n[i].yCoords,s);u.push(p.topLeftX+p.width/2),u.push(p.topLeftY+p.height/2)}else u.push(n[i].xCoords[d]),u.push(n[i].yCoords[d]);a.edges.push({startX:g[0],startY:g[1],endX:u[0],endY:u[1]})}else r[i][h.id()]&&r[i][l.id()]&&a.edges.push({startX:r[i][h.id()].getCenterX(),startY:r[i][h.id()].getCenterY(),endX:r[i][l.id()].getCenterX(),endY:r[i][l.id()].getCenterY()})}),a.nodes.length>0&&(T.push(a),N.add(i))}});var w=c.packComponents(T,t.randomize).shifts;if("draft"==t.quality)n.forEach(function(t,e){var i=t.xCoords.map(function(t){return t+w[e].dx}),n=t.yCoords.map(function(t){return t+w[e].dy});t.xCoords=i,t.yCoords=n});else{var L=0;N.forEach(function(t){Object.keys(r[t]).forEach(function(e){var i=r[t][e];i.setCenter(i.getCenterX()+w[L].dx,i.getCenterY()+w[L].dy)}),L++})}}}else{var I=t.eles.boundingBox();if(l.push({x:I.x1+I.w/2,y:I.y1+I.h/2}),t.randomize){var C=s(t);n.push(C)}"default"==t.quality||"proof"==t.quality?(r.push(a(t,n[0])),o.relocateComponent(l[0],r[0],t)):o.relocateComponent(l[0],n[0],t)}var _=function(e,i){if("default"==t.quality||"proof"==t.quality){"number"==typeof e&&(e=i);var o=void 0,s=void 0,a=e.data("id");return r.forEach(function(t){a in t&&(o={x:t[a].getRect().getCenterX(),y:t[a].getRect().getCenterY()},s=t[a])}),t.nodeDimensionsIncludeLabels&&(s.labelWidth&&("left"==s.labelPosHorizontal?o.x+=s.labelWidth/2:"right"==s.labelPosHorizontal&&(o.x-=s.labelWidth/2)),s.labelHeight&&("top"==s.labelPosVertical?o.y+=s.labelHeight/2:"bottom"==s.labelPosVertical&&(o.y-=s.labelHeight/2))),null==o&&(o={x:e.position("x"),y:e.position("y")}),{x:o.x,y:o.y}}var h=void 0;return n.forEach(function(t){var i=t.nodeIndexes.get(e.id());null!=i&&(h={x:t.xCoords[i],y:t.yCoords[i]})}),null==h&&(h={x:e.position("x"),y:e.position("y")}),{x:h.x,y:h.y}};if("default"==t.quality||"proof"==t.quality||t.randomize){var M=o.calcParentsWithoutChildren(e,i),x=i.filter(function(t){return"none"==t.css("display")});t.eles=i.not(x),i.nodes().not(":parent").not(x).layoutPositions(this,t,_),M.length>0&&M.forEach(function(t){t.position(_(t))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")}}]),t}();t.exports=l},657:(t,e,i)=>{var n=i(548),r=i(140).layoutBase.Matrix,o=i(140).layoutBase.SVD;t.exports={spectralLayout:function(t){var e=t.cy,i=t.eles,s=i.nodes(),a=i.nodes(":parent"),h=new Map,l=new Map,c=new Map,d=[],g=[],u=[],f=[],p=[],v=[],y=[],m=[],E=void 0,N=1e8,T=1e-9,A=t.piTol,w=t.samplingType,L=t.nodeSeparation,I=void 0,C=function(t,e,i){for(var n=[],r=0,o=0,s=0,a=void 0,h=[],c=0,g=1,u=0;u<E;u++)h[u]=N;for(n[o]=t,h[t]=0;o>=r;){s=n[r++];for(var f=d[s],y=0;y<f.length;y++)h[a=l.get(f[y])]==N&&(h[a]=h[s]+1,n[++o]=a);v[s][e]=h[s]*L}if(i){for(var m=0;m<E;m++)v[m][e]<p[m]&&(p[m]=v[m][e]);for(var T=0;T<E;T++)p[T]>c&&(c=p[T],g=T)}return g};n.connectComponents(e,i,n.getTopMostNodes(s),h),a.forEach(function(t){n.connectComponents(e,i,n.getTopMostNodes(t.descendants().intersection(i)),h)});for(var _=0,M=0;M<s.length;M++)s[M].isParent()||l.set(s[M].id(),_++);var x=!0,O=!1,D=void 0;try{for(var R,b=h.keys()[Symbol.iterator]();!(x=(R=b.next()).done);x=!0){var G=R.value;l.set(G,_++)}}catch(K){O=!0,D=K}finally{try{!x&&b.return&&b.return()}finally{if(O)throw D}}for(var F=0;F<l.size;F++)d[F]=[];a.forEach(function(t){for(var e=t.children().intersection(i);0==e.nodes(":childless").length;)e=e.nodes()[0].children().intersection(i);var n=0,r=e.nodes(":childless")[0].connectedEdges().length;e.nodes(":childless").forEach(function(t,e){t.connectedEdges().length<r&&(r=t.connectedEdges().length,n=e)}),c.set(t.id(),e.nodes(":childless")[n].id())}),s.forEach(function(t){var e=void 0;e=t.isParent()?l.get(c.get(t.id())):l.get(t.id()),t.neighborhood().nodes().forEach(function(n){i.intersection(t.edgesWith(n)).length>0&&(n.isParent()?d[e].push(c.get(n.id())):d[e].push(n.id()))})});var S=function(t){var i=l.get(t),n=void 0;h.get(t).forEach(function(r){n=e.getElementById(r).isParent()?c.get(r):r,d[i].push(n),d[l.get(n)].push(t)})},P=!0,U=!1,Y=void 0;try{for(var k,H=h.keys()[Symbol.iterator]();!(P=(k=H.next()).done);P=!0)S(k.value)}catch(K){U=!0,Y=K}finally{try{!P&&H.return&&H.return()}finally{if(U)throw Y}}var X=void 0;if((E=l.size)>2){I=E<t.sampleSize?E:t.sampleSize;for(var z=0;z<E;z++)v[z]=[];for(var V=0;V<I;V++)m[V]=[];return"draft"==t.quality||"all"==t.step?(function(t){var e=void 0;if(t){e=Math.floor(Math.random()*E);for(var i=0;i<E;i++)p[i]=N;for(var n=0;n<I;n++)f[n]=e,e=C(e,n,t)}else{!function(){for(var t=0,e=0,i=!1;e<I;){t=Math.floor(Math.random()*E),i=!1;for(var n=0;n<e;n++)if(f[n]==t){i=!0;break}i||(f[e]=t,e++)}}();for(var r=0;r<I;r++)C(f[r],r,t)}for(var o=0;o<E;o++)for(var s=0;s<I;s++)v[o][s]*=v[o][s];for(var a=0;a<I;a++)y[a]=[];for(var h=0;h<I;h++)for(var l=0;l<I;l++)y[h][l]=v[f[l]][h]}(w),function(){for(var t=o.svd(y),e=t.S,i=t.U,n=t.V,s=e[0]*e[0]*e[0],a=[],h=0;h<I;h++){a[h]=[];for(var l=0;l<I;l++)a[h][l]=0,h==l&&(a[h][l]=e[h]/(e[h]*e[h]+s/(e[h]*e[h])))}m=r.multMat(r.multMat(n,a),r.transpose(i))}(),function(){for(var t=void 0,e=void 0,i=[],n=[],o=[],s=[],a=0;a<E;a++)i[a]=Math.random(),n[a]=Math.random();i=r.normalize(i),n=r.normalize(n);for(var h=T,l=T,c=void 0;;){for(var d=0;d<E;d++)o[d]=i[d];if(i=r.multGamma(r.multL(r.multGamma(o),v,m)),t=r.dotProduct(o,i),i=r.normalize(i),h=r.dotProduct(o,i),(c=Math.abs(h/l))<=1+A&&c>=1)break;l=h}for(var f=0;f<E;f++)o[f]=i[f];for(l=T;;){for(var p=0;p<E;p++)s[p]=n[p];if(s=r.minusOp(s,r.multCons(o,r.dotProduct(o,s))),n=r.multGamma(r.multL(r.multGamma(s),v,m)),e=r.dotProduct(s,n),n=r.normalize(n),h=r.dotProduct(s,n),(c=Math.abs(h/l))<=1+A&&c>=1)break;l=h}for(var y=0;y<E;y++)s[y]=n[y];g=r.multCons(o,Math.sqrt(Math.abs(t))),u=r.multCons(s,Math.sqrt(Math.abs(e)))}(),X={nodeIndexes:l,xCoords:g,yCoords:u}):(l.forEach(function(t,i){g.push(e.getElementById(i).position("x")),u.push(e.getElementById(i).position("y"))}),X={nodeIndexes:l,xCoords:g,yCoords:u}),X}var B=l.keys(),W=e.getElementById(B.next().value),j=W.position(),$=W.outerWidth();if(g.push(j.x),u.push(j.y),2==E){var q=e.getElementById(B.next().value).outerWidth();g.push(j.x+$/2+q/2+t.idealEdgeLength),u.push(j.y)}return X={nodeIndexes:l,xCoords:g,yCoords:u}}}},579:(t,e,i)=>{var n=i(212),r=function(t){t&&t("layout","fcose",n)};"undefined"!=typeof cytoscape&&r(cytoscape),t.exports=r},140:e=>{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(579);return n})()},t.exports=n(i(57601))},28844:(t,e,i)=>{"use strict";i.d(e,{m:()=>r});var n=i(27293),r=class{constructor(t){this.init=t,this.records=this.init()}static{(0,n.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},46993:(t,e,i)=>{"use strict";i.d(e,{diagram:()=>ut});var n=i(24199),r=i(22775),o=i(28844),s=i(47794),a=i(95379),h=i(27293),l=i(25381),c=i(48090),d=i(26219),g=i(61274),u={L:"left",R:"right",T:"top",B:"bottom"},f={L:(0,h.K2)(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:(0,h.K2)(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:(0,h.K2)(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:(0,h.K2)(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},p={L:(0,h.K2)((t,e)=>t-e+2,"L"),R:(0,h.K2)((t,e)=>t-2,"R"),T:(0,h.K2)((t,e)=>t-e+2,"T"),B:(0,h.K2)((t,e)=>t-2,"B")},v=(0,h.K2)(function(t){return m(t)?"L"===t?"R":"L":"T"===t?"B":"T"},"getOppositeArchitectureDirection"),y=(0,h.K2)(function(t){return"L"===t||"R"===t||"T"===t||"B"===t},"isArchitectureDirection"),m=(0,h.K2)(function(t){return"L"===t||"R"===t},"isArchitectureDirectionX"),E=(0,h.K2)(function(t){return"T"===t||"B"===t},"isArchitectureDirectionY"),N=(0,h.K2)(function(t,e){const i=m(t)&&E(e),n=E(t)&&m(e);return i||n},"isArchitectureDirectionXY"),T=(0,h.K2)(function(t){const e=t[0],i=t[1],n=m(e)&&E(i),r=E(e)&&m(i);return n||r},"isArchitecturePairXY"),A=(0,h.K2)(function(t){return"LL"!==t&&"RR"!==t&&"TT"!==t&&"BB"!==t},"isValidArchitectureDirectionPair"),w=(0,h.K2)(function(t,e){const i=`${t}${e}`;return A(i)?i:void 0},"getArchitectureDirectionPair"),L=(0,h.K2)(function([t,e],i){const n=i[0],r=i[1];return m(n)?E(r)?[t+("L"===n?-1:1),e+("T"===r?1:-1)]:[t+("L"===n?-1:1),e]:m(r)?[t+("L"===r?1:-1),e+("T"===n?1:-1)]:[t,e+("T"===n?1:-1)]},"shiftPositionByArchitectureDirectionPair"),I=(0,h.K2)(function(t){return"LT"===t||"TL"===t?[1,1]:"BL"===t||"LB"===t?[1,-1]:"BR"===t||"RB"===t?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),C=(0,h.K2)(function(t,e){return N(t,e)?"bend":m(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),_=(0,h.K2)(function(t){return"service"===t.type},"isArchitectureService"),M=(0,h.K2)(function(t){return"junction"===t.type},"isArchitectureJunction"),x=(0,h.K2)(t=>t.data(),"edgeData"),O=(0,h.K2)(t=>t.data(),"nodeData"),D=h.UI.architecture,R=new o.m(()=>({nodes:{},groups:{},edges:[],registeredIds:{},config:D,dataStructures:void 0,elements:{}})),b=(0,h.K2)(()=>{R.reset(),(0,h.IU)()},"clear"),G=(0,h.K2)(function({id:t,icon:e,in:i,title:n,iconText:r}){if(void 0!==R.records.registeredIds[t])throw new Error(`The service id [${t}] is already in use by another ${R.records.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The service [${t}] cannot be placed within itself`);if(void 0===R.records.registeredIds[i])throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if("node"===R.records.registeredIds[i])throw new Error(`The service [${t}]'s parent is not a group`)}R.records.registeredIds[t]="node",R.records.nodes[t]={id:t,type:"service",icon:e,iconText:r,title:n,edges:[],in:i}},"addService"),F=(0,h.K2)(()=>Object.values(R.records.nodes).filter(_),"getServices"),S=(0,h.K2)(function({id:t,in:e}){R.records.registeredIds[t]="node",R.records.nodes[t]={id:t,type:"junction",edges:[],in:e}},"addJunction"),P=(0,h.K2)(()=>Object.values(R.records.nodes).filter(M),"getJunctions"),U=(0,h.K2)(()=>Object.values(R.records.nodes),"getNodes"),Y=(0,h.K2)(t=>R.records.nodes[t],"getNode"),k=(0,h.K2)(function({id:t,icon:e,in:i,title:n}){if(void 0!==R.records.registeredIds[t])throw new Error(`The group id [${t}] is already in use by another ${R.records.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The group [${t}] cannot be placed within itself`);if(void 0===R.records.registeredIds[i])throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if("node"===R.records.registeredIds[i])throw new Error(`The group [${t}]'s parent is not a group`)}R.records.registeredIds[t]="group",R.records.groups[t]={id:t,icon:e,title:n,in:i}},"addGroup"),H=(0,h.K2)(()=>Object.values(R.records.groups),"getGroups"),X=(0,h.K2)(function({lhsId:t,rhsId:e,lhsDir:i,rhsDir:n,lhsInto:r,rhsInto:o,lhsGroup:s,rhsGroup:a,title:h}){if(!y(i))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${i}`);if(!y(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${n}`);if(void 0===R.records.nodes[t]&&void 0===R.records.groups[t])throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(void 0===R.records.nodes[e]&&void 0===R.records.groups[t])throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);const l=R.records.nodes[t].in,c=R.records.nodes[e].in;if(s&&l&&c&&l==c)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(a&&l&&c&&l==c)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);const d={lhsId:t,lhsDir:i,lhsInto:r,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:o,rhsGroup:a,title:h};R.records.edges.push(d),R.records.nodes[t]&&R.records.nodes[e]&&(R.records.nodes[t].edges.push(R.records.edges[R.records.edges.length-1]),R.records.nodes[e].edges.push(R.records.edges[R.records.edges.length-1]))},"addEdge"),z=(0,h.K2)(()=>R.records.edges,"getEdges"),V=(0,h.K2)(()=>{if(void 0===R.records.dataStructures){const t={},e=Object.entries(R.records.nodes).reduce((e,[i,n])=>(e[i]=n.edges.reduce((e,n)=>{const r=Y(n.lhsId)?.in,o=Y(n.rhsId)?.in;if(r&&o&&r!==o){const e=C(n.lhsDir,n.rhsDir);"bend"!==e&&(t[r]??={},t[r][o]=e,t[o]??={},t[o][r]=e)}if(n.lhsId===i){const t=w(n.lhsDir,n.rhsDir);t&&(e[t]=n.rhsId)}else{const t=w(n.rhsDir,n.lhsDir);t&&(e[t]=n.lhsId)}return e},{}),e),{}),i=Object.keys(e)[0],n={[i]:1},r=Object.keys(e).reduce((t,e)=>e===i?t:{...t,[e]:1},{}),o=(0,h.K2)(t=>{const i={[t]:[0,0]},o=[t];for(;o.length>0;){const t=o.shift();if(t){n[t]=1,delete r[t];const s=e[t],[a,h]=i[t];Object.entries(s).forEach(([t,e])=>{n[e]||(i[e]=L([a,h],t),o.push(e))})}}return i},"BFS"),s=[o(i)];for(;Object.keys(r).length>0;)s.push(o(Object.keys(r)[0]));R.records.dataStructures={adjList:e,spatialMaps:s,groupAlignments:t}}return R.records.dataStructures},"getDataStructures"),B=(0,h.K2)((t,e)=>{R.records.elements[t]=e},"setElementForId"),W=(0,h.K2)(t=>R.records.elements[t],"getElementById"),j=(0,h.K2)(()=>(0,s.$t)({...D,...(0,h.zj)().architecture}),"getConfig"),$={clear:b,setDiagramTitle:h.ke,getDiagramTitle:h.ab,setAccTitle:h.SV,getAccTitle:h.iN,setAccDescription:h.EI,getAccDescription:h.m7,getConfig:j,addService:G,getServices:F,addJunction:S,getJunctions:P,getNodes:U,getNode:Y,addGroup:k,getGroups:H,addEdge:X,getEdges:z,setElementForId:B,getElementById:W,getDataStructures:V};function q(t){return j()[t]}(0,h.K2)(q,"getConfigField");var K=(0,h.K2)((t,e)=>{(0,r.S)(t,e),t.groups.map(e.addGroup),t.services.map(t=>e.addService({...t,type:"service"})),t.junctions.map(t=>e.addJunction({...t,type:"junction"})),t.edges.map(e.addEdge)},"populateDb"),Z={parse:(0,h.K2)(async t=>{const e=await(0,l.qg)("architecture",t);h.Rm.debug(e),K(e,$)},"parse")},Q=(0,h.K2)(t=>`\n .edge {\n stroke-width: ${t.archEdgeWidth};\n stroke: ${t.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${t.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${t.archGroupBorderColor};\n stroke-width: ${t.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`,"getStyles"),J=(0,h.K2)(t=>`<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/>${t}</g>`,"wrapIcon"),tt={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:J('<path id="b" data-name="4" d="m20,57.86c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="c" data-name="3" d="m20,45.95c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="d" data-name="2" d="m20,34.05c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse id="e" data-name="1" cx="40" cy="22.14" rx="20" ry="7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="20" y1="57.86" x2="20" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="60" y1="57.86" x2="60" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},server:{body:J('<rect x="17.5" y="17.5" width="45" height="45" rx="2" ry="2" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="32.5" x2="62.5" y2="32.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="47.5" x2="62.5" y2="47.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><g><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g>')},disk:{body:J('<rect x="20" y="15" width="40" height="50" rx="1" ry="1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="14" ry="14.58" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="4" ry="4.17" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m37.51,42.52l-4.83,13.22c-.26.71-1.1,1.02-1.76.64l-4.18-2.42c-.66-.38-.81-1.26-.33-1.84l9.01-10.8c.88-1.05,2.56-.08,2.09,1.2Z" style="fill: #fff; stroke-width: 0px;"/>')},internet:{body:J('<circle cx="40" cy="40" r="22.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="40" y1="17.5" x2="40" y2="62.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="40" x2="62.5" y2="40" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m39.99,17.51c-15.28,11.1-15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m40.01,17.51c15.28,11.1,15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="30.1" x2="60.25" y2="30.1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="49.9" x2="60.25" y2="49.9" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},cloud:{body:J('<path d="m65,47.5c0,2.76-2.24,5-5,5H20c-2.76,0-5-2.24-5-5,0-1.87,1.03-3.51,2.56-4.36-.04-.21-.06-.42-.06-.64,0-2.6,2.48-4.74,5.65-4.97,1.65-4.51,6.34-7.76,11.85-7.76.86,0,1.69.08,2.5.23,2.09-1.57,4.69-2.5,7.5-2.5,6.1,0,11.19,4.38,12.28,10.17,2.14.56,3.72,2.51,3.72,4.83,0,.03,0,.07-.01.1,2.29.46,4.01,2.48,4.01,4.9Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},unknown:n.Gc,blank:{body:J("")}}},et=(0,h.K2)(async function(t,e){const i=q("padding"),r=q("iconSize"),o=r/2,s=r/6,a=s/2;await Promise.all(e.edges().map(async e=>{const{source:r,sourceDir:l,sourceArrow:c,sourceGroup:d,target:g,targetDir:u,targetArrow:v,targetGroup:y,label:A}=x(e);let{x:L,y:C}=e[0].sourceEndpoint();const{x:_,y:M}=e[0].midpoint();let{x:O,y:D}=e[0].targetEndpoint();const R=i+4;if(d&&(m(l)?L+="L"===l?-R:R:C+="T"===l?-R:R+18),y&&(m(u)?O+="L"===u?-R:R:D+="T"===u?-R:R+18),d||"junction"!==$.getNode(r)?.type||(m(l)?L+="L"===l?o:-o:C+="T"===l?o:-o),y||"junction"!==$.getNode(g)?.type||(m(u)?O+="L"===u?o:-o:D+="T"===u?o:-o),e[0]._private.rscratch){const e=t.insert("g");if(e.insert("path").attr("d",`M ${L},${C} L ${_},${M} L${O},${D} `).attr("class","edge"),c){const t=m(l)?p[l](L,s):L-a,i=E(l)?p[l](C,s):C-a;e.insert("polygon").attr("points",f[l](s)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(v){const t=m(u)?p[u](O,s):O-a,i=E(u)?p[u](D,s):D-a;e.insert("polygon").attr("points",f[u](s)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(A){const t=N(l,u)?"XY":m(l)?"X":"Y";let i=0;i="X"===t?Math.abs(L-O):"Y"===t?Math.abs(C-D)/1.5:Math.abs(L-O)/2;const r=e.append("g");if(await(0,n.GZ)(r,A,{useHtmlLabels:!1,width:i,classes:"architecture-service-label"},(0,h.D7)()),r.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),"X"===t)r.attr("transform","translate("+_+", "+M+")");else if("Y"===t)r.attr("transform","translate("+_+", "+M+") rotate(-90)");else if("XY"===t){const t=w(l,u);if(t&&T(t)){const e=r.node().getBoundingClientRect(),[i,n]=I(t);r.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*i*n*45})`);const o=r.node().getBoundingClientRect();r.attr("transform",`\n translate(${_}, ${M-e.height/2})\n translate(${i*o.width/2}, ${n*o.height/2})\n rotate(${-1*i*n*45}, 0, ${e.height/2})\n `)}}}}}))},"drawEdges"),it=(0,h.K2)(async function(t,e){const i=.75*q("padding"),r=q("fontSize"),o=q("iconSize")/2;await Promise.all(e.nodes().map(async e=>{const s=O(e);if("group"===s.type){const{h:a,w:l,x1:c,y1:d}=e.boundingBox();t.append("rect").attr("x",c+o).attr("y",d+o).attr("width",l).attr("height",a).attr("class","node-bkg");const g=t.append("g");let u=c,f=d;if(s.icon){const t=g.append("g");t.html(`<g>${await(0,n.WY)(s.icon,{height:i,width:i,fallbackPrefix:tt.prefix})}</g>`),t.attr("transform","translate("+(u+o+1)+", "+(f+o+1)+")"),u+=i,f+=r/2-1-2}if(s.label){const t=g.append("g");await(0,n.GZ)(t,s.label,{useHtmlLabels:!1,width:l,classes:"architecture-service-label"},(0,h.D7)()),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),t.attr("transform","translate("+(u+o+4)+", "+(f+o+2)+")")}}}))},"drawGroups"),nt=(0,h.K2)(async function(t,e,i){for(const r of i){const i=e.append("g"),o=q("iconSize");if(r.title){const t=i.append("g");await(0,n.GZ)(t,r.title,{useHtmlLabels:!1,width:1.5*o,classes:"architecture-service-label"},(0,h.D7)()),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),t.attr("transform","translate("+o/2+", "+o+")")}const s=i.append("g");if(r.icon)s.html(`<g>${await(0,n.WY)(r.icon,{height:o,width:o,fallbackPrefix:tt.prefix})}</g>`);else if(r.iconText){s.html(`<g>${await(0,n.WY)("blank",{height:o,width:o,fallbackPrefix:tt.prefix})}</g>`);const t=s.append("g").append("foreignObject").attr("width",o).attr("height",o).append("div").attr("class","node-icon-text").attr("style",`height: ${o}px;`).append("div").html(r.iconText),e=parseInt(window.getComputedStyle(t.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;t.attr("style",`-webkit-line-clamp: ${Math.floor((o-2)/e)};`)}else s.append("path").attr("class","node-bkg").attr("id","node-"+r.id).attr("d",`M0 ${o} v${-o} q0,-5 5,-5 h${o} q5,0 5,5 v${o} H0 Z`);i.attr("class","architecture-service");const{width:a,height:l}=i._groups[0][0].getBBox();r.width=a,r.height=l,t.setElementForId(r.id,i)}return 0},"drawServices"),rt=(0,h.K2)(function(t,e,i){i.forEach(i=>{const n=e.append("g"),r=q("iconSize");n.append("g").append("rect").attr("id","node-"+i.id).attr("fill-opacity","0").attr("width",r).attr("height",r),n.attr("class","architecture-junction");const{width:o,height:s}=n._groups[0][0].getBBox();n.width=o,n.height=s,t.setElementForId(i.id,n)})},"drawJunctions");function ot(t,e){t.forEach(t=>{e.add({group:"nodes",data:{type:"service",id:t.id,icon:t.icon,label:t.title,parent:t.in,width:q("iconSize"),height:q("iconSize")},classes:"node-service"})})}function st(t,e){t.forEach(t=>{e.add({group:"nodes",data:{type:"junction",id:t.id,parent:t.in,width:q("iconSize"),height:q("iconSize")},classes:"node-junction"})})}function at(t,e){e.nodes().map(e=>{const i=O(e);if("group"===i.type)return;i.x=e.position().x,i.y=e.position().y;t.getElementById(i.id).attr("transform","translate("+(i.x||0)+","+(i.y||0)+")")})}function ht(t,e){t.forEach(t=>{e.add({group:"nodes",data:{type:"group",id:t.id,icon:t.icon,label:t.title,parent:t.in},classes:"node-group"})})}function lt(t,e){t.forEach(t=>{const{lhsId:i,rhsId:n,lhsInto:r,lhsGroup:o,rhsInto:s,lhsDir:a,rhsDir:h,rhsGroup:l,title:c}=t,d=N(t.lhsDir,t.rhsDir)?"segments":"straight",g={id:`${i}-${n}`,label:c,source:i,sourceDir:a,sourceArrow:r,sourceGroup:o,sourceEndpoint:"L"===a?"0 50%":"R"===a?"100% 50%":"T"===a?"50% 0":"50% 100%",target:n,targetDir:h,targetArrow:s,targetGroup:l,targetEndpoint:"L"===h?"0 50%":"R"===h?"100% 50%":"T"===h?"50% 0":"50% 100%"};e.add({group:"edges",data:g,classes:d})})}function ct(t,e,i){const n=(0,h.K2)((t,e)=>Object.entries(t).reduce((t,[n,r])=>{let o=0;const s=Object.entries(r);if(1===s.length)return t[n]=s[0][1],t;for(let a=0;a<s.length-1;a++)for(let r=a+1;r<s.length;r++){const[h,l]=s[a],[c,d]=s[r],g=i[h]?.[c];if(g===e)t[n]??=[],t[n]=[...t[n],...l,...d];else if("default"===h||"default"===c)t[n]??=[],t[n]=[...t[n],...l,...d];else{t[`${n}-${o++}`]=l;t[`${n}-${o++}`]=d}}return t},{}),"flattenAlignments"),r=e.map(e=>{const i={},r={};return Object.entries(e).forEach(([e,[n,o]])=>{const s=t.getNode(e)?.in??"default";i[o]??={},i[o][s]??=[],i[o][s].push(e),r[n]??={},r[n][s]??=[],r[n][s].push(e)}),{horiz:Object.values(n(i,"horizontal")).filter(t=>t.length>1),vert:Object.values(n(r,"vertical")).filter(t=>t.length>1)}}),[o,s]=r.reduce(([t,e],{horiz:i,vert:n})=>[[...t,...i],[...e,...n]],[[],[]]);return{horizontal:o,vertical:s}}function dt(t){const e=[],i=(0,h.K2)(t=>`${t[0]},${t[1]}`,"posToStr"),n=(0,h.K2)(t=>t.split(",").map(t=>parseInt(t)),"strToPos");return t.forEach(t=>{const r=Object.fromEntries(Object.entries(t).map(([t,e])=>[i(e),t])),o=[i([0,0])],s={},a={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;o.length>0;){const t=o.shift();if(t){s[t]=1;const h=r[t];if(h){const l=n(t);Object.entries(a).forEach(([t,n])=>{const a=i([l[0]+n[0],l[1]+n[1]]),c=r[a];c&&!s[a]&&(o.push(a),e.push({[u[t]]:c,[u[v(t)]]:h,gap:1.5*q("iconSize")}))})}}}}),e}function gt(t,e,i,n,r,{spatialMaps:o,groupAlignments:s}){return new Promise(a=>{const l=(0,g.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),d=(0,c.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${q("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${q("padding")}px`}}]});l.remove(),ht(i,d),ot(t,d),st(e,d),lt(n,d);const u=ct(r,o,s),f=dt(o),p=d.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:r}=O(i);return n===r?1.5*q("iconSize"):.5*q("iconSize")},edgeElasticity(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:r}=O(i);return n===r?.45:.001},alignmentConstraint:u,relativePlacementConstraint:f});p.one("layoutstop",()=>{function t(t,e,i,n){let r,o;const{x:s,y:a}=t,{x:h,y:l}=e;o=(n-a+(s-i)*(a-l)/(s-h))/Math.sqrt(1+Math.pow((a-l)/(s-h),2)),r=Math.sqrt(Math.pow(n-a,2)+Math.pow(i-s,2)-Math.pow(o,2));r/=Math.sqrt(Math.pow(h-s,2)+Math.pow(l-a,2));let c=(h-s)*(n-a)-(l-a)*(i-s);switch(!0){case c>=0:c=1;break;case c<0:c=-1}let d=(h-s)*(i-s)+(l-a)*(n-a);switch(!0){case d>=0:d=1;break;case d<0:d=-1}return o=Math.abs(o)*c,r*=d,{distances:o,weights:r}}(0,h.K2)(t,"getSegmentWeights"),d.startBatch();for(const e of Object.values(d.edges()))if(e.data?.()){const{x:i,y:n}=e.source().position(),{x:r,y:o}=e.target().position();if(i!==r&&n!==o){const i=e.sourceEndpoint(),n=e.targetEndpoint(),{sourceDir:r}=x(e),[o,s]=E(r)?[i.x,n.y]:[n.x,i.y],{weights:a,distances:h}=t(i,n,o,s);e.style("segment-distances",h),e.style("segment-weights",a)}}d.endBatch(),p.run()}),p.run(),d.ready(t=>{h.Rm.info("Ready",t),a(d)})})}(0,n.pC)([{name:tt.prefix,icons:tt}]),c.A.use(d),(0,h.K2)(ot,"addServices"),(0,h.K2)(st,"addJunctions"),(0,h.K2)(at,"positionNodes"),(0,h.K2)(ht,"addGroups"),(0,h.K2)(lt,"addEdges"),(0,h.K2)(ct,"getAlignments"),(0,h.K2)(dt,"getRelativeConstraints"),(0,h.K2)(gt,"layoutArchitecture");var ut={parser:Z,db:$,renderer:{draw:(0,h.K2)(async(t,e,i,n)=>{const r=n.db,o=r.getServices(),s=r.getJunctions(),l=r.getGroups(),c=r.getEdges(),d=r.getDataStructures(),g=(0,a.D)(e),u=g.append("g");u.attr("class","architecture-edges");const f=g.append("g");f.attr("class","architecture-services");const p=g.append("g");p.attr("class","architecture-groups"),await nt(r,f,o),rt(r,f,s);const v=await gt(o,s,l,c,r,d);await et(u,v),await it(p,v),at(r,v),(0,h.ot)(void 0,g,q("padding"),q("useMaxWidth"))},"draw")},styles:Q}},57601:function(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={45:(t,e,i)=>{var n={};n.layoutBase=i(551),n.CoSEConstants=i(806),n.CoSEEdge=i(767),n.CoSEGraph=i(880),n.CoSEGraphManager=i(578),n.CoSELayout=i(765),n.CoSENode=i(991),n.ConstraintHandler=i(902),t.exports=n},806:(t,e,i)=>{var n=i(551).FDLayoutConstants;function r(){}for(var o in n)r[o]=n[o];r.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,r.DEFAULT_RADIAL_SEPARATION=n.DEFAULT_EDGE_LENGTH,r.DEFAULT_COMPONENT_SEPERATION=60,r.TILE=!0,r.TILING_PADDING_VERTICAL=10,r.TILING_PADDING_HORIZONTAL=10,r.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,r.ENFORCE_CONSTRAINTS=!0,r.APPLY_LAYOUT=!0,r.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,r.TREE_REDUCTION_ON_INCREMENTAL=!0,r.PURE_INCREMENTAL=r.DEFAULT_INCREMENTAL,t.exports=r},767:(t,e,i)=>{var n=i(551).FDLayoutEdge;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},880:(t,e,i)=>{var n=i(551).LGraph;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},578:(t,e,i)=>{var n=i(551).LGraphManager;function r(t){n.call(this,t)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},765:(t,e,i)=>{var n=i(551).FDLayout,r=i(578),o=i(880),s=i(991),a=i(767),h=i(806),l=i(902),c=i(551).FDLayoutConstants,d=i(551).LayoutConstants,g=i(551).Point,u=i(551).PointD,f=i(551).DimensionD,p=i(551).Layout,v=i(551).Integer,y=i(551).IGeometry,m=i(551).LGraph,E=i(551).Transform,N=i(551).LinkedList;function T(){n.call(this),this.toBeTiled={},this.constraints={}}for(var A in T.prototype=Object.create(n.prototype),n)T[A]=n[A];T.prototype.newGraphManager=function(){var t=new r(this);return this.graphManager=t,t},T.prototype.newGraph=function(t){return new o(null,this.graphManager,t)},T.prototype.newNode=function(t){return new s(this.graphManager,t)},T.prototype.newEdge=function(t){return new a(null,null,t)},T.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=c.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=c.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=c.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=c.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},T.prototype.initSpringEmbedder=function(){n.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/c.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},T.prototype.layout=function(){return d.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},T.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental)h.TREE_REDUCTION_ON_INCREMENTAL&&(this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation(),e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)}),this.graphManager.setAllNodesToApplyGravitation(i));else{var t=this.getFlatForest();if(t.length>0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(l.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),h.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%c.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),h.PURE_INCREMENTAL?this.coolingFactor=c.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=c.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),h.PURE_INCREMENTAL?this.coolingFactor=c.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=c.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,n=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,n),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i<t.length;i++){var n=t[i].rect,r=t[i].id;e[r]={id:r,x:n.getCenterX(),y:n.getCenterY(),w:n.width,h:n.height}}return e},T.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var t=!1;if("during"===c.ANIMATE)this.emit("layoutstarted");else{for(;!t;)t=this.tick();this.graphManager.updateBounds()}},T.prototype.moveNodes=function(){for(var t=this.getAllNodes(),e=0;e<t.length;e++)t[e].calculateDisplacement();for(Object.keys(this.constraints).length>0&&this.updateDisplacements(),e=0;e<t.length;e++)t[e].move()},T.prototype.initConstraintVariables=function(){var t=this;this.idToNodeMap=new Map,this.fixedNodeSet=new Set;for(var e=this.graphManager.getAllNodes(),i=0;i<e.length;i++){var n=e[i];this.idToNodeMap.set(n.id,n)}var r=function e(i){for(var n,r=i.getChild().getNodes(),o=0,s=0;s<r.length;s++)null==(n=r[s]).getChild()?t.fixedNodeSet.has(n.id)&&(o+=100):o+=e(n);return o};if(this.constraints.fixedNodeConstraint)for(this.constraints.fixedNodeConstraint.forEach(function(e){t.fixedNodeSet.add(e.nodeId)}),e=this.graphManager.getAllNodes(),i=0;i<e.length;i++)if(null!=(n=e[i]).getChild()){var o=r(n);o>0&&(n.fixedNodeWeight=o)}if(this.constraints.relativePlacementConstraint){var s=new Map,a=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(e){t.fixedNodesOnHorizontal.add(e),t.fixedNodesOnVertical.add(e)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical){var l=this.constraints.alignmentConstraint.vertical;for(i=0;i<l.length;i++)this.dummyToNodeForVerticalAlignment.set("dummy"+i,[]),l[i].forEach(function(e){s.set(e,"dummy"+i),t.dummyToNodeForVerticalAlignment.get("dummy"+i).push(e),t.fixedNodeSet.has(e)&&t.fixedNodesOnHorizontal.add("dummy"+i)})}if(this.constraints.alignmentConstraint.horizontal){var c=this.constraints.alignmentConstraint.horizontal;for(i=0;i<c.length;i++)this.dummyToNodeForHorizontalAlignment.set("dummy"+i,[]),c[i].forEach(function(e){a.set(e,"dummy"+i),t.dummyToNodeForHorizontalAlignment.get("dummy"+i).push(e),t.fixedNodeSet.has(e)&&t.fixedNodesOnVertical.add("dummy"+i)})}}if(h.RELAX_MOVEMENT_ON_CONSTRAINTS)this.shuffle=function(t){var e,i,n;for(n=t.length-1;n>=2*t.length/3;n--)e=Math.floor(Math.random()*(n+1)),i=t[n],t[n]=t[e],t[e]=i;return t},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(e){if(e.left){var i=s.has(e.left)?s.get(e.left):e.left,n=s.has(e.right)?s.get(e.right):e.right;t.nodesInRelativeHorizontal.includes(i)||(t.nodesInRelativeHorizontal.push(i),t.nodeToRelativeConstraintMapHorizontal.set(i,[]),t.dummyToNodeForVerticalAlignment.has(i)?t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(i)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(i).getCenterX())),t.nodesInRelativeHorizontal.includes(n)||(t.nodesInRelativeHorizontal.push(n),t.nodeToRelativeConstraintMapHorizontal.set(n,[]),t.dummyToNodeForVerticalAlignment.has(n)?t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(n)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(n).getCenterX())),t.nodeToRelativeConstraintMapHorizontal.get(i).push({right:n,gap:e.gap}),t.nodeToRelativeConstraintMapHorizontal.get(n).push({left:i,gap:e.gap})}else{var r=a.has(e.top)?a.get(e.top):e.top,o=a.has(e.bottom)?a.get(e.bottom):e.bottom;t.nodesInRelativeVertical.includes(r)||(t.nodesInRelativeVertical.push(r),t.nodeToRelativeConstraintMapVertical.set(r,[]),t.dummyToNodeForHorizontalAlignment.has(r)?t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(r)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(r).getCenterY())),t.nodesInRelativeVertical.includes(o)||(t.nodesInRelativeVertical.push(o),t.nodeToRelativeConstraintMapVertical.set(o,[]),t.dummyToNodeForHorizontalAlignment.has(o)?t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(o)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(o).getCenterY())),t.nodeToRelativeConstraintMapVertical.get(r).push({bottom:o,gap:e.gap}),t.nodeToRelativeConstraintMapVertical.get(o).push({top:r,gap:e.gap})}});else{var d=new Map,g=new Map;this.constraints.relativePlacementConstraint.forEach(function(t){if(t.left){var e=s.has(t.left)?s.get(t.left):t.left,i=s.has(t.right)?s.get(t.right):t.right;d.has(e)?d.get(e).push(i):d.set(e,[i]),d.has(i)?d.get(i).push(e):d.set(i,[e])}else{var n=a.has(t.top)?a.get(t.top):t.top,r=a.has(t.bottom)?a.get(t.bottom):t.bottom;g.has(n)?g.get(n).push(r):g.set(n,[r]),g.has(r)?g.get(r).push(n):g.set(r,[n])}});var u=function(t,e){var i=[],n=[],r=new N,o=new Set,s=0;return t.forEach(function(a,h){if(!o.has(h)){i[s]=[],n[s]=!1;var l=h;for(r.push(l),o.add(l),i[s].push(l);0!=r.length;)l=r.shift(),e.has(l)&&(n[s]=!0),t.get(l).forEach(function(t){o.has(t)||(r.push(t),o.add(t),i[s].push(t))});s++}}),{components:i,isFixed:n}},f=u(d,t.fixedNodesOnHorizontal);this.componentsOnHorizontal=f.components,this.fixedComponentsOnHorizontal=f.isFixed;var p=u(g,t.fixedNodesOnVertical);this.componentsOnVertical=p.components,this.fixedComponentsOnVertical=p.isFixed}}},T.prototype.updateDisplacements=function(){var t=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(e){var i=t.idToNodeMap.get(e.nodeId);i.displacementX=0,i.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var e=this.constraints.alignmentConstraint.vertical,i=0;i<e.length;i++){for(var n=0,r=0;r<e[i].length;r++){if(this.fixedNodeSet.has(e[i][r])){n=0;break}n+=this.idToNodeMap.get(e[i][r]).displacementX}var o=n/e[i].length;for(r=0;r<e[i].length;r++)this.idToNodeMap.get(e[i][r]).displacementX=o}if(this.constraints.alignmentConstraint.horizontal){var s=this.constraints.alignmentConstraint.horizontal;for(i=0;i<s.length;i++){var a=0;for(r=0;r<s[i].length;r++){if(this.fixedNodeSet.has(s[i][r])){a=0;break}a+=this.idToNodeMap.get(s[i][r]).displacementY}var l=a/s[i].length;for(r=0;r<s[i].length;r++)this.idToNodeMap.get(s[i][r]).displacementY=l}}}if(this.constraints.relativePlacementConstraint)if(h.RELAX_MOVEMENT_ON_CONSTRAINTS)this.totalIterations%10==0&&(this.shuffle(this.nodesInRelativeHorizontal),this.shuffle(this.nodesInRelativeVertical)),this.nodesInRelativeHorizontal.forEach(function(e){if(!t.fixedNodesOnHorizontal.has(e)){var i=0;i=t.dummyToNodeForVerticalAlignment.has(e)?t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(e)[0]).displacementX:t.idToNodeMap.get(e).displacementX,t.nodeToRelativeConstraintMapHorizontal.get(e).forEach(function(n){var r;n.right?(r=t.nodeToTempPositionMapHorizontal.get(n.right)-t.nodeToTempPositionMapHorizontal.get(e)-i)<n.gap&&(i-=n.gap-r):(r=t.nodeToTempPositionMapHorizontal.get(e)-t.nodeToTempPositionMapHorizontal.get(n.left)+i)<n.gap&&(i+=n.gap-r)}),t.nodeToTempPositionMapHorizontal.set(e,t.nodeToTempPositionMapHorizontal.get(e)+i),t.dummyToNodeForVerticalAlignment.has(e)?t.dummyToNodeForVerticalAlignment.get(e).forEach(function(e){t.idToNodeMap.get(e).displacementX=i}):t.idToNodeMap.get(e).displacementX=i}}),this.nodesInRelativeVertical.forEach(function(e){if(!t.fixedNodesOnHorizontal.has(e)){var i=0;i=t.dummyToNodeForHorizontalAlignment.has(e)?t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(e)[0]).displacementY:t.idToNodeMap.get(e).displacementY,t.nodeToRelativeConstraintMapVertical.get(e).forEach(function(n){var r;n.bottom?(r=t.nodeToTempPositionMapVertical.get(n.bottom)-t.nodeToTempPositionMapVertical.get(e)-i)<n.gap&&(i-=n.gap-r):(r=t.nodeToTempPositionMapVertical.get(e)-t.nodeToTempPositionMapVertical.get(n.top)+i)<n.gap&&(i+=n.gap-r)}),t.nodeToTempPositionMapVertical.set(e,t.nodeToTempPositionMapVertical.get(e)+i),t.dummyToNodeForHorizontalAlignment.has(e)?t.dummyToNodeForHorizontalAlignment.get(e).forEach(function(e){t.idToNodeMap.get(e).displacementY=i}):t.idToNodeMap.get(e).displacementY=i}});else{for(i=0;i<this.componentsOnHorizontal.length;i++){var c=this.componentsOnHorizontal[i];if(this.fixedComponentsOnHorizontal[i])for(r=0;r<c.length;r++)this.dummyToNodeForVerticalAlignment.has(c[r])?this.dummyToNodeForVerticalAlignment.get(c[r]).forEach(function(e){t.idToNodeMap.get(e).displacementX=0}):this.idToNodeMap.get(c[r]).displacementX=0;else{var d=0,g=0;for(r=0;r<c.length;r++)this.dummyToNodeForVerticalAlignment.has(c[r])?(d+=(f=this.dummyToNodeForVerticalAlignment.get(c[r])).length*this.idToNodeMap.get(f[0]).displacementX,g+=f.length):(d+=this.idToNodeMap.get(c[r]).displacementX,g++);var u=d/g;for(r=0;r<c.length;r++)this.dummyToNodeForVerticalAlignment.has(c[r])?this.dummyToNodeForVerticalAlignment.get(c[r]).forEach(function(e){t.idToNodeMap.get(e).displacementX=u}):this.idToNodeMap.get(c[r]).displacementX=u}}for(i=0;i<this.componentsOnVertical.length;i++)if(c=this.componentsOnVertical[i],this.fixedComponentsOnVertical[i])for(r=0;r<c.length;r++)this.dummyToNodeForHorizontalAlignment.has(c[r])?this.dummyToNodeForHorizontalAlignment.get(c[r]).forEach(function(e){t.idToNodeMap.get(e).displacementY=0}):this.idToNodeMap.get(c[r]).displacementY=0;else{for(d=0,g=0,r=0;r<c.length;r++){var f;this.dummyToNodeForHorizontalAlignment.has(c[r])?(d+=(f=this.dummyToNodeForHorizontalAlignment.get(c[r])).length*this.idToNodeMap.get(f[0]).displacementY,g+=f.length):(d+=this.idToNodeMap.get(c[r]).displacementY,g++)}for(u=d/g,r=0;r<c.length;r++)this.dummyToNodeForHorizontalAlignment.has(c[r])?this.dummyToNodeForHorizontalAlignment.get(c[r]).forEach(function(e){t.idToNodeMap.get(e).displacementY=u}):this.idToNodeMap.get(c[r]).displacementY=u}}},T.prototype.calculateNodesToApplyGravitationTo=function(){var t,e,i=[],n=this.graphManager.getGraphs(),r=n.length;for(e=0;e<r;e++)(t=n[e]).updateConnected(),t.isConnected||(i=i.concat(t.getNodes()));return i},T.prototype.createBendpoints=function(){var t=[];t=t.concat(this.graphManager.getAllEdges());var e,i=new Set;for(e=0;e<t.length;e++){var n=t[e];if(!i.has(n)){var r=n.getSource(),o=n.getTarget();if(r==o)n.getBendpoints().push(new u),n.getBendpoints().push(new u),this.createDummyNodesForBendpoints(n),i.add(n);else{var s=[];if(s=(s=s.concat(r.getEdgeListToNode(o))).concat(o.getEdgeListToNode(r)),!i.has(s[0])){var a;if(s.length>1)for(a=0;a<s.length;a++){var h=s[a];h.getBendpoints().push(new u),this.createDummyNodesForBendpoints(h)}s.forEach(function(t){i.add(t)})}}}if(i.size==t.length)break}},T.prototype.positionNodesRadially=function(t){for(var e=new g(0,0),i=Math.ceil(Math.sqrt(t.length)),n=0,r=0,o=0,s=new u(0,0),a=0;a<t.length;a++){a%i==0&&(o=0,r=n,0!=a&&(r+=h.DEFAULT_COMPONENT_SEPERATION),n=0);var l=t[a],c=p.findCenterOfTree(l);e.x=o,e.y=r,(s=T.radialLayout(l,c,e)).y>n&&(n=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new u(d.WORLD_CENTER_X-s.x/2,d.WORLD_CENTER_Y-s.y/2))},T.radialLayout=function(t,e,i){var n=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(e,null,0,359,0,n);var r=m.calculateBounds(t),o=new E;o.setDeviceOrgX(r.getMinX()),o.setDeviceOrgY(r.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s<t.length;s++)t[s].transform(o);var a=new u(r.getMaxX(),r.getMaxY());return o.inverseTransformPoint(a)},T.branchRadialLayout=function(t,e,i,n,r,o){var s=(n-i+1)/2;s<0&&(s+=180);var a=(s+i)%360*y.TWO_PI/360,h=(Math.cos(a),r*Math.cos(a)),l=r*Math.sin(a);t.setCenter(h,l);var c=[],d=(c=c.concat(t.getEdges())).length;null!=e&&d--;for(var g,u=0,f=c.length,p=t.getEdgesBetween(e);p.length>1;){var v=p[0];p.splice(0,1);var m=c.indexOf(v);m>=0&&c.splice(m,1),f--,d--}g=null!=e?(c.indexOf(p[0])+1)%f:0;for(var E=Math.abs(n-i)/d,N=g;u!=d;N=++N%f){var A=c[N].getOtherEnd(t);if(A!=e){var w=(i+u*E)%360,L=(w+E)%360;T.branchRadialLayout(A,t,w,L,r+o,o),u++}}},T.maxDiagonalInTree=function(t){for(var e=v.MIN_VALUE,i=0;i<t.length;i++){var n=t[i].getDiagonal();n>e&&(e=n)}return e},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],n=this.graphManager.getAllNodes(),r=0;r<n.length;r++){var o=(a=n[r]).getParent();0!==this.getNodeDegreeWithChildren(a)||null!=o.id&&this.getToBeTiled(o)||i.push(a)}for(r=0;r<i.length;r++){var a,h=(a=i[r]).getParent().id;void 0===e[h]&&(e[h]=[]),e[h]=e[h].concat(a)}Object.keys(e).forEach(function(i){if(e[i].length>1){var n="DummyCompound_"+i;t.memberGroups[n]=e[i];var r=e[i][0].getParent(),o=new s(t.graphManager);o.id=n,o.paddingLeft=r.paddingLeft||0,o.paddingRight=r.paddingRight||0,o.paddingBottom=r.paddingBottom||0,o.paddingTop=r.paddingTop||0,t.idToDummyNode[n]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=r.getChild();h.add(o);for(var l=0;l<e[i].length;l++){var c=e[i][l];h.remove(c),a.add(c)}}})},T.prototype.clearCompounds=function(){var t={},e={};this.performDFSOnCompounds();for(var i=0;i<this.compoundOrder.length;i++)e[this.compoundOrder[i].id]=this.compoundOrder[i],t[this.compoundOrder[i].id]=[].concat(this.compoundOrder[i].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[i].getChild()),this.compoundOrder[i].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(t,e)},T.prototype.clearZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(i){var n=t.idToDummyNode[i];if(e[i]=t.tileNodes(t.memberGroups[i],n.paddingLeft+n.paddingRight),n.rect.width=e[i].width,n.rect.height=e[i].height,n.setCenter(e[i].centerX,e[i].centerY),n.labelMarginLeft=0,n.labelMarginTop=0,h.NODE_DIMENSIONS_INCLUDE_LABELS){var r=n.rect.width,o=n.rect.height;n.labelWidth&&("left"==n.labelPosHorizontal?(n.rect.x-=n.labelWidth,n.setWidth(r+n.labelWidth),n.labelMarginLeft=n.labelWidth):"center"==n.labelPosHorizontal&&n.labelWidth>r?(n.rect.x-=(n.labelWidth-r)/2,n.setWidth(n.labelWidth),n.labelMarginLeft=(n.labelWidth-r)/2):"right"==n.labelPosHorizontal&&n.setWidth(r+n.labelWidth)),n.labelHeight&&("top"==n.labelPosVertical?(n.rect.y-=n.labelHeight,n.setHeight(o+n.labelHeight),n.labelMarginTop=n.labelHeight):"center"==n.labelPosVertical&&n.labelHeight>o?(n.rect.y-=(n.labelHeight-o)/2,n.setHeight(n.labelHeight),n.labelMarginTop=(n.labelHeight-o)/2):"bottom"==n.labelPosVertical&&n.setHeight(o+n.labelHeight))}})},T.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;t>=0;t--){var e=this.compoundOrder[t],i=e.id,n=e.paddingLeft,r=e.paddingTop,o=e.labelMarginLeft,s=e.labelMarginTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,n,r,o,s)}},T.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(i){var n=t.idToDummyNode[i],r=n.paddingLeft,o=n.paddingTop,s=n.labelMarginLeft,a=n.labelMarginTop;t.adjustLocations(e[i],n.rect.x,n.rect.y,r,o,s,a)})},T.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var n=i.getNodes(),r=0;r<n.length;r++){var o=n[r];if(this.getNodeDegree(o)>0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},T.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,n=0;n<e.length;n++){var r=e[n];r.getSource().id!==r.getTarget().id&&(i+=1)}return i},T.prototype.getNodeDegreeWithChildren=function(t){var e=this.getNodeDegree(t);if(null==t.getChild())return e;for(var i=t.getChild().getNodes(),n=0;n<i.length;n++){var r=i[n];e+=this.getNodeDegreeWithChildren(r)}return e},T.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},T.prototype.fillCompexOrderByDFS=function(t){for(var e=0;e<t.length;e++){var i=t[e];null!=i.getChild()&&this.fillCompexOrderByDFS(i.getChild().getNodes()),this.getToBeTiled(i)&&this.compoundOrder.push(i)}},T.prototype.adjustLocations=function(t,e,i,n,r,o,s){i+=r+s;for(var a=e+=n+o,h=0;h<t.rows.length;h++){var l=t.rows[h];e=a;for(var c=0,d=0;d<l.length;d++){var g=l[d];g.rect.x=e,g.rect.y=i,e+=g.rect.width+t.horizontalPadding,g.rect.height>c&&(c=g.rect.height)}i+=c+t.verticalPadding}},T.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(n){var r=e[n];if(i.tiledMemberPack[n]=i.tileNodes(t[n],r.paddingLeft+r.paddingRight),r.rect.width=i.tiledMemberPack[n].width,r.rect.height=i.tiledMemberPack[n].height,r.setCenter(i.tiledMemberPack[n].centerX,i.tiledMemberPack[n].centerY),r.labelMarginLeft=0,r.labelMarginTop=0,h.NODE_DIMENSIONS_INCLUDE_LABELS){var o=r.rect.width,s=r.rect.height;r.labelWidth&&("left"==r.labelPosHorizontal?(r.rect.x-=r.labelWidth,r.setWidth(o+r.labelWidth),r.labelMarginLeft=r.labelWidth):"center"==r.labelPosHorizontal&&r.labelWidth>o?(r.rect.x-=(r.labelWidth-o)/2,r.setWidth(r.labelWidth),r.labelMarginLeft=(r.labelWidth-o)/2):"right"==r.labelPosHorizontal&&r.setWidth(o+r.labelWidth)),r.labelHeight&&("top"==r.labelPosVertical?(r.rect.y-=r.labelHeight,r.setHeight(s+r.labelHeight),r.labelMarginTop=r.labelHeight):"center"==r.labelPosVertical&&r.labelHeight>s?(r.rect.y-=(r.labelHeight-s)/2,r.setHeight(r.labelHeight),r.labelMarginTop=(r.labelHeight-s)/2):"bottom"==r.labelPosVertical&&r.setHeight(s+r.labelHeight))}})},T.prototype.tileNodes=function(t,e){var i=this.tileNodesByFavoringDim(t,e,!0),n=this.tileNodesByFavoringDim(t,e,!1),r=this.getOrgRatio(i);return this.getOrgRatio(n)<r?n:i},T.prototype.getOrgRatio=function(t){var e=t.width/t.height;return e<1&&(e=1/e),e},T.prototype.calcIdealRowWidth=function(t,e){var i=h.TILING_PADDING_VERTICAL,n=h.TILING_PADDING_HORIZONTAL,r=t.length,o=0,s=0,a=0;t.forEach(function(t){o+=t.getWidth(),s+=t.getHeight(),t.getWidth()>a&&(a=t.getWidth())});var l,c=o/r,d=s/r,g=Math.pow(i-n,2)+4*(c+n)*(d+i)*r,u=(n-i+Math.sqrt(g))/(2*(c+n));e?(l=Math.ceil(u))==u&&l++:l=Math.floor(u);var f=l*(c+n)-n;return a>f&&(f=a),f+=2*n},T.prototype.tileNodesByFavoringDim=function(t,e,i){var n=h.TILING_PADDING_VERTICAL,r=h.TILING_PADDING_HORIZONTAL,o=h.TILING_COMPARE_BY,s={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:n,horizontalPadding:r,centerX:0,centerY:0};o&&(s.idealRowWidth=this.calcIdealRowWidth(t,i));var a=function(t){return t.rect.width*t.rect.height},l=function(t,e){return a(e)-a(t)};t.sort(function(t,e){var i=l;return s.idealRowWidth?(i=o)(t.id,e.id):i(t,e)});for(var c=0,d=0,g=0;g<t.length;g++)c+=(u=t[g]).getCenterX(),d+=u.getCenterY();for(s.centerX=c/t.length,s.centerY=d/t.length,g=0;g<t.length;g++){var u=t[g];if(0==s.rows.length)this.insertNodeToRow(s,u,0,e);else if(this.canAddHorizontal(s,u.rect.width,u.rect.height)){var f=s.rows.length-1;s.idealRowWidth||(f=this.getShortestRowIndex(s)),this.insertNodeToRow(s,u,f,e)}else this.insertNodeToRow(s,u,s.rows.length,e);this.shiftToLastRow(s)}return s},T.prototype.insertNodeToRow=function(t,e,i,n){var r=n;i==t.rows.length&&(t.rows.push([]),t.rowWidth.push(r),t.rowHeight.push(0));var o=t.rowWidth[i]+e.rect.width;t.rows[i].length>0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width<o&&(t.width=o);var s=e.rect.height;i>0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},T.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,n=0;n<t.rows.length;n++)t.rowWidth[n]<i&&(e=n,i=t.rowWidth[n]);return e},T.prototype.getLongestRowIndex=function(t){for(var e=-1,i=Number.MIN_VALUE,n=0;n<t.rows.length;n++)t.rowWidth[n]>i&&(e=n,i=t.rowWidth[n]);return e},T.prototype.canAddHorizontal=function(t,e,i){if(t.idealRowWidth){var n=t.rows.length-1;return t.rowWidth[n]+e+t.horizontalPadding<=t.idealRowWidth}var r=this.getShortestRowIndex(t);if(r<0)return!0;var o=t.rowWidth[r];if(o+t.horizontalPadding+e<=t.width)return!0;var s,a,h=0;return t.rowHeight[r]<i&&r>0&&(h=i+t.verticalPadding-t.rowHeight[r]),s=t.width-o>=e+t.horizontalPadding?(t.height+h)/(o+e+t.horizontalPadding):(t.height+h)/t.width,h=i+t.verticalPadding,(a=t.width<e?(t.height+h)/e:(t.height+h)/t.width)<1&&(a=1/a),s<1&&(s=1/s),s<a},T.prototype.shiftToLastRow=function(t){var e=this.getLongestRowIndex(t),i=t.rowWidth.length-1,n=t.rows[e],r=n[n.length-1],o=r.width+t.horizontalPadding;if(t.width-t.rowWidth[i]>o&&e!=i){n.splice(-1,1),t.rows[i].push(r),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;a<n.length;a++)n[a].height>s&&(s=n[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]<r.height+t.verticalPadding&&(t.rowHeight[i]=r.height+t.verticalPadding);var l=t.rowHeight[e]+t.rowHeight[i];t.height+=l-h,this.shiftToLastRow(t)}},T.prototype.tilingPreLayout=function(){h.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},T.prototype.tilingPostLayout=function(){h.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},T.prototype.reduceTrees=function(){for(var t,e=[],i=!0;i;){var n=this.graphManager.getAllNodes(),r=[];i=!1;for(var o=0;o<n.length;o++)if(1==(t=n[o]).getEdges().length&&!t.getEdges()[0].isInterGraph&&null==t.getChild()){if(h.PURE_INCREMENTAL){var s=t.getEdges()[0].getOtherEnd(t),a=new f(t.getCenterX()-s.getCenterX(),t.getCenterY()-s.getCenterY());r.push([t,t.getEdges()[0],t.getOwner(),a])}else r.push([t,t.getEdges()[0],t.getOwner()]);i=!0}if(1==i){for(var l=[],c=0;c<r.length;c++)1==r[c][0].getEdges().length&&(l.push(r[c]),r[c][0].getOwner().remove(r[c][0]));e.push(l),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=e},T.prototype.growTree=function(t){for(var e,i=t[t.length-1],n=0;n<i.length;n++)e=i[n],this.findPlaceforPrunedNode(e),e[2].add(e[0]),e[2].add(e[1],e[1].source,e[1].target);t.splice(t.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},T.prototype.findPlaceforPrunedNode=function(t){var e,i,n=t[0];if(i=n==t[1].source?t[1].target:t[1].source,h.PURE_INCREMENTAL)n.setCenter(i.getCenterX()+t[3].getWidth(),i.getCenterY()+t[3].getHeight());else{var r=i.startX,o=i.finishX,s=i.startY,a=i.finishY,l=[0,0,0,0];if(s>0)for(var d=r;d<=o;d++)l[0]+=this.grid[d][s-1].length+this.grid[d][s].length-1;if(o<this.grid.length-1)for(d=s;d<=a;d++)l[1]+=this.grid[o+1][d].length+this.grid[o][d].length-1;if(a<this.grid[0].length-1)for(d=r;d<=o;d++)l[2]+=this.grid[d][a+1].length+this.grid[d][a].length-1;if(r>0)for(d=s;d<=a;d++)l[3]+=this.grid[r-1][d].length+this.grid[r][d].length-1;for(var g,u,f=v.MAX_VALUE,p=0;p<l.length;p++)l[p]<f?(f=l[p],g=1,u=p):l[p]==f&&g++;if(3==g&&0==f)0==l[0]&&0==l[1]&&0==l[2]?e=1:0==l[0]&&0==l[1]&&0==l[3]?e=0:0==l[0]&&0==l[2]&&0==l[3]?e=3:0==l[1]&&0==l[2]&&0==l[3]&&(e=2);else if(2==g&&0==f){var y=Math.floor(2*Math.random());e=0==l[0]&&0==l[1]?0==y?0:1:0==l[0]&&0==l[2]?0==y?0:2:0==l[0]&&0==l[3]?0==y?0:3:0==l[1]&&0==l[2]?0==y?1:2:0==l[1]&&0==l[3]?0==y?1:3:0==y?2:3}else e=4==g&&0==f?y=Math.floor(4*Math.random()):u;0==e?n.setCenter(i.getCenterX(),i.getCenterY()-i.getHeight()/2-c.DEFAULT_EDGE_LENGTH-n.getHeight()/2):1==e?n.setCenter(i.getCenterX()+i.getWidth()/2+c.DEFAULT_EDGE_LENGTH+n.getWidth()/2,i.getCenterY()):2==e?n.setCenter(i.getCenterX(),i.getCenterY()+i.getHeight()/2+c.DEFAULT_EDGE_LENGTH+n.getHeight()/2):n.setCenter(i.getCenterX()-i.getWidth()/2-c.DEFAULT_EDGE_LENGTH-n.getWidth()/2,i.getCenterY())}},t.exports=T},991:(t,e,i)=>{var n=i(551).FDLayoutNode,r=i(551).IMath;function o(t,e,i,r){n.call(this,t,e,i,r)}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];o.prototype.calculateDisplacement=function(){var t=this.graphManager.getLayout();null!=this.getChild()&&this.fixedNodeWeight?(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,n=this.getChild().getNodes(),r=0;r<n.length;r++)null==(i=n[r]).getChild()?(i.displacementX+=t,i.displacementY+=e):i.propogateDisplacementToChildren(t,e)},o.prototype.move=function(){var t=this.graphManager.getLayout();null!=this.child&&0!=this.child.getNodes().length||(this.moveBy(this.displacementX,this.displacementY),t.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY)),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},o.prototype.setPred1=function(t){this.pred1=t},o.prototype.getPred1=function(){return pred1},o.prototype.getPred2=function(){return pred2},o.prototype.setNext=function(t){this.next=t},o.prototype.getNext=function(){return next},o.prototype.setProcessed=function(t){this.processed=t},o.prototype.isProcessed=function(){return processed},t.exports=o},902:(t,e,i)=>{function n(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}var r=i(806),o=i(551).LinkedList,s=i(551).Matrix,a=i(551).SVD;function h(){}h.handleConstraints=function(t){var e={};e.fixedNodeConstraint=t.constraints.fixedNodeConstraint,e.alignmentConstraint=t.constraints.alignmentConstraint,e.relativePlacementConstraint=t.constraints.relativePlacementConstraint;for(var i=new Map,h=new Map,l=[],c=[],d=t.getAllNodes(),g=0,u=0;u<d.length;u++){var f=d[u];null==f.getChild()&&(h.set(f.id,g++),l.push(f.getCenterX()),c.push(f.getCenterY()),i.set(f.id,f))}e.relativePlacementConstraint&&e.relativePlacementConstraint.forEach(function(t){t.gap||0==t.gap||(t.left?t.gap=r.DEFAULT_EDGE_LENGTH+i.get(t.left).getWidth()/2+i.get(t.right).getWidth()/2:t.gap=r.DEFAULT_EDGE_LENGTH+i.get(t.top).getHeight()/2+i.get(t.bottom).getHeight()/2)});var p=function(t){var e=0,i=0;return t.forEach(function(t){e+=l[h.get(t)],i+=c[h.get(t)]}),{x:e/t.size,y:i/t.size}},v=function(t,e,i,r,s){var a=new Map;t.forEach(function(t,e){a.set(e,0)}),t.forEach(function(t,e){t.forEach(function(t){a.set(t.id,a.get(t.id)+1)})});var d=new Map,g=new Map,u=new o;a.forEach(function(t,n){0==t?(u.push(n),i||("horizontal"==e?d.set(n,h.has(n)?l[h.get(n)]:r.get(n)):d.set(n,h.has(n)?c[h.get(n)]:r.get(n)))):d.set(n,Number.NEGATIVE_INFINITY),i&&g.set(n,new Set([n]))}),i&&s.forEach(function(t){var n=[];if(t.forEach(function(t){i.has(t)&&n.push(t)}),n.length>0){var o=0;n.forEach(function(t){"horizontal"==e?(d.set(t,h.has(t)?l[h.get(t)]:r.get(t)),o+=d.get(t)):(d.set(t,h.has(t)?c[h.get(t)]:r.get(t)),o+=d.get(t))}),o/=n.length,t.forEach(function(t){i.has(t)||d.set(t,o)})}else{var s=0;t.forEach(function(t){s+="horizontal"==e?h.has(t)?l[h.get(t)]:r.get(t):h.has(t)?c[h.get(t)]:r.get(t)}),s/=t.length,t.forEach(function(t){d.set(t,s)})}});for(var f=function(){var n=u.shift();t.get(n).forEach(function(t){if(d.get(t.id)<d.get(n)+t.gap)if(i&&i.has(t.id)){var o=void 0;if(o="horizontal"==e?h.has(t.id)?l[h.get(t.id)]:r.get(t.id):h.has(t.id)?c[h.get(t.id)]:r.get(t.id),d.set(t.id,o),o<d.get(n)+t.gap){var s=d.get(n)+t.gap-o;g.get(n).forEach(function(t){d.set(t,d.get(t)-s)})}}else d.set(t.id,d.get(n)+t.gap);a.set(t.id,a.get(t.id)-1),0==a.get(t.id)&&u.push(t.id),i&&g.set(t.id,function(t,e){var i=new Set(t),n=!0,r=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(n=(s=a.next()).done);n=!0){var h=s.value;i.add(h)}}catch(l){r=!0,o=l}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}return i}(g.get(n),g.get(t.id)))})};0!=u.length;)f();if(i){var p=new Set;t.forEach(function(t,e){0==t.length&&p.add(e)});var v=[];g.forEach(function(t,e){if(p.has(e)){var r=!1,o=!0,s=!1,a=void 0;try{for(var h,l=t[Symbol.iterator]();!(o=(h=l.next()).done);o=!0){var c=h.value;i.has(c)&&(r=!0)}}catch(u){s=!0,a=u}finally{try{!o&&l.return&&l.return()}finally{if(s)throw a}}if(!r){var d=!1,g=void 0;v.forEach(function(e,i){e.has([].concat(n(t))[0])&&(d=!0,g=i)}),d?t.forEach(function(t){v[g].add(t)}):v.push(new Set(t))}}}),v.forEach(function(t,i){var n=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY,a=Number.NEGATIVE_INFINITY,g=!0,u=!1,f=void 0;try{for(var p,v=t[Symbol.iterator]();!(g=(p=v.next()).done);g=!0){var y=p.value,m=void 0;m="horizontal"==e?h.has(y)?l[h.get(y)]:r.get(y):h.has(y)?c[h.get(y)]:r.get(y);var E=d.get(y);m<n&&(n=m),m>s&&(s=m),E<o&&(o=E),E>a&&(a=E)}}catch(_){u=!0,f=_}finally{try{!g&&v.return&&v.return()}finally{if(u)throw f}}var N=(n+s)/2-(o+a)/2,T=!0,A=!1,w=void 0;try{for(var L,I=t[Symbol.iterator]();!(T=(L=I.next()).done);T=!0){var C=L.value;d.set(C,d.get(C)+N)}}catch(_){A=!0,w=_}finally{try{!T&&I.return&&I.return()}finally{if(A)throw w}}})}return d},y=function(t){var e=0,i=0,n=0,r=0;if(t.forEach(function(t){t.left?l[h.get(t.left)]-l[h.get(t.right)]>=0?e++:i++:c[h.get(t.top)]-c[h.get(t.bottom)]>=0?n++:r++}),e>i&&n>r)for(var o=0;o<h.size;o++)l[o]=-1*l[o],c[o]=-1*c[o];else if(e>i)for(var s=0;s<h.size;s++)l[s]=-1*l[s];else if(n>r)for(var a=0;a<h.size;a++)c[a]=-1*c[a]},m=function(t){var e=[],i=new o,n=new Set,r=0;return t.forEach(function(o,s){if(!n.has(s)){e[r]=[];var a=s;for(i.push(a),n.add(a),e[r].push(a);0!=i.length;)a=i.shift(),t.get(a).forEach(function(t){n.has(t.id)||(i.push(t.id),n.add(t.id),e[r].push(t.id))});r++}}),e},E=function(t){var e=new Map;return t.forEach(function(t,i){e.set(i,[])}),t.forEach(function(t,i){t.forEach(function(t){e.get(i).push(t),e.get(t.id).push({id:i,gap:t.gap,direction:t.direction})})}),e},N=function(t){var e=new Map;return t.forEach(function(t,i){e.set(i,[])}),t.forEach(function(t,i){t.forEach(function(t){e.get(t.id).push({id:i,gap:t.gap,direction:t.direction})})}),e},T=[],A=[],w=!1,L=!1,I=new Set,C=new Map,_=new Map,M=[];if(e.fixedNodeConstraint&&e.fixedNodeConstraint.forEach(function(t){I.add(t.nodeId)}),e.relativePlacementConstraint&&(e.relativePlacementConstraint.forEach(function(t){t.left?(C.has(t.left)?C.get(t.left).push({id:t.right,gap:t.gap,direction:"horizontal"}):C.set(t.left,[{id:t.right,gap:t.gap,direction:"horizontal"}]),C.has(t.right)||C.set(t.right,[])):(C.has(t.top)?C.get(t.top).push({id:t.bottom,gap:t.gap,direction:"vertical"}):C.set(t.top,[{id:t.bottom,gap:t.gap,direction:"vertical"}]),C.has(t.bottom)||C.set(t.bottom,[]))}),_=E(C),M=m(_)),r.TRANSFORM_ON_CONSTRAINT_HANDLING){if(e.fixedNodeConstraint&&e.fixedNodeConstraint.length>1)e.fixedNodeConstraint.forEach(function(t,e){T[e]=[t.position.x,t.position.y],A[e]=[l[h.get(t.nodeId)],c[h.get(t.nodeId)]]}),w=!0;else if(e.alignmentConstraint)!function(){var t=0;if(e.alignmentConstraint.vertical){for(var i=e.alignmentConstraint.vertical,r=function(e){var r=new Set;i[e].forEach(function(t){r.add(t)});var o=new Set([].concat(n(r)).filter(function(t){return I.has(t)})),s=void 0;s=o.size>0?l[h.get(o.values().next().value)]:p(r).x,i[e].forEach(function(e){T[t]=[s,c[h.get(e)]],A[t]=[l[h.get(e)],c[h.get(e)]],t++})},o=0;o<i.length;o++)r(o);w=!0}if(e.alignmentConstraint.horizontal){for(var s=e.alignmentConstraint.horizontal,a=function(e){var i=new Set;s[e].forEach(function(t){i.add(t)});var r=new Set([].concat(n(i)).filter(function(t){return I.has(t)})),o=void 0;o=r.size>0?l[h.get(r.values().next().value)]:p(i).y,s[e].forEach(function(e){T[t]=[l[h.get(e)],o],A[t]=[l[h.get(e)],c[h.get(e)]],t++})},d=0;d<s.length;d++)a(d);w=!0}e.relativePlacementConstraint&&(L=!0)}();else if(e.relativePlacementConstraint){for(var x=0,O=0,D=0;D<M.length;D++)M[D].length>x&&(x=M[D].length,O=D);if(x<_.size/2)y(e.relativePlacementConstraint),w=!1,L=!1;else{var R=new Map,b=new Map,G=[];M[O].forEach(function(t){C.get(t).forEach(function(e){"horizontal"==e.direction?(R.has(t)?R.get(t).push(e):R.set(t,[e]),R.has(e.id)||R.set(e.id,[]),G.push({left:t,right:e.id})):(b.has(t)?b.get(t).push(e):b.set(t,[e]),b.has(e.id)||b.set(e.id,[]),G.push({top:t,bottom:e.id}))})}),y(G),L=!1;var F=v(R,"horizontal"),S=v(b,"vertical");M[O].forEach(function(t,e){A[e]=[l[h.get(t)],c[h.get(t)]],T[e]=[],F.has(t)?T[e][0]=F.get(t):T[e][0]=l[h.get(t)],S.has(t)?T[e][1]=S.get(t):T[e][1]=c[h.get(t)]}),w=!0}}if(w){for(var P,U=s.transpose(T),Y=s.transpose(A),k=0;k<U.length;k++)U[k]=s.multGamma(U[k]),Y[k]=s.multGamma(Y[k]);var H=s.multMat(U,s.transpose(Y)),X=a.svd(H);P=s.multMat(X.V,s.transpose(X.U));for(var z=0;z<h.size;z++){var V=[l[z],c[z]],B=[P[0][0],P[1][0]],W=[P[0][1],P[1][1]];l[z]=s.dotProduct(V,B),c[z]=s.dotProduct(V,W)}L&&y(e.relativePlacementConstraint)}}if(r.ENFORCE_CONSTRAINTS){if(e.fixedNodeConstraint&&e.fixedNodeConstraint.length>0){var j={x:0,y:0};e.fixedNodeConstraint.forEach(function(t,e){var i,n,r={x:l[h.get(t.nodeId)],y:c[h.get(t.nodeId)]},o=t.position,s=(n=r,{x:(i=o).x-n.x,y:i.y-n.y});j.x+=s.x,j.y+=s.y}),j.x/=e.fixedNodeConstraint.length,j.y/=e.fixedNodeConstraint.length,l.forEach(function(t,e){l[e]+=j.x}),c.forEach(function(t,e){c[e]+=j.y}),e.fixedNodeConstraint.forEach(function(t){l[h.get(t.nodeId)]=t.position.x,c[h.get(t.nodeId)]=t.position.y})}if(e.alignmentConstraint){if(e.alignmentConstraint.vertical)for(var $=e.alignmentConstraint.vertical,q=function(t){var e=new Set;$[t].forEach(function(t){e.add(t)});var i=new Set([].concat(n(e)).filter(function(t){return I.has(t)})),r=void 0;r=i.size>0?l[h.get(i.values().next().value)]:p(e).x,e.forEach(function(t){I.has(t)||(l[h.get(t)]=r)})},K=0;K<$.length;K++)q(K);if(e.alignmentConstraint.horizontal)for(var Z=e.alignmentConstraint.horizontal,Q=function(t){var e=new Set;Z[t].forEach(function(t){e.add(t)});var i=new Set([].concat(n(e)).filter(function(t){return I.has(t)})),r=void 0;r=i.size>0?c[h.get(i.values().next().value)]:p(e).y,e.forEach(function(t){I.has(t)||(c[h.get(t)]=r)})},J=0;J<Z.length;J++)Q(J)}e.relativePlacementConstraint&&function(){var t=new Map,i=new Map,n=new Map,r=new Map,o=new Map,s=new Map,a=new Set,d=new Set;if(I.forEach(function(t){a.add(t),d.add(t)}),e.alignmentConstraint){if(e.alignmentConstraint.vertical)for(var g=e.alignmentConstraint.vertical,u=function(e){n.set("dummy"+e,[]),g[e].forEach(function(i){t.set(i,"dummy"+e),n.get("dummy"+e).push(i),I.has(i)&&a.add("dummy"+e)}),o.set("dummy"+e,l[h.get(g[e][0])])},f=0;f<g.length;f++)u(f);if(e.alignmentConstraint.horizontal)for(var p=e.alignmentConstraint.horizontal,y=function(t){r.set("dummy"+t,[]),p[t].forEach(function(e){i.set(e,"dummy"+t),r.get("dummy"+t).push(e),I.has(e)&&d.add("dummy"+t)}),s.set("dummy"+t,c[h.get(p[t][0])])},T=0;T<p.length;T++)y(T)}var A=new Map,w=new Map,L=function(e){C.get(e).forEach(function(n){var r=void 0,o=void 0;"horizontal"==n.direction?(r=t.get(e)?t.get(e):e,o=t.get(n.id)?{id:t.get(n.id),gap:n.gap,direction:n.direction}:n,A.has(r)?A.get(r).push(o):A.set(r,[o]),A.has(o.id)||A.set(o.id,[])):(r=i.get(e)?i.get(e):e,o=i.get(n.id)?{id:i.get(n.id),gap:n.gap,direction:n.direction}:n,w.has(r)?w.get(r).push(o):w.set(r,[o]),w.has(o.id)||w.set(o.id,[]))})},_=!0,M=!1,x=void 0;try{for(var O,D=C.keys()[Symbol.iterator]();!(_=(O=D.next()).done);_=!0)L(O.value)}catch(tt){M=!0,x=tt}finally{try{!_&&D.return&&D.return()}finally{if(M)throw x}}var R=E(A),b=E(w),G=m(R),F=m(b),S=N(A),P=N(w),U=[],Y=[];G.forEach(function(t,e){U[e]=[],t.forEach(function(t){0==S.get(t).length&&U[e].push(t)})}),F.forEach(function(t,e){Y[e]=[],t.forEach(function(t){0==P.get(t).length&&Y[e].push(t)})});var k=v(A,"horizontal",a,o,U),H=v(w,"vertical",d,s,Y),X=function(t){n.get(t)?n.get(t).forEach(function(e){l[h.get(e)]=k.get(t)}):l[h.get(t)]=k.get(t)},z=!0,V=!1,B=void 0;try{for(var W,j=k.keys()[Symbol.iterator]();!(z=(W=j.next()).done);z=!0)X(W.value)}catch(tt){V=!0,B=tt}finally{try{!z&&j.return&&j.return()}finally{if(V)throw B}}var $=function(t){r.get(t)?r.get(t).forEach(function(e){c[h.get(e)]=H.get(t)}):c[h.get(t)]=H.get(t)},q=!0,K=!1,Z=void 0;try{for(var Q,J=H.keys()[Symbol.iterator]();!(q=(Q=J.next()).done);q=!0)$(Q.value)}catch(tt){K=!0,Z=tt}finally{try{!q&&J.return&&J.return()}finally{if(K)throw Z}}}()}for(var tt=0;tt<d.length;tt++){var et=d[tt];null==et.getChild()&&et.setCenter(l[h.get(et.id)],c[h.get(et.id)])}},t.exports=h},551:e=>{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(45);return n})()},t.exports=n(i(22318))}}]); \ No newline at end of file diff --git a/assets/js/6bba662b.e636cc51.js b/assets/js/6bba662b.e636cc51.js new file mode 100644 index 0000000000..32f3bd99b9 --- /dev/null +++ b/assets/js/6bba662b.e636cc51.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5296],{65404:(e,n,l)=>{l.d(n,{R:()=>d,x:()=>i});var s=l(36672);const t={},r=s.createContext(t);function d(e){const n=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),s.createElement(r.Provider,{value:n},e.children)}},92573:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","source":"@site/docs/rules/project_depth.md","sourceDirName":"rules","slug":"/rules/project_depth","permalink":"/ModuleCheck/docs/next/rules/project_depth","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/project_depth.md","tags":[],"version":"current","frontMatter":{"id":"project_depth","slug":"/rules/project_depth","title":"Project Depth","sidebar_label":"Project Depth"},"sidebar":"Docs","previous":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/next/rules/overshot_dependency"},"next":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/next/rules/use_anvil_factory_generation"}}');var t=l(23420),r=l(65404);const d={id:"project_depth",slug:"/rules/project_depth",title:"Project Depth",sidebar_label:"Project Depth"},i=void 0,c={},o=[{value:"Dependencies and Build Concurrency",id:"dependencies-and-build-concurrency",level:3},{value:"Depth",id:"depth",level:3}];function h(e){const n={a:"a",code:"code",em:"em",h3:"h3",hr:"hr",li:"li",mermaid:"mermaid",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"TL;DR - Low depth values mean faster builds and better all-around scalability."}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsxs)(n.p,{children:["It's often useful to think of module dependencies as a directed tree\nor ",(0,t.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Directed_acyclic_graph",children:"directed acyclic graph"}),". If a module is a\nnode, then each module dependency is a child node, and the dependencies of those dependencies are\ngrand-child nodes."]}),"\n",(0,t.jsxs)(n.p,{children:["This is especially useful when thinking about ",(0,t.jsx)(n.strong,{children:"build performance"}),", because the parent-child\nrelationship is clear: ",(0,t.jsx)(n.em,{children:"child nodes must build before parent nodes"}),"."]}),"\n",(0,t.jsx)(n.mermaid,{value:"flowchart TB\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(:app):::depth2\n\n screen1(:screen-1):::depth1\n screen2(:screen-2):::depth1\n\n lib1(:lib-1):::depth0\n lib2(:lib-2):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n\n screen1 --\x3e lib1\n screen1 --\x3e lib2\n screen2 --\x3e lib2"}),"\n",(0,t.jsx)(n.p,{children:"In the above example,"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:":lib-1"})," and ",(0,t.jsx)(n.code,{children:":lib-2"})," must be built before ",(0,t.jsx)(n.code,{children:":screen-1"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:":lib-2"})," must be build before ",(0,t.jsx)(n.code,{children:":screen-2"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:":screen-1"})," and ",(0,t.jsx)(n.code,{children:":screen-2"})," must be built before ",(0,t.jsx)(n.code,{children:":app"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build\nbefore their parents."}),"\n",(0,t.jsx)(n.h3,{id:"dependencies-and-build-concurrency",children:"Dependencies and Build Concurrency"}),"\n",(0,t.jsx)(n.p,{children:"Individual module builds are always done single-threaded, but multiple modules may build in parallel\nso long as no module in the set depends upon another module in that set. In the above graph,"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:":lib-1"})," and ",(0,t.jsx)(n.code,{children:":lib-2"})," may build in parallel"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:":lib-1"})," and ",(0,t.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:":scren-1"})," and ",(0,t.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"The maximum number of parallel module builds is determined by the structure of the dependency graph\nand the number of available processor cores on the machine which is performing the build."}),"\n",(0,t.jsx)(n.h3,{id:"depth",children:"Depth"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Depth"})," refers to the maximum number of edges between a module and each of its leaf nodes in the\nproject dependency graph."]}),"\n",(0,t.jsx)(n.p,{children:"Low depth values indicate a shallow or flat project structure with loose (or no) coupling between\nmodules. In a full build, these projects scale well with hardware upgrades because they're able to\nbuild all those independent modules in parallel."}),"\n",(0,t.jsx)(n.mermaid,{value:"flowchart TB\n\n subgraph sg [A shallow graph]\n direction TB\n\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 2):::depth2\n\n screen1(depth: 1):::depth1\n screen2(depth: 1):::depth1\n screen3(depth: 1):::depth1\n screen4(depth: 1):::depth1\n\n lib1(depth: 0):::depth0\n lib2(depth: 0):::depth0\n lib3(depth: 0):::depth0\n lib4(depth: 0):::depth0\n lib5(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e lib1\n screen1 --\x3e lib4\n\n screen2 --\x3e lib1\n screen2 --\x3e lib3\n screen2 --\x3e lib4\n\n screen3 --\x3e lib2\n screen3 --\x3e lib3\n screen3 --\x3e lib4\n\n screen4 --\x3e lib3\n screen4 --\x3e lib5\n\n end\n\n style sg opacity:0.0\n"}),"\n",(0,t.jsxs)(n.p,{children:['On the other hand, "deep" projects do not offer many opportunities for parallelization. They have\nproject dependencies which must be built ',(0,t.jsx)(n.em,{children:"sequentially"}),". They also perform poorly in incremental\nbuilds, because a single change to even a mid-level module invalidates cached builds for half of the\nproject."]}),"\n",(0,t.jsx)(n.mermaid,{value:"flowchart TB\n\n style sg opacity:0.0\n subgraph sg [A deep graph]\n direction TB\n\n classDef depth6 fill:#800,stroke:#000,color:#FFF\n classDef depth5 fill:#A50,stroke:#000,color:#FFF\n classDef depth4 fill:#C0B,stroke:#000,color:#000\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 6):::depth6\n\n screen1(depth: 5):::depth5\n screen2(depth: 5):::depth5\n\n screen3(depth: 4):::depth4\n screen4(depth: 4):::depth4\n\n lib1(depth: 3):::depth3\n lib2(depth: 3):::depth3\n\n lib3(depth: 2):::depth2\n lib4(depth: 2):::depth2\n\n lib5(depth: 1):::depth1\n\n lib6(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e screen3\n screen1 --\x3e screen4\n\n screen2 --\x3e screen4\n\n screen3 --\x3e lib1\n screen3 --\x3e lib2\n\n screen4 --\x3e lib1\n screen4 --\x3e lib4\n\n lib1 --\x3e lib3\n lib1 --\x3e lib4\n\n lib2 --\x3e lib3\n\n lib3 --\x3e lib5\n lib4 --\x3e lib5\n\n lib5 --\x3e lib6\n\n end\n"})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/6e6115bc.9c665f96.js b/assets/js/6e6115bc.9c665f96.js new file mode 100644 index 0000000000..cdcb5975b8 --- /dev/null +++ b/assets/js/6e6115bc.9c665f96.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[744],{54972:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","source":"@site/versioned_docs/version-0.12.5/ci_workflow.md","sourceDirName":".","slug":"/ci-workflow","permalink":"/ModuleCheck/docs/ci-workflow","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/ci_workflow.md","tags":[],"version":"0.12.5","frontMatter":{"id":"ci-workflow","sidebar_label":"CI Workflow","title":"CI Workflow"},"sidebar":"Docs","previous":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/suppressing-findings"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/rules/unused_dependency"}}');var s=t(23420),a=t(65404);const i={id:"ci-workflow",sidebar_label:"CI Workflow",title:"CI Workflow"},l=void 0,r={},c=[{value:"Using CI over git hooks",id:"using-ci-over-git-hooks",level:3},{value:"Example Flow chart",id:"example-flow-chart",level:3},{value:"Example GitHub Action",id:"example-github-action",level:3}];function h(e){const n={a:"a",code:"code",h3:"h3",mermaid:"mermaid",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and\nautomatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to\napply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run.\nThis is similar to a git pre-commit hook, except the work is delegated to a build server."}),"\n",(0,s.jsx)(n.h3,{id:"using-ci-over-git-hooks",children:"Using CI over git hooks"}),"\n",(0,s.jsx)(n.p,{children:"The traditional method for applying changes automatically is with a git hook, such as pre-commit or\npre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor\ndeveloper experience. With a CI task, the execution is done automatically and asynchronously, while\nthe developer is already moving on to something else."}),"\n",(0,s.jsx)(n.p,{children:"A git hook also technically doesn't guarantee that a task is executed before code is checked in to a\nmain branch, since there's no guarantee that a hook is enabled. With CI, the task will output a\nstatus check. If a branch protection rule is enabled, that status check can be required. This will\nthen guarantee that the task has run (successfully) before any code is checked in to the protected\nbranch."}),"\n",(0,s.jsx)(n.h3,{id:"example-flow-chart",children:"Example Flow chart"}),"\n",(0,s.jsxs)(n.p,{children:['This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The\ncancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an\n"optimistic" workflow, in that it assumes that the ',(0,s.jsx)(n.code,{children:"modulecheck"})," task will not generate changes\nwhich would trigger a restart."]}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n Start(CI Start):::good --\x3e mGraph\n Start --\x3e tGraph\n Start --\x3e cGraph\n\n subgraph mGraph [runner 1]\n direction TB\n ModuleCheck(./gradlew moduleCheckAuto):::code --\x3e ChangesModuleCheck\n ChangesModuleCheck{Graph changes?} --- yesM[yes]:::lineLabel --\x3e CommitModuleCheck(Commit changes and push):::stop\n ChangesModuleCheck --- noM[no]:::lineLabel --\x3e EndModuleCheck("#10003;"):::good\n end\n\n subgraph tGraph [runner 2]\n direction TB\n Tests(./gradlew test):::code --\x3e EndTests("#10003;"):::good\n end\n\n subgraph cGraph [runner 3]\n direction TB\n Cancel(Cancel previous CI run):::code\n end\n\n style tGraph fill:#EEE,stroke:#000\n style cGraph fill:#EEE,stroke:#000\n style mGraph fill:#EEE,stroke:#000\n\n classDef good fill:#0B0,stroke:#000\n classDef stop fill:#E33,stroke:#000\n\n classDef code fill:#AAA,stroke:#000\n\n style ChangesModuleCheck fill:#CD1,stroke:#000\n\n classDef lineLabel fill:#FFF,stroke:#FFF'}),"\n",(0,s.jsx)(n.h3,{id:"example-github-action",children:"Example GitHub Action"}),"\n",(0,s.jsxs)(n.p,{children:["Here's an Action which will run ModuleCheck, then commit any changes\nusing ",(0,s.jsx)(n.a,{href:"https://github.com/stefanzweifel/git-auto-commit-action",children:"Stefanzweifel's auto-commit"}),". This\nrequires a personal access token secret, or the commit step will fail."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:"title=.github/workflows.module-check.yml",children:"name: ModuleCheck\n\non:\n pull_request:\n\njobs:\n\n cancel-stale-jobs:\n name: Cancel stale jobs\n runs-on: ubuntu-latest\n\n steps:\n # cancel previous jobs\n - name: Cancel Previous Runs\n uses: styfle/cancel-workflow-action@0.9.0\n env:\n GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'\n\n ModuleCheck:\n name: ModuleCheck\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n # Must use a personal access token in order to commit changes\n token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '11'\n\n # performs tree-shaking on the Gradle dependency graph\n - name: modulecheck\n run: ./gradlew moduleCheckAuto --no-daemon\n\n # If ModuleCheck generated changes, commit and push those changes.\n # If there are no changes, then this is a no-op.\n - name: commit changes\n uses: stefanzweifel/git-auto-commit-action@v4\n with:\n commit_message: Apply ModuleCheck changes\n commit_options: '--no-verify --signoff'\n\n tests:\n name: Unit tests\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n token: ${{ secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n - name: all tests\n run: ./gradlew test --no-daemon\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var o=t(36672);const s={},a=o.createContext(s);function i(e){const n=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6e873df7.fec0e1cb.js b/assets/js/6e873df7.fec0e1cb.js new file mode 100644 index 0000000000..e4e29cf60f --- /dev/null +++ b/assets/js/6e873df7.fec0e1cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3127],{31358:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/docs/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sort_plugins","permalink":"/ModuleCheck/docs/next/rules/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/sorting/sort_plugins.md","tags":[],"version":"current","frontMatter":{"id":"sort_plugins","slug":"/rules/sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/next/rules/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/next/rules/disable_android_resources"}}');var r=s(23420),o=s(65404);const i={id:"sort_plugins",slug:"/rules/sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d()}},65404:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>l});var n=s(36672);const r={},o=n.createContext(r);function i(e){const t=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/70335a48.f86179a4.js b/assets/js/70335a48.f86179a4.js new file mode 100644 index 0000000000..429ecd03a5 --- /dev/null +++ b/assets/js/70335a48.f86179a4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4738],{65404:(e,n,t)=>{t.d(n,{R:()=>d,x:()=>o});var s=t(36672);const u={},r=s.createContext(u);function d(e){const n=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(u):e.components||u:d(e.components),s.createElement(r.Provider,{value:n},e.children)}},87431:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>a,frontMatter:()=>d,metadata:()=>s,toc:()=>i});const s=JSON.parse('{"id":"rules/unused","title":"Unused Dependency","description":"","source":"@site/versioned_docs/version-0.10.0/rules/unused.md","sourceDirName":"rules","slug":"/rules/unused","permalink":"/ModuleCheck/docs/0.10.0/rules/unused","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/unused.md","tags":[],"version":"0.10.0","frontMatter":{"id":"unused","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Rules","next":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.10.0/rules/redundant"}}');var u=t(23420),r=t(65404);const d={id:"unused",title:"Unused Dependency",sidebar_label:"Unused Dependency"},o=void 0,c={},i=[];function l(e){return(0,u.jsx)(u.Fragment,{})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,u.jsx)(n,{...e,children:(0,u.jsx)(l,{...e})}):l()}}}]); \ No newline at end of file diff --git a/assets/js/71174ce3.4f3ede8c.js b/assets/js/71174ce3.4f3ede8c.js new file mode 100644 index 0000000000..de0a13346a --- /dev/null +++ b/assets/js/71174ce3.4f3ede8c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1792],{59847:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>a,frontMatter:()=>u,metadata:()=>t,toc:()=>i});const t=JSON.parse('{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.12.0/rules/unused.md","sourceDirName":"rules","slug":"/rules/unused","permalink":"/ModuleCheck/docs/0.12.0/rules/unused","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/unused.md","tags":[],"version":"0.12.0","frontMatter":{"id":"unused","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.0/ci-workflow"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.0/rules/must_be_api"}}');var d=s(23420),o=s(65404);const u={id:"unused",title:"Unused Dependency",sidebar_label:"Unused Dependency"},r=void 0,c={},i=[];function l(e){const n={p:"p",...(0,o.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,d.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>u,x:()=>r});var t=s(36672);const d={},o=t.createContext(d);function u(e){const n=t.useContext(o);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:u(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7136df27.1082e2aa.js b/assets/js/7136df27.1082e2aa.js new file mode 100644 index 0000000000..a82c7f3bc9 --- /dev/null +++ b/assets/js/7136df27.1082e2aa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4167],{7519:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>a,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"rules/depths","title":"Depths","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","source":"@site/versioned_docs/version-0.12.0/rules/depths.md","sourceDirName":"rules","slug":"/rules/depths","permalink":"/ModuleCheck/docs/0.12.0/rules/depths","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/depths.md","tags":[],"version":"0.12.0","frontMatter":{"id":"depths","title":"Depths","sidebar_label":"Depths"},"sidebar":"Docs","previous":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/overshot_dependency"},"next":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.12.0/rules/compiler/could_use_anvil_factory"}}');var r=l(23420),t=l(65404);const d={id:"depths",title:"Depths",sidebar_label:"Depths"},i=void 0,c={},o=[{value:"Dependencies and Build Concurrency",id:"dependencies-and-build-concurrency",level:3},{value:"Depth",id:"depth",level:3}];function h(e){const n={a:"a",code:"code",em:"em",h3:"h3",hr:"hr",li:"li",mermaid:"mermaid",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"TL;DR - Low depth values mean faster builds and better all-around scalability."}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["It's often useful to think of module dependencies as a directed tree\nor ",(0,r.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Directed_acyclic_graph",children:"directed acyclic graph"}),". If a module is a\nnode, then each module dependency is a child node, and the dependencies of those dependencies are\ngrand-child nodes."]}),"\n",(0,r.jsxs)(n.p,{children:["This is especially useful when thinking about ",(0,r.jsx)(n.strong,{children:"build performance"}),", because the parent-child\nrelationship is clear: ",(0,r.jsx)(n.em,{children:"child nodes must build before parent nodes"}),"."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(:app):::depth2\n\n screen1(:screen-1):::depth1\n screen2(:screen-2):::depth1\n\n lib1(:lib-1):::depth0\n lib2(:lib-2):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n\n screen1 --\x3e lib1\n screen1 --\x3e lib2\n screen2 --\x3e lib2"}),"\n",(0,r.jsx)(n.p,{children:"In the above example,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," must be built before ",(0,r.jsx)(n.code,{children:":screen-1"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-2"})," must be build before ",(0,r.jsx)(n.code,{children:":screen-2"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":screen-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," must be built before ",(0,r.jsx)(n.code,{children:":app"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build\nbefore their parents."}),"\n",(0,r.jsx)(n.h3,{id:"dependencies-and-build-concurrency",children:"Dependencies and Build Concurrency"}),"\n",(0,r.jsx)(n.p,{children:"Individual module builds are always done single-threaded, but multiple modules may build in parallel\nso long as no module in the set depends upon another module in that set. In the above graph,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":scren-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of parallel module builds is determined by the structure of the dependency graph\nand the number of available processor cores on the machine which is performing the build."}),"\n",(0,r.jsx)(n.h3,{id:"depth",children:"Depth"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Depth"})," refers to the maximum number of edges between a module and each of its leaf nodes in the\nproject dependency graph."]}),"\n",(0,r.jsx)(n.p,{children:"Low depth values indicate a shallow or flat project structure with loose (or no) coupling between\nmodules. In a full build, these projects scale well with hardware upgrades because they're able to\nbuild all those independent modules in parallel."}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n subgraph sg [A shallow graph]\n direction TB\n\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 2):::depth2\n\n screen1(depth: 1):::depth1\n screen2(depth: 1):::depth1\n screen3(depth: 1):::depth1\n screen4(depth: 1):::depth1\n\n lib1(depth: 0):::depth0\n lib2(depth: 0):::depth0\n lib3(depth: 0):::depth0\n lib4(depth: 0):::depth0\n lib5(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e lib1\n screen1 --\x3e lib4\n\n screen2 --\x3e lib1\n screen2 --\x3e lib3\n screen2 --\x3e lib4\n\n screen3 --\x3e lib2\n screen3 --\x3e lib3\n screen3 --\x3e lib4\n\n screen4 --\x3e lib3\n screen4 --\x3e lib5\n\n end\n\n style sg opacity:0.0\n"}),"\n",(0,r.jsxs)(n.p,{children:['On the other hand, "deep" projects do not offer many opportunities for parallelization. They have\nproject dependencies which must be built ',(0,r.jsx)(n.em,{children:"sequentially"}),". They also perform poorly in incremental\nbuilds, because a single change to even a mid-level module invalidates cached builds for half of the\nproject."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n style sg opacity:0.0\n subgraph sg [A deep graph]\n direction TB\n\n classDef depth6 fill:#800,stroke:#000,color:#FFF\n classDef depth5 fill:#A50,stroke:#000,color:#FFF\n classDef depth4 fill:#C0B,stroke:#000,color:#000\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 6):::depth6\n\n screen1(depth: 5):::depth5\n screen2(depth: 5):::depth5\n\n screen3(depth: 4):::depth4\n screen4(depth: 4):::depth4\n\n lib1(depth: 3):::depth3\n lib2(depth: 3):::depth3\n\n lib3(depth: 2):::depth2\n lib4(depth: 2):::depth2\n\n lib5(depth: 1):::depth1\n\n lib6(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e screen3\n screen1 --\x3e screen4\n\n screen2 --\x3e screen4\n\n screen3 --\x3e lib1\n screen3 --\x3e lib2\n\n screen4 --\x3e lib1\n screen4 --\x3e lib4\n\n lib1 --\x3e lib3\n lib1 --\x3e lib4\n\n lib2 --\x3e lib3\n\n lib3 --\x3e lib5\n lib4 --\x3e lib5\n\n lib5 --\x3e lib6\n\n end\n"})]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},65404:(e,n,l)=>{l.d(n,{R:()=>d,x:()=>i});var s=l(36672);const r={},t=s.createContext(r);function d(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/71eb5ef4.a76ebaef.js b/assets/js/71eb5ef4.a76ebaef.js new file mode 100644 index 0000000000..4bf35c0571 --- /dev/null +++ b/assets/js/71eb5ef4.a76ebaef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7842],{47394:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>a,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","source":"@site/docs/rules/compiler/unused_kapt_plugin.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_plugin","permalink":"/ModuleCheck/docs/next/rules/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/compiler/unused_kapt_plugin.md","tags":[],"version":"current","frontMatter":{"id":"unused_kapt_plugin","slug":"/rules/unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/next/rules/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/next/rules/custom_kapt_matchers"}}');var u=n(23420),o=n(65404);const r={id:"unused_kapt_plugin",slug:"/rules/unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,l={},c=[];function p(e){const t={code:"code",p:"p",...(0,o.R)(),...e.components};return(0,u.jsxs)(t.p,{children:["If there are no ",(0,u.jsx)(t.code,{children:"kapt"}),"/",(0,u.jsx)(t.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in\napplying the ",(0,u.jsx)(t.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function a(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,u.jsx)(t,{...e,children:(0,u.jsx)(p,{...e})}):p(e)}},65404:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>i});var s=n(36672);const u={},o=s.createContext(u);function r(e){const t=s.useContext(o);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(u):e.components||u:r(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/724ecf1a.9bf4f373.js b/assets/js/724ecf1a.9bf4f373.js new file mode 100644 index 0000000000..e1da9630f6 --- /dev/null +++ b/assets/js/724ecf1a.9bf4f373.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2492],{25456:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>o,default:()=>a,frontMatter:()=>i,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/docs/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/next/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/inherited_dependency.md","tags":[],"version":"current","frontMatter":{"id":"inherited_dependency","slug":"/rules/inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/next/rules/must_be_api"},"next":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/next/rules/redundant_dependency"}}');var c=d(23420),s=d(65404);const i={id:"inherited_dependency",slug:"/rules/inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},o=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,s.R)(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(n.p,{children:["Assume that ",(0,c.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,c.jsx)(n.code,{children:":moduleB"}),", and ",(0,c.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,c.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,c.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,c.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,c.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,c.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,c.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,c.jsx)(n.code,{children:":moduleA"})," -> ",(0,c.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,c.jsx)(n,{...e,children:(0,c.jsx)(u,{...e})}):u(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>i,x:()=>o});var t=d(36672);const c={},s=t.createContext(c);function i(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7273998d.6460f2be.js b/assets/js/7273998d.6460f2be.js new file mode 100644 index 0000000000..bbe7558dfa --- /dev/null +++ b/assets/js/7273998d.6460f2be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6360],{29035:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>o,default:()=>a,frontMatter:()=>c,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/docs/rules/unused_dependency.md","sourceDirName":"rules","slug":"/rules/unused_dependency","permalink":"/ModuleCheck/docs/next/rules/unused_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/unused_dependency.md","tags":[],"version":"current","frontMatter":{"id":"unused_dependency","slug":"/rules/unused_dependency","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/next/ci-workflow"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/next/rules/must_be_api"}}');var t=d(23420),u=d(65404);const c={id:"unused_dependency",slug:"/rules/unused_dependency",title:"Unused Dependency",sidebar_label:"Unused Dependency"},o=void 0,r={},l=[];function i(e){const n={p:"p",...(0,u.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,t.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(i,{...e})}):i(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>c,x:()=>o});var s=d(36672);const t={},u=s.createContext(t);function c(e){const n=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),s.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/74876495.62b60152.js b/assets/js/74876495.62b60152.js new file mode 100644 index 0000000000..ba579f0f59 --- /dev/null +++ b/assets/js/74876495.62b60152.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6505],{58118:(e,n,r)=>{r.d(n,{A:()=>l});r(36672);var t=r(13526);const a={tabItem:"tabItem_qogc"};var s=r(23420);function l({children:e,hidden:n,className:r}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,t.A)(a.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>o});var t=r(36672);const a={},s=t.createContext(a);function l(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),t.createElement(s.Provider,{value:n},e.children)}},65552:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>c,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"Dependencies","source":"@site/docs/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/next/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/quickstart.mdx","tags":[],"version":"current","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/next/configuration"}}');var a=r(23420),s=r(65404),l=r(65780),o=r(58118);const c={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},i=void 0,u={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,a.jsxs)(l.A,{children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven("https://oss.sonatype.org/content/repositories/snapshots/")\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.13.0-SNAPSHOT"\n}\n'})})]}),(0,a.jsxs)(o.A,{value:"Groovy",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:'// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven {\n url "https://oss.sonatype.org/content/repositories/snapshots"\n }\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.13.0-SNAPSHOT'\n}\n"})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,a.jsx)(n.p,{children:"all checks"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,a.jsx)(n.p,{children:"all checks with auto-correct"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"check sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,a.jsx)(n.p,{children:"apply sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"report depths of each module"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckDepths\n"})}),"\n",(0,a.jsx)(n.p,{children:"generate (module-only) dependency graphs"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckGraphs\n"})}),"\n",(0,a.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,a.jsxs)(n.p,{children:["See ",(0,a.jsx)(n.a,{href:"/ModuleCheck/docs/next/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,a.jsxs)(l.A,{children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,a.jsx)(n.p,{children:"--or--"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,a.jsx)(o.A,{value:"Groovy",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},65780:(e,n,r)=>{r.d(n,{A:()=>y});var t=r(36672),a=r(13526),s=r(10452),l=r(85291),o=r(10914),c=r(41201),i=r(40622),u=r(42925);function d(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:t}})=>({value:e,label:n,attributes:r,default:t}))}(r);return function(e){const n=(0,i.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,l.W6)(),a=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,c.aZ)(a),(0,t.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})},[a,r])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:a}=e,s=h(e),[l,c]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s})),[i,d]=g({queryString:r,groupId:a}),[m,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,a]=(0,u.Dv)(n);return[r,(0,t.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),b=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,o.A)(()=>{b&&c(b)},[b]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),f(e)},[d,f,s]),tabValues:s}}var f=r(74682);const b={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var x=r(23420);function k({className:e,block:n,selectedValue:r,selectValue:t,tabValues:l}){const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),i=e=>{const n=e.currentTarget,a=o.indexOf(n),s=l[a].value;s!==r&&(c(n),t(s))},u=e=>{let n=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:t})=>(0,x.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:u,onClick:i,...t,className:(0,a.A)("tabs__item",b.tabItem,t?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function v({lazy:e,children:n,selectedValue:r}){const s=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===r);return e?(0,t.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:s.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=m(e);return(0,x.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,x.jsx)(k,{...n,...e}),(0,x.jsx)(v,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,x.jsx)(j,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/75878fc8.b7f50444.js b/assets/js/75878fc8.b7f50444.js new file mode 100644 index 0000000000..bbc526fb8b --- /dev/null +++ b/assets/js/75878fc8.b7f50444.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7399],{11601:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>o,contentTitle:()=>l,default:()=>d,frontMatter:()=>t,metadata:()=>h,toc:()=>c});const h=JSON.parse('{"type":"mdx","permalink":"/ModuleCheck/changelog","source":"@site/src/pages/changelog.md","description":"0.12.5","frontMatter":{},"unlisted":false}');var n=r(23420),i=r(65404);const t={},l=void 0,o={},c=[{value:"0.12.5",id:"0125",level:2},{value:"\ud83d\udc1b Bug Fixes",id:"-bug-fixes",level:4},{value:"Other Changes",id:"other-changes",level:4},{value:"0.12.4",id:"0124",level:2},{value:"0.12.3",id:"0123",level:2},{value:"\ud83d\udc1b Bug Fixes",id:"-bug-fixes-1",level:4},{value:"\ud83e\uddf0 Maintenance",id:"-maintenance",level:4},{value:"Contributors",id:"contributors",level:4},{value:"0.12.2",id:"0122",level:2},{value:"\ud83d\udc1b Bug Fixes",id:"-bug-fixes-2",level:4},{value:"0.12.1",id:"0121",level:2},{value:"\ud83d\uddd1 Deprecations",id:"-deprecations",level:4},{value:"\ud83d\udca5 Breaking Changes",id:"-breaking-changes",level:4},{value:"\ud83d\ude80 Features",id:"-features",level:4},{value:"\ud83d\udc1b Bug Fixes",id:"-bug-fixes-3",level:4},{value:"\ud83e\uddf0 Maintenance",id:"-maintenance-1",level:4},{value:"\u2139\ufe0f Website",id:"\u2139\ufe0f-website",level:4},{value:"Contributors",id:"contributors-1",level:4},{value:"0.12.0",id:"0120",level:2},{value:"\ud83d\udca5 Breaking Changes",id:"-breaking-changes-1",level:4},{value:"\ud83d\udcd0 New Rules",id:"-new-rules",level:4},{value:"\ud83d\ude80 Features",id:"-features-1",level:4},{value:"\ud83d\udc1b Bug Fixes",id:"-bug-fixes-4",level:4},{value:"\u2139\ufe0f Website",id:"\u2139\ufe0f-website-1",level:4},{value:"Contributors",id:"contributors-2",level:4},{value:"0.11.3",id:"0113",level:2},{value:"\ud83d\ude80 Features",id:"-features-2",level:4},{value:"\ud83d\udc1b Bug Fixes",id:"-bug-fixes-5",level:4},{value:"\ud83e\uddf0 Maintenance",id:"-maintenance-2",level:4},{value:"\u2139\ufe0f Website",id:"\u2139\ufe0f-website-2",level:4},{value:"0.11.2",id:"0112",level:2},{value:"\ud83d\udc1b Bug Fixes",id:"-bug-fixes-6",level:4},{value:"0.11.1",id:"0111",level:2},{value:"\ud83d\udc1b Bug Fixes",id:"-bug-fixes-7",level:4},{value:"0.11.0 - Groovy auto-correct support",id:"0110---groovy-auto-correct-support",level:2},{value:"\ud83d\udc1b Bug Fixes",id:"-bug-fixes-8",level:4},{value:"0.10.0",id:"0100",level:2}];function u(e){const s={a:"a",code:"code",h2:"h2",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h2,{id:"0125",children:"0.12.5"}),"\n",(0,n.jsxs)(s.p,{children:["This is a re-release of ",(0,n.jsx)(s.a,{href:"#0124",children:"0.12.4"}),"."]}),"\n",(0,n.jsx)(s.h4,{id:"-bug-fixes",children:"\ud83d\udc1b Bug Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["don't crash if Anvil isn't in the buildScript classpath by @RBusarow\nin ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow/ModuleCheck/pull/944",children:"https://github.com/RBusarow/ModuleCheck/pull/944"})]}),"\n",(0,n.jsxs)(s.li,{children:["ignore suppress/noinspection names which don't fit the FindingName pattern by @RBusarow\nin ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow/ModuleCheck/pull/945",children:"https://github.com/RBusarow/ModuleCheck/pull/945"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"other-changes",children:"Other Changes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["GitHub release notes config by @RBusarow in ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow/ModuleCheck/pull/946",children:"https://github.com/RBusarow/ModuleCheck/pull/946"})]}),"\n"]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Full Changelog"}),": ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow/ModuleCheck/compare/0.12.3...0.12.5",children:"https://github.com/RBusarow/ModuleCheck/compare/0.12.3...0.12.5"})]}),"\n",(0,n.jsx)(s.h2,{id:"0124",children:"0.12.4"}),"\n",(0,n.jsx)(s.p,{children:"This version was published with stale artifacts. Use 0.12.5 instead."}),"\n",(0,n.jsx)(s.h2,{id:"0123",children:"0.12.3"}),"\n",(0,n.jsx)(s.h4,{id:"-bug-fixes-1",children:"\ud83d\udc1b Bug Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["fix suppressing findings within the AGP\nDSL (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/712",children:"#712"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["parse the declarations of named companion objects and their\nmembers (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/706",children:"#706"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["treat annotation processor dependencies the same as runtime dependencies for ",(0,n.jsx)(s.code,{children:"McProject.uses()"}),"\nand overshot behavior (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/701",children:"#701"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix false positive for 'unused-dependency' when consuming ",(0,n.jsx)(s.code,{children:"debug"})," source\nfrom ",(0,n.jsx)(s.code,{children:"testImplementation"})," ",(0,n.jsx)(s.a,{href:"https://github.com/tasomaniac",children:"@tasomaniac"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/685",children:"#685"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["revert Kotlin to 1.6.10 to fix build issues in targets using\n1.6.10 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/683",children:"#683"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-maintenance",children:"\ud83e\uddf0 Maintenance"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Update dependency com.vanniktech",":gradle-maven-publish-plugin"," to\nv0.20.0 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/707",children:"#707"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dependency com.autonomousapps.dependency-analysis to\nv1.4.0 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/698",children:"#698"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dependency com.osacky.doctor to\nv0.8.1 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/699",children:"#699"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update docusaurus monorepo to\nv2.0.0-beta.21 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/691",children:"#691"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update kotlinx-coroutines to v1.6.2 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/695",children:"#695"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dependency com.autonomousapps.dependency-analysis to\nv1.3.0 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/696",children:"#696"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dependency com.github.ben-manes.caffeine",":caffeine"," to\nv3.1.1 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/694",children:"#694"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["remove CI's ",(0,n.jsx)(s.code,{children:"tests-windows"})," need\nfor ",(0,n.jsx)(s.code,{children:"publish-maven-local"})," ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/693",children:"#693"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["use Caffeine for caching, with ",(0,n.jsx)(s.code,{children:"LazyDeferred"}),"\nloaders ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/692",children:"#692"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dropbox-dependencyGuard to\nv0.3.0 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/690",children:"#690"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["don't sign ",(0,n.jsx)(s.code,{children:"-SNAPSHOT"}),"\nbuilds ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/686",children:"#686"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["disable KtLint's broken ",(0,n.jsx)(s.code,{children:"experimental:type-parameter-list-spacing"}),"\nrule ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/681",children:"#681"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update crazy-max/ghaction-github-pages action to\nv3 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/679",children:"#679"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["update changelog for ",(0,n.jsx)(s.code,{children:"0.12.2"}),"\nrelease ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/680",children:"#680"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dependency com.rickbusarow.module-check to\nv0.12.2 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/678",children:"#678"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"contributors",children:"Contributors"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," and ",(0,n.jsx)(s.a,{href:"https://github.com/tasomaniac",children:"@tasomaniac"})]}),"\n",(0,n.jsx)(s.h2,{id:"0122",children:"0.12.2"}),"\n",(0,n.jsx)(s.h4,{id:"-bug-fixes-2",children:"\ud83d\udc1b Bug Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["false positives for unused kapt processors which are defined in\nadditionalKaptMatchers (",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow/ModuleCheck/commit/8c55fd188f15c826ba4b6b28d293f68f49bafcb9",children:"8c55fd1"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"0121",children:"0.12.1"}),"\n",(0,n.jsx)(s.h4,{id:"-deprecations",children:"\ud83d\uddd1 Deprecations"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["The names of all findings have been updated/standardized. Any declarations which were suppressing\na finding with the old ID (via ",(0,n.jsx)(s.code,{children:'@Suppress("someFinding")'})," or ",(0,n.jsx)(s.code,{children:"//suppress=someFinding"}),") will still\nwork, but they should be updated to use the new names.\nSee ",(0,n.jsx)(s.a,{href:"https://rbusarow.github.io/ModuleCheck/migrations#standardized-finding-names",children:"the migrations guide"})]}),"\n",(0,n.jsxs)(s.li,{children:["The method for defining ",(0,n.jsx)(s.code,{children:"additionalKaptMatchers"})," in the Gradle DSL has been deprecated, replaced\nwith the ",(0,n.jsx)(s.code,{children:"additionalCodeGenerators"})," property and ",(0,n.jsx)(s.code,{children:"CodeGeneratorBinding"}),".\nSee ",(0,n.jsx)(s.a,{href:"https://rbusarow.github.io/ModuleCheck/migrations#code-generator-binding",children:"the migrations guide"})]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-breaking-changes",children:"\ud83d\udca5 Breaking Changes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["The base ",(0,n.jsx)(s.code,{children:":moduleCheck"})," task will now automatically hook into the root project's ",(0,n.jsx)(s.code,{children:":check"})," task, if\none\nexists. ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/611",children:"#611"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-features",children:"\ud83d\ude80 Features"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Added support\nfor ",(0,n.jsx)(s.a,{href:"https://sarifweb.azurewebsites.net",children:"Static Analysis Results Interchange Format (SARIF)"}),"\nreport\noutput ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/566",children:"#566"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-bug-fixes-3",children:"\ud83d\udc1b Bug Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["don't find ",(0,n.jsx)(s.code,{children:"must-be-api"})," if the project is already an api dependency\nalso ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/666",children:"#666"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["remove AGP and KGP from the plugin's runtime\nclasspath (",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow/ModuleCheck/commit/079ab9d709add63dbf44ecbd8a534bf279becd47",children:"079ab9d"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix matching to custom\nkaptMatchers ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/658",children:"#658"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["properly use settings to determine which kinds of depth output to\ncreate ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/647",children:"#647"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix relative paths for custom graph report\ndirectory ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/612",children:"#612"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:['use type-safe accessor "path" when adding a dependency with type-safe\nsyntax ',(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/608",children:"#608"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["evaluate suppress/noinspection annotations\neagerly ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/604",children:"#604"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fixes false negative for unused kapt plugin when there are no\nprocessors ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/603",children:"#603"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix Dagger NoSuchMethodError for ",(0,n.jsx)(s.code,{children:"dagger.internal.Preconditions.checkNotNullFromProvides"})," in\nSNAPSHOT ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/570",children:"#570"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-maintenance-1",children:"\ud83e\uddf0 Maintenance"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["add a discrete job in CI for publishing to mavenLocal, then cache\nit ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/668",children:"#668"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["update the build classpath baseline for the snapshot build's new\nrunt\u2026 ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/664",children:"#664"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["use the current SNAPSHOT for plugin\ndogfooding ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/663",children:"#663"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["migrate TestKit tests away from the Specs\nDSLs ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/660",children:"#660"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["hook dependencyGuard into the ",(0,n.jsx)(s.code,{children:"check"}),"\ntask ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/661",children:"#661"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["give Dokka explicit dependency upon KtLint tasks and more broadly\ndis\u2026 ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/659",children:"#659"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dropbox-dependencyGuard to\nv0.2.0 ",(0,n.jsx)(s.a,{href:"https://github.com/renovate",children:"@renovate"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/657",children:"#657"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["require comments for public APIs in Detekt, and add\nbaselines ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/656",children:"#656"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add dependency-guard and\nbaselines ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/654",children:"#654"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dependency prism-react-renderer to\nv1.3.3 ",(0,n.jsx)(s.a,{href:"https://github.com/renovate",children:"@renovate"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/653",children:"#653"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dependency com.android.tools.build",":gradle"," to\nv7.2.0 ",(0,n.jsx)(s.a,{href:"https://github.com/renovate",children:"@renovate"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/620",children:"#620"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update actions/setup-java action to\nv3 ",(0,n.jsx)(s.a,{href:"https://github.com/renovate",children:"@renovate"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/652",children:"#652"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dependency com.autonomousapps.dependency-analysis to\nv1.2.1 ",(0,n.jsx)(s.a,{href:"https://github.com/renovate",children:"@renovate"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/651",children:"#651"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update actions/upload-artifact action to\nv3 ",(0,n.jsx)(s.a,{href:"https://github.com/renovate",children:"@renovate"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/629",children:"#629"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update dependency com.gradleup.auto.manifest to\nv2 ",(0,n.jsx)(s.a,{href:"https://github.com/renovate",children:"@renovate"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/645",children:"#645"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Update react monorepo to v18 (\nmajor) ",(0,n.jsx)(s.a,{href:"https://github.com/renovate",children:"@renovate"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/646",children:"#646"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["remove github actions\ncaching ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/649",children:"#649"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["remove\ndependabot ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/648",children:"#648"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["create a shared ",(0,n.jsx)(s.code,{children:".gradle"})," cache for TestKit\ntests ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/640",children:"#640"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add the ",(0,n.jsx)(s.code,{children:"artifacts-check"})," convention\nplugin ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/615",children:"#615"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix incorrect/duplicate maven artifact\nids ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/614",children:"#614"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["revert KaptMatcher name\nto ",(0,n.jsx)(s.code,{children:"modulecheck.api.KaptMatcher"})," ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/613",children:"#613"}),")"]}),"\n",(0,n.jsx)(s.li,{}),"\n"]}),"\n",(0,n.jsxs)(s.p,{children:["delete ",(0,n.jsx)(s.code,{children:"ConfiguredModule"})," ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/609",children:"#609"}),")"]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:['disable the "use tab character" option in IDE\ncodestyle ',(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/607",children:"#607"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["replace ",(0,n.jsx)(s.code,{children:"java-test-fixtures"})," usages with ",(0,n.jsx)(s.code,{children:"-testing"}),"\nmodules ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/605",children:"#605"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump mermaid from 8.14.0 to 9.1.1 in\n/website ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/601",children:"#601"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Dependency block to dependencies\nblock ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/600",children:"#600"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["split\nup ",(0,n.jsx)(s.code,{children:":modulecheck-parsing:gradle"})," ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/599",children:"#599"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump dagger from 2.41 to\n2.42 ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/597",children:"#597"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["rename ",(0,n.jsx)(s.code,{children:"modulecheck.reporting.logging.Logger"}),"\nto ",(0,n.jsx)(s.code,{children:"McLogger"})," ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/593",children:"#593"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["pull ",(0,n.jsx)(s.code,{children:"Finding"})," apis out of ",(0,n.jsx)(s.code,{children:":modulecheck-rules:api"})," and into their\now\u2026 ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/591",children:"#591"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Fix execution optimization for KtLint\nin ",(0,n.jsx)(s.code,{children:":modulecheck-plugin"})," ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/590",children:"#590"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["use the stable version of the plugin in\nCI ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/589",children:"#589"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["suppress Detekt's ComplexMethod for single ",(0,n.jsx)(s.code,{children:"when"}),"\nstatements ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/584",children:"#584"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["pull rules and configs into their own\nmodules ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/583",children:"#583"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump kotest-assertions-core-jvm from 5.2.3 to\n5.3.0 ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/579",children:"#579"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump turbine from 0.7.0 to\n0.8.0 ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/580",children:"#580"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix ",(0,n.jsx)(s.code,{children:"BasePluginTest"}),"'s unused ",(0,n.jsx)(s.code,{children:"stacktrace"}),"\nparameter ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/578",children:"#578"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add Detekt's SARIF reports to\nCI ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/568",children:"#568"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["standardize hermit's definition\nin ",(0,n.jsx)(s.code,{children:"libs.versions.toml"})," ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/567",children:"#567"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["move ",(0,n.jsx)(s.code,{children:"File.createSafely()"})," to production\ncode ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/565",children:"#565"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump dokka-gradle-plugin from 1.6.20 to\n1.6.21 ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/563",children:"#563"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump async from 2.6.3 to 2.6.4 in\n/website ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/543",children:"#543"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump kotlin-reflect from 1.6.20 to\n1.6.21 ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/553",children:"#553"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump mermaid from 8.13.8 to 8.14.0 in\n/website ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/545",children:"#545"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump dokka-gradle-plugin from 1.6.10 to\n1.6.20 ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/544",children:"#544"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump @mdx-js/react from 1.6.22 to 2.1.1 in\n/website ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/546",children:"#546"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump antlr4 from 4.10 to\n4.10.1 ",(0,n.jsx)(s.a,{href:"https://github.com/dependabot",children:"@dependabot"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/550",children:"#550"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"\u2139\ufe0f-website",children:"\u2139\ufe0f Website"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["remove the ",(0,n.jsx)(s.code,{children:"google()"})," repository requirement from\ndocs ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/667",children:"#667"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["594 hook into root project check\ntask ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/611",children:"#611"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["replace ",(0,n.jsx)(s.code,{children:"KaptMatcher"}),"\nwith ",(0,n.jsx)(s.code,{children:"CodeGeneratorBinding"})," ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/610",children:"#610"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["update Docusaurus to\n2.0.0-beta.20 ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/592",children:"#592"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add support for sarif\nreporting ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/566",children:"#566"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["strict rule/finding name\nconventions ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/564",children:"#564"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add ",(0,n.jsx)(s.code,{children:"google()"})," repository to config\ndocs ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/559",children:"#559"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add missing docs for\nrules ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/555",children:"#555"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix\npublishing ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/548",children:"#548"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["release\n0.12.0 ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/547",children:"#547"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"contributors-1",children:"Contributors"}),"\n",(0,n.jsx)(s.p,{children:"@RBusarow"}),"\n",(0,n.jsx)(s.h2,{id:"0120",children:"0.12.0"}),"\n",(0,n.jsx)(s.h4,{id:"-breaking-changes-1",children:"\ud83d\udca5 Breaking Changes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["The ",(0,n.jsx)(s.code,{children:"autoCorrect"})," property in the Gradle settings DSL has been removed. Instead, to perform a\ncheck with auto-correct, add the ",(0,n.jsx)(s.code,{children:"Auto"})," suffix to the task name.","\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-bash",children:"# perform all checks and fail if errors are found\n./gradlew moduleCheck\n\n# perform all checks and auto-correct if possible\n./gradlew moduleCheckAuto\n"})}),"\n"]}),"\n",(0,n.jsxs)(s.li,{children:["Tasks are no longer generated for most individual rules. Instead, rules should be toggled via\nthe ",(0,n.jsx)(s.a,{href:"https://rbusarow.github.io/ModuleCheck/docs/next/configuration",children:"Gradle DSL"})," and can be\ninvoked\nthrough ",(0,n.jsx)(s.code,{children:"./gradlew modulecheck"})," or ",(0,n.jsx)(s.code,{children:"./gradlew moduleCheckAuto"}),"."]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-new-rules",children:"\ud83d\udcd0 New Rules"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Add the ",(0,n.jsx)(s.a,{href:"https://rbusarow.github.io/ModuleCheck/docs/rules/project_depth",children:"Depths"}),"\nrule ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/278",children:"#278"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["New\nrule: ",(0,n.jsx)(s.a,{href:"https://rbusarow.github.io/ModuleCheck/docs/rules/unused_kotlin_android_extensions",children:"Unused Android Extensions"})," ",(0,n.jsx)(s.a,{href:"https://github.com/tasomaniac",children:"@tasomaniac"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/440",children:"#440"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-features-1",children:"\ud83d\ude80 Features"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Add support for depths, dotviz dependency graph, checkstyle, and plaintext result\nreporting ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/243",children:"#243"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-bug-fixes-4",children:"\ud83d\udc1b Bug Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Add a test case for false\npositive ",(0,n.jsx)(s.a,{href:"https://github.com/tasomaniac",children:"@tasomaniac"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/419",children:"#419"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Don't call a dependency overshot if it's already declared in that source\nset ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/521",children:"#521"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["don't try to parse ",(0,n.jsx)(s.code,{children:".png"}),"s as\nxml ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/522",children:"#522"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix parsing xml resource declarations when there's a dot in the\nname ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/512",children:"#512"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Fix false positive for ",(0,n.jsx)(s.code,{children:"unusedDependency"})," when a resource from the dependency is used with R from\nthe dependent in a downstream\nproject ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/510",children:"#510"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["better modeling for generated databinding declarations and\nreferences ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/509",children:"#509"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["count layout files and ",(0,n.jsx)(s.code,{children:"@+id/__"})," declarations as part of a module's\ndeclarations ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/499",children:"#499"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Support the alternative usage of kapt\nplugin ",(0,n.jsx)(s.a,{href:"https://github.com/tasomaniac",children:"@tasomaniac"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/481",children:"#481"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add new dependency declarations even if their transitive source can't be\nfound ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/469",children:"#469"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["don't generate BuildConfig if it's ignored in Android\nsettings ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/470",children:"#470"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["force single-threaded GroovyLangParser\naccess ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/463",children:"#463"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix false positive for ",(0,n.jsx)(s.code,{children:"disableViewBinding"})," when used in debug source set of different\nmodule ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/446",children:"#446"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["don't swallow a newline when replacing a dependency with a preceding blank\nline ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/444",children:"#444"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["better handling for detecting complex precompiled configuration\nnames ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/442",children:"#442"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["support multiple android base\npackages ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/411",children:"#411"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["support ",(0,n.jsx)(s.code,{children:".java"})," files without a package\ndeclaration ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/400",children:"#400"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["strip illegal characters from XML before\nparsing ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/376",children:"#376"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix auto-correct when using a non-standard config\nname ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/368",children:"#368"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix false positive for kapt processors in non-kapt\nconfigurations ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/350",children:"#350"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["don't allow projects to inherit\nthemselves ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/343",children:"#343"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["update configuration\ndocs ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/335",children:"#335"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["always create depth and graph reports when running their explicit\ntasks ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/332",children:"#332"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["collect depth info after applying\nchanges ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/331",children:"#331"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["fix testFixtures handling in\nOverShotDependencyFinding ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/297",children:"#297"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["treat testFixtures and the associated main sources like different\nprojects ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/288",children:"#288"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["correctly apply the ",(0,n.jsx)(s.code,{children:"testFixtures(...)"})," wrapper for replaced/added\ndependencies ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/287",children:"#287"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"\u2139\ufe0f-website-1",children:"\u2139\ufe0f Website"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Add documentation for new\nrule ",(0,n.jsx)(s.a,{href:"https://github.com/tasomaniac",children:"@tasomaniac"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/454",children:"#454"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add snapshots badge to README and website\nhome ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/410",children:"#410"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add ",(0,n.jsx)(s.code,{children:"moduleCheckAuto"}),' to main README and call out "next" docs\nversion ',(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/408",children:"#408"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:['correct the tasks listed in the "next" version of the\ndocs ',(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/404",children:"#404"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["update copyright template for\n2022 ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/362",children:"#362"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["update configuration\ndocs ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/335",children:"#335"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add the Depths\nfeature ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/278",children:"#278"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["replace ",(0,n.jsx)(s.code,{children:"autoCorrect"})," with ",(0,n.jsx)(s.code,{children:"-Auto"}),"\nsuffixes ",(0,n.jsx)(s.a,{href:"https://github.com/RBusarow",children:"@RBusarow"})," (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/249",children:"#249"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"contributors-2",children:"Contributors"}),"\n",(0,n.jsx)(s.p,{children:"@RBusarow, @diego-gomez-olvera and @tasomaniac"}),"\n",(0,n.jsx)(s.h2,{id:"0113",children:"0.11.3"}),"\n",(0,n.jsx)(s.h4,{id:"-features-2",children:"\ud83d\ude80 Features"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["support suppressing findings (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/235",children:"#235"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-bug-fixes-5",children:"\ud83d\udc1b Bug Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["support testFixtures (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/232",children:"#232"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"-maintenance-2",children:"\ud83e\uddf0 Maintenance"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Bump kotlinpoet from 1.10.1 to 1.10.2 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/233",children:"#233"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["Bump gradle-plugin from 2.3.6 to 2.3.7 (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/229",children:"#229"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h4,{id:"\u2139\ufe0f-website-2",children:"\u2139\ufe0f Website"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["use titles in docs code snippets (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/237",children:"#237"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["clarify CI workflow docs (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/221",children:"#221"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["add example CI workflow to docs (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/220",children:"#220"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"0112",children:"0.11.2"}),"\n",(0,n.jsx)(s.h4,{id:"-bug-fixes-6",children:"\ud83d\udc1b Bug Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["support overshot dependencies (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/217",children:"#217"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["sorting fixes (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/215",children:"#215"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"0111",children:"0.11.1"}),"\n",(0,n.jsx)(s.h4,{id:"-bug-fixes-7",children:"\ud83d\udc1b Bug Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["support constant or enum declarations in Java\nclasses (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/209",children:"#209"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["include generated data/viewbinding objects as\ndeclarations (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/208",children:"#208"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["support closures in dependency\ndeclarations (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/205",children:"#205"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["count resources as R references when used in\nAndroidManifest.xml (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/203",children:"#203"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"0110---groovy-auto-correct-support",children:"0.11.0 - Groovy auto-correct support"}),"\n",(0,n.jsx)(s.h4,{id:"-bug-fixes-8",children:"\ud83d\udc1b Bug Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Support generated manifests (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/197",children:"#197"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:['fix redundant "from: " output (',(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/193",children:"#193"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["support Groovy parsing (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/190",children:"#190"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["capture a finding's log string before it's\nfixed (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/184",children:"#184"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["include class literal expressions when looking for type\nreferences (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/177",children:"#177"}),")"]}),"\n",(0,n.jsxs)(s.li,{children:["check for Android kotlin sources (",(0,n.jsx)(s.a,{href:"https://github.com/rbusarow/ModuleCheck/pull/173",children:"#173"}),")"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"0100",children:"0.10.0"}),"\n",(0,n.jsx)(s.p,{children:"Initial release"})]})}function d(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>t,x:()=>l});var h=r(36672);const n={},i=h.createContext(n);function t(e){const s=h.useContext(i);return h.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:t(e.components),h.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/772.c108aa20.js b/assets/js/772.c108aa20.js new file mode 100644 index 0000000000..335205608f --- /dev/null +++ b/assets/js/772.c108aa20.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[772],{50772:(t,e,i)=>{i.d(e,{diagram:()=>v});var a=i(27293),n=i(61274),s=function(){var t=(0,a.K2)(function(t,e,i,a){for(i=i||{},a=t.length;a--;i[t[a]]=e);return i},"o"),e=[1,3],i=[1,4],n=[1,5],s=[1,6],r=[1,7],o=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],h=[55,56,57],c=[2,36],d=[1,37],u=[1,36],x=[1,38],g=[1,35],f=[1,43],p=[1,41],y=[1,14],T=[1,23],m=[1,18],q=[1,19],A=[1,20],_=[1,21],b=[1,22],S=[1,24],k=[1,25],F=[1,26],P=[1,27],C=[1,28],L=[1,29],v=[1,32],I=[1,33],E=[1,34],D=[1,39],z=[1,40],w=[1,42],K=[1,44],U=[1,62],N=[1,61],R=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],B=[1,65],W=[1,66],$=[1,67],Q=[1,68],O=[1,69],X=[1,70],H=[1,71],M=[1,72],Y=[1,73],j=[1,74],G=[1,75],V=[1,76],Z=[4,5,6,7,8,9,10,11,12,13,14,15,18],J=[1,90],tt=[1,91],et=[1,92],it=[1,99],at=[1,93],nt=[1,96],st=[1,94],rt=[1,95],ot=[1,97],lt=[1,98],ht=[1,102],ct=[10,55,56,57],dt=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ut={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:(0,a.K2)(function(t,e,i,a,n,s,r){var o=s.length-1;switch(n){case 23:case 68:this.$=s[o];break;case 24:case 69:this.$=s[o-1]+""+s[o];break;case 26:this.$=s[o-1]+s[o];break;case 27:this.$=[s[o].trim()];break;case 28:s[o-2].push(s[o].trim()),this.$=s[o-2];break;case 29:this.$=s[o-4],a.addClass(s[o-2],s[o]);break;case 37:this.$=[];break;case 42:this.$=s[o].trim(),a.setDiagramTitle(this.$);break;case 43:this.$=s[o].trim(),a.setAccTitle(this.$);break;case 44:case 45:this.$=s[o].trim(),a.setAccDescription(this.$);break;case 46:a.addSection(s[o].substr(8)),this.$=s[o].substr(8);break;case 47:a.addPoint(s[o-3],"",s[o-1],s[o],[]);break;case 48:a.addPoint(s[o-4],s[o-3],s[o-1],s[o],[]);break;case 49:a.addPoint(s[o-4],"",s[o-2],s[o-1],s[o]);break;case 50:a.addPoint(s[o-5],s[o-4],s[o-2],s[o-1],s[o]);break;case 51:a.setXAxisLeftText(s[o-2]),a.setXAxisRightText(s[o]);break;case 52:s[o-1].text+=" \u27f6 ",a.setXAxisLeftText(s[o-1]);break;case 53:a.setXAxisLeftText(s[o]);break;case 54:a.setYAxisBottomText(s[o-2]),a.setYAxisTopText(s[o]);break;case 55:s[o-1].text+=" \u27f6 ",a.setYAxisBottomText(s[o-1]);break;case 56:a.setYAxisBottomText(s[o]);break;case 57:a.setQuadrant1Text(s[o]);break;case 58:a.setQuadrant2Text(s[o]);break;case 59:a.setQuadrant3Text(s[o]);break;case 60:a.setQuadrant4Text(s[o]);break;case 64:case 66:this.$={text:s[o],type:"text"};break;case 65:this.$={text:s[o-1].text+""+s[o],type:s[o-1].type};break;case 67:this.$={text:s[o],type:"markdown"}}},"anonymous"),table:[{18:e,26:1,27:2,28:i,55:n,56:s,57:r},{1:[3]},{18:e,26:8,27:2,28:i,55:n,56:s,57:r},{18:e,26:9,27:2,28:i,55:n,56:s,57:r},t(o,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(h,c,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:u,10:x,12:g,13:f,14:p,18:y,25:T,35:m,37:q,39:A,41:_,42:b,48:S,50:k,51:F,52:P,53:C,54:L,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(o,[2,34]),{27:45,55:n,56:s,57:r},t(h,[2,37]),t(h,c,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:d,5:u,10:x,12:g,13:f,14:p,18:y,25:T,35:m,37:q,39:A,41:_,42:b,48:S,50:k,51:F,52:P,53:C,54:L,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(h,[2,39]),t(h,[2,40]),t(h,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(h,[2,45]),t(h,[2,46]),{18:[1,50]},{4:d,5:u,10:x,12:g,13:f,14:p,43:51,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:52,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:53,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:54,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:55,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:56,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,44:[1,57],47:[1,58],58:60,59:59,63:E,64:D,65:z,66:w,67:K},t(R,[2,64]),t(R,[2,66]),t(R,[2,67]),t(R,[2,70]),t(R,[2,71]),t(R,[2,72]),t(R,[2,73]),t(R,[2,74]),t(R,[2,75]),t(R,[2,76]),t(R,[2,77]),t(R,[2,78]),t(R,[2,79]),t(R,[2,80]),t(o,[2,35]),t(h,[2,38]),t(h,[2,42]),t(h,[2,43]),t(h,[2,44]),{3:64,4:B,5:W,6:$,7:Q,8:O,9:X,10:H,11:M,12:Y,13:j,14:G,15:V,21:63},t(h,[2,53],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,49:[1,77],63:E,64:D,65:z,66:w,67:K}),t(h,[2,56],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,49:[1,78],63:E,64:D,65:z,66:w,67:K}),t(h,[2,57],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,58],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,59],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,60],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),{45:[1,79]},{44:[1,80]},t(R,[2,65]),t(R,[2,81]),t(R,[2,82]),t(R,[2,83]),{3:82,4:B,5:W,6:$,7:Q,8:O,9:X,10:H,11:M,12:Y,13:j,14:G,15:V,18:[1,81]},t(Z,[2,23]),t(Z,[2,1]),t(Z,[2,2]),t(Z,[2,3]),t(Z,[2,4]),t(Z,[2,5]),t(Z,[2,6]),t(Z,[2,7]),t(Z,[2,8]),t(Z,[2,9]),t(Z,[2,10]),t(Z,[2,11]),t(Z,[2,12]),t(h,[2,52],{58:31,43:83,4:d,5:u,10:x,12:g,13:f,14:p,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(h,[2,55],{58:31,43:84,4:d,5:u,10:x,12:g,13:f,14:p,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),{46:[1,85]},{45:[1,86]},{4:J,5:tt,6:et,8:it,11:at,13:nt,16:89,17:st,18:rt,19:ot,20:lt,22:88,23:87},t(Z,[2,24]),t(h,[2,51],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,54],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,47],{22:88,16:89,23:100,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),{46:[1,101]},t(h,[2,29],{10:ht}),t(ct,[2,27],{16:103,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),t(dt,[2,25]),t(dt,[2,13]),t(dt,[2,14]),t(dt,[2,15]),t(dt,[2,16]),t(dt,[2,17]),t(dt,[2,18]),t(dt,[2,19]),t(dt,[2,20]),t(dt,[2,21]),t(dt,[2,22]),t(h,[2,49],{10:ht}),t(h,[2,48],{22:88,16:89,23:104,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),{4:J,5:tt,6:et,8:it,11:at,13:nt,16:89,17:st,18:rt,19:ot,20:lt,22:105},t(dt,[2,26]),t(h,[2,50],{10:ht}),t(ct,[2,28],{16:103,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt})],defaultActions:{8:[2,30],9:[2,31]},parseError:(0,a.K2)(function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)},"parseError"),parse:(0,a.K2)(function(t){var e=this,i=[0],n=[],s=[null],r=[],o=this.table,l="",h=0,c=0,d=0,u=r.slice.call(arguments,1),x=Object.create(this.lexer),g={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g.yy[f]=this.yy[f]);x.setInput(t,g.yy),g.yy.lexer=x,g.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var p=x.yylloc;r.push(p);var y=x.options&&x.options.ranges;function T(){var t;return"number"!=typeof(t=n.pop()||x.lex()||1)&&(t instanceof Array&&(t=(n=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(t){i.length=i.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,a.K2)(T,"lex");for(var m,q,A,_,b,S,k,F,P,C={};;){if(A=i[i.length-1],this.defaultActions[A]?_=this.defaultActions[A]:(null==m&&(m=T()),_=o[A]&&o[A][m]),void 0===_||!_.length||!_[0]){var L="";for(S in P=[],o[A])this.terminals_[S]&&S>2&&P.push("'"+this.terminals_[S]+"'");L=x.showPosition?"Parse error on line "+(h+1)+":\n"+x.showPosition()+"\nExpecting "+P.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[m]||m,line:x.yylineno,loc:p,expected:P})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+m);switch(_[0]){case 1:i.push(m),s.push(x.yytext),r.push(x.yylloc),i.push(_[1]),m=null,q?(m=q,q=null):(c=x.yyleng,l=x.yytext,h=x.yylineno,p=x.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[_[1]][1],C.$=s[s.length-k],C._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},y&&(C._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(C,[l,c,h,g.yy,_[1],s,r].concat(u))))return b;k&&(i=i.slice(0,-1*k*2),s=s.slice(0,-1*k),r=r.slice(0,-1*k)),i.push(this.productions_[_[1]][0]),s.push(C.$),r.push(C._$),F=o[i[i.length-2]][i[i.length-1]],i.push(F);break;case 3:return!0}}return!0},"parse")},xt=function(){return{EOF:1,parseError:(0,a.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,a.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,a.K2)(function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===a.length?this.yylloc.first_column:0)+a[a.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,a.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,a.K2)(function(t,e){var i,a,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in n)this[s]=n[s];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var t,e,i,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),s=0;s<n.length;s++)if((i=this._input.match(this.rules[n[s]]))&&(!e||i[0].length>e[0].length)){if(e=i,a=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,n[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,a.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(t,e,i,a){switch(i){case 0:case 1:case 3:break;case 2:return 55;case 4:return this.begin("title"),35;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),37;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),39;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 23:case 25:case 31:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 24:this.begin("string");break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;case 29:return this.begin("point_start"),44;case 30:return this.begin("point_x"),45;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}}}();function gt(){this.yy={}}return ut.lexer=xt,(0,a.K2)(gt,"Parser"),gt.prototype=ut,ut.Parser=gt,new gt}();s.parser=s;var r=s,o=(0,a.P$)(),l=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{(0,a.K2)(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:a.UI.quadrantChart?.chartWidth||500,chartWidth:a.UI.quadrantChart?.chartHeight||500,titlePadding:a.UI.quadrantChart?.titlePadding||10,titleFontSize:a.UI.quadrantChart?.titleFontSize||20,quadrantPadding:a.UI.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:a.UI.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:a.UI.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:a.UI.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:a.UI.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:a.UI.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:a.UI.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:a.UI.quadrantChart?.pointTextPadding||5,pointLabelFontSize:a.UI.quadrantChart?.pointLabelFontSize||12,pointRadius:a.UI.quadrantChart?.pointRadius||5,xAxisPosition:a.UI.quadrantChart?.xAxisPosition||"top",yAxisPosition:a.UI.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:o.quadrant1Fill,quadrant2Fill:o.quadrant2Fill,quadrant3Fill:o.quadrant3Fill,quadrant4Fill:o.quadrant4Fill,quadrant1TextFill:o.quadrant1TextFill,quadrant2TextFill:o.quadrant2TextFill,quadrant3TextFill:o.quadrant3TextFill,quadrant4TextFill:o.quadrant4TextFill,quadrantPointFill:o.quadrantPointFill,quadrantPointTextFill:o.quadrantPointTextFill,quadrantXAxisTextFill:o.quadrantXAxisTextFill,quadrantYAxisTextFill:o.quadrantYAxisTextFill,quadrantTitleFill:o.quadrantTitleFill,quadrantInternalBorderStrokeFill:o.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:o.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,a.Rm.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,e){this.classes.set(t,e)}setConfig(t){a.Rm.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){a.Rm.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,i,a){const n=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,s={top:"top"===t&&e?n:0,bottom:"bottom"===t&&e?n:0},r=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,o={left:"left"===this.config.yAxisPosition&&i?r:0,right:"right"===this.config.yAxisPosition&&i?r:0},l=this.config.titleFontSize+2*this.config.titlePadding,h={top:a?l:0},c=this.config.quadrantPadding+o.left,d=this.config.quadrantPadding+s.top+h.top,u=this.config.chartWidth-2*this.config.quadrantPadding-o.left-o.right,x=this.config.chartHeight-2*this.config.quadrantPadding-s.top-s.bottom-h.top;return{xAxisSpace:s,yAxisSpace:o,titleSpace:h,quadrantSpace:{quadrantLeft:c,quadrantTop:d,quadrantWidth:u,quadrantHalfWidth:u/2,quadrantHeight:x,quadrantHalfHeight:x/2}}}getAxisLabels(t,e,i,a){const{quadrantSpace:n,titleSpace:s}=a,{quadrantHalfHeight:r,quadrantHeight:o,quadrantLeft:l,quadrantHalfWidth:h,quadrantTop:c,quadrantWidth:d}=n,u=Boolean(this.data.xAxisRightText),x=Boolean(this.data.yAxisTopText),g=[];return this.data.xAxisLeftText&&e&&g.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&g.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+h+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&i&&g.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+o-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&i&&g.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+r-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),g}getQuadrants(t){const{quadrantSpace:e}=t,{quadrantHalfHeight:i,quadrantLeft:a,quadrantHalfWidth:n,quadrantTop:s}=e,r=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s,width:n,height:i,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s,width:n,height:i,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant4Fill}];for(const o of r)o.text.x=o.x+o.width/2,0===this.data.points.length?(o.text.y=o.y+o.height/2,o.text.horizontalPos="middle"):(o.text.y=o.y+this.config.quadrantTextTopPadding,o.text.horizontalPos="top");return r}getQuadrantPoints(t){const{quadrantSpace:e}=t,{quadrantHeight:i,quadrantLeft:a,quadrantTop:s,quadrantWidth:r}=e,o=(0,n.m4Y)().domain([0,1]).range([a,r+a]),l=(0,n.m4Y)().domain([0,1]).range([i+s,s]);return this.data.points.map(t=>{const e=this.classes.get(t.className);e&&(t={...e,...t});return{x:o(t.x),y:l(t.y),fill:t.color??this.themeConfig.quadrantPointFill,radius:t.radius??this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:o(t.x),y:l(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:t.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:t.strokeWidth??"0px"}})}getBorders(t){const e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:i}=t,{quadrantHalfHeight:a,quadrantHeight:n,quadrantLeft:s,quadrantHalfWidth:r,quadrantTop:o,quadrantWidth:l}=i;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o,x2:s+l+e,y2:o},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+l,y1:o+e,x2:s+l,y2:o+n-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o+n,x2:s+l+e,y2:o+n},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:o+e,x2:s,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:o+e,x2:s+r,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+e,y1:o+a,x2:s+l-e,y2:o+a}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),e=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),i=this.config.showTitle&&!!this.data.titleText,a=this.data.points.length>0?"bottom":this.config.xAxisPosition,n=this.calculateSpace(a,t,e,i);return{points:this.getQuadrantPoints(n),quadrants:this.getQuadrants(n),axisLabels:this.getAxisLabels(a,t,e,n),borderLines:this.getBorders(n),title:this.getTitle(i)}}},h=class extends Error{static{(0,a.K2)(this,"InvalidStyleError")}constructor(t,e,i){super(`value for ${t} ${e} is invalid, please use a valid ${i}`),this.name="InvalidStyleError"}};function c(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function d(t){return!/^\d+$/.test(t)}function u(t){return!/^\d+px$/.test(t)}(0,a.K2)(c,"validateHexCode"),(0,a.K2)(d,"validateNumber"),(0,a.K2)(u,"validateSizeInPixels");var x=(0,a.D7)();function g(t){return(0,a.jZ)(t.trim(),x)}(0,a.K2)(g,"textSanitizer");var f=new l;function p(t){f.setData({quadrant1Text:g(t.text)})}function y(t){f.setData({quadrant2Text:g(t.text)})}function T(t){f.setData({quadrant3Text:g(t.text)})}function m(t){f.setData({quadrant4Text:g(t.text)})}function q(t){f.setData({xAxisLeftText:g(t.text)})}function A(t){f.setData({xAxisRightText:g(t.text)})}function _(t){f.setData({yAxisTopText:g(t.text)})}function b(t){f.setData({yAxisBottomText:g(t.text)})}function S(t){const e={};for(const i of t){const[t,a]=i.trim().split(/\s*:\s*/);if("radius"===t){if(d(a))throw new h(t,a,"number");e.radius=parseInt(a)}else if("color"===t){if(c(a))throw new h(t,a,"hex code");e.color=a}else if("stroke-color"===t){if(c(a))throw new h(t,a,"hex code");e.strokeColor=a}else{if("stroke-width"!==t)throw new Error(`style named ${t} is not supported.`);if(u(a))throw new h(t,a,"number of pixels (eg. 10px)");e.strokeWidth=a}}return e}function k(t,e,i,a,n){const s=S(n);f.addPoints([{x:i,y:a,text:g(t.text),className:e,...s}])}function F(t,e){f.addClass(t,S(e))}function P(t){f.setConfig({chartWidth:t})}function C(t){f.setConfig({chartHeight:t})}function L(){const t=(0,a.D7)(),{themeVariables:e,quadrantChart:i}=t;return i&&f.setConfig(i),f.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),f.setData({titleText:(0,a.ab)()}),f.build()}(0,a.K2)(p,"setQuadrant1Text"),(0,a.K2)(y,"setQuadrant2Text"),(0,a.K2)(T,"setQuadrant3Text"),(0,a.K2)(m,"setQuadrant4Text"),(0,a.K2)(q,"setXAxisLeftText"),(0,a.K2)(A,"setXAxisRightText"),(0,a.K2)(_,"setYAxisTopText"),(0,a.K2)(b,"setYAxisBottomText"),(0,a.K2)(S,"parseStyles"),(0,a.K2)(k,"addPoint"),(0,a.K2)(F,"addClass"),(0,a.K2)(P,"setWidth"),(0,a.K2)(C,"setHeight"),(0,a.K2)(L,"getQuadrantData");var v={parser:r,db:{setWidth:P,setHeight:C,setQuadrant1Text:p,setQuadrant2Text:y,setQuadrant3Text:T,setQuadrant4Text:m,setXAxisLeftText:q,setXAxisRightText:A,setYAxisTopText:_,setYAxisBottomText:b,parseStyles:S,addPoint:k,addClass:F,getQuadrantData:L,clear:(0,a.K2)(function(){f.clear(),(0,a.IU)()},"clear"),setAccTitle:a.SV,getAccTitle:a.iN,setDiagramTitle:a.ke,getDiagramTitle:a.ab,getAccDescription:a.m7,setAccDescription:a.EI},renderer:{draw:(0,a.K2)((t,e,i,s)=>{function r(t){return"top"===t?"hanging":"middle"}function o(t){return"left"===t?"start":"middle"}function l(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,a.K2)(r,"getDominantBaseLine"),(0,a.K2)(o,"getTextAnchor"),(0,a.K2)(l,"getTransformation");const h=(0,a.D7)();a.Rm.debug("Rendering quadrant chart\n"+t);const c=h.securityLevel;let d;"sandbox"===c&&(d=(0,n.Ltv)("#i"+e));const u=("sandbox"===c?(0,n.Ltv)(d.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${e}"]`),x=u.append("g").attr("class","main"),g=h.quadrantChart?.chartWidth??500,f=h.quadrantChart?.chartHeight??500;(0,a.a$)(u,f,g,h.quadrantChart?.useMaxWidth??!0),u.attr("viewBox","0 0 "+g+" "+f),s.db.setHeight(f),s.db.setWidth(g);const p=s.db.getQuadrantData(),y=x.append("g").attr("class","quadrants"),T=x.append("g").attr("class","border"),m=x.append("g").attr("class","data-points"),q=x.append("g").attr("class","labels"),A=x.append("g").attr("class","title");p.title&&A.append("text").attr("x",0).attr("y",0).attr("fill",p.title.fill).attr("font-size",p.title.fontSize).attr("dominant-baseline",r(p.title.horizontalPos)).attr("text-anchor",o(p.title.verticalPos)).attr("transform",l(p.title)).text(p.title.text),p.borderLines&&T.selectAll("line").data(p.borderLines).enter().append("line").attr("x1",t=>t.x1).attr("y1",t=>t.y1).attr("x2",t=>t.x2).attr("y2",t=>t.y2).style("stroke",t=>t.strokeFill).style("stroke-width",t=>t.strokeWidth);const _=y.selectAll("g.quadrant").data(p.quadrants).enter().append("g").attr("class","quadrant");_.append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill),_.append("text").attr("x",0).attr("y",0).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>r(t.text.horizontalPos)).attr("text-anchor",t=>o(t.text.verticalPos)).attr("transform",t=>l(t.text)).text(t=>t.text.text);q.selectAll("g.label").data(p.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(t=>t.text).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>r(t.horizontalPos)).attr("text-anchor",t=>o(t.verticalPos)).attr("transform",t=>l(t));const b=m.selectAll("g.data-point").data(p.points).enter().append("g").attr("class","data-point");b.append("circle").attr("cx",t=>t.x).attr("cy",t=>t.y).attr("r",t=>t.radius).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeColor).attr("stroke-width",t=>t.strokeWidth),b.append("text").attr("x",0).attr("y",0).text(t=>t.text.text).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>r(t.text.horizontalPos)).attr("text-anchor",t=>o(t.text.verticalPos)).attr("transform",t=>l(t.text))},"draw")},styles:(0,a.K2)(()=>"","styles")}}}]); \ No newline at end of file diff --git a/assets/js/7798.e38b8348.js b/assets/js/7798.e38b8348.js new file mode 100644 index 0000000000..718a68510c --- /dev/null +++ b/assets/js/7798.e38b8348.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7798],{22775:(t,r,e)=>{function n(t,r){t.accDescr&&r.setAccDescription?.(t.accDescr),t.accTitle&&r.setAccTitle?.(t.accTitle),t.title&&r.setDiagramTitle?.(t.title)}e.d(r,{S:()=>n}),(0,e(27293).K2)(n,"populateCommonDb")},27798:(t,r,e)=>{e.d(r,{diagram:()=>ft});var n=e(22775),o=e(28844),a=e(47794),c=e(27293),s=e(25381),i=e(61274),h={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},d=c.UI.gitGraph,m=(0,c.K2)(()=>(0,a.$t)({...d,...(0,c.zj)().gitGraph}),"getConfig"),$=new o.m(()=>{const t=m(),r=t.mainBranchName,e=t.mainBranchOrder;return{mainBranchName:r,commits:new Map,head:null,branchConfig:new Map([[r,{name:r,order:e}]]),branches:new Map([[r,null]]),currBranch:r,direction:"LR",seq:0,options:{}}});function l(){return(0,a.yT)({length:7})}function y(t,r){const e=Object.create(null);return t.reduce((t,n)=>{const o=r(n);return e[o]||(e[o]=!0,t.push(n)),t},[])}(0,c.K2)(l,"getID"),(0,c.K2)(y,"uniqBy");var g=(0,c.K2)(function(t){$.records.direction=t},"setDirection"),p=(0,c.K2)(function(t){c.Rm.debug("options str",t),t=t?.trim(),t=t||"{}";try{$.records.options=JSON.parse(t)}catch(r){c.Rm.error("error while parsing gitGraph options",r.message)}},"setOptions"),x=(0,c.K2)(function(){return $.records.options},"getOptions"),f=(0,c.K2)(function(t){let r=t.msg,e=t.id;const n=t.type;let o=t.tags;c.Rm.info("commit",r,e,n,o),c.Rm.debug("Entering commit:",r,e,n,o);const a=m();e=c.Y2.sanitizeText(e,a),r=c.Y2.sanitizeText(r,a),o=o?.map(t=>c.Y2.sanitizeText(t,a));const s={id:e||$.records.seq+"-"+l(),message:r,seq:$.records.seq++,type:n??h.NORMAL,tags:o??[],parents:null==$.records.head?[]:[$.records.head.id],branch:$.records.currBranch};$.records.head=s,c.Rm.info("main branch",a.mainBranchName),$.records.commits.set(s.id,s),$.records.branches.set($.records.currBranch,s.id),c.Rm.debug("in pushCommit "+s.id)},"commit"),u=(0,c.K2)(function(t){let r=t.name;const e=t.order;if(r=c.Y2.sanitizeText(r,m()),$.records.branches.has(r))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${r}")`);$.records.branches.set(r,null!=$.records.head?$.records.head.id:null),$.records.branchConfig.set(r,{name:r,order:e}),B(r),c.Rm.debug("in createBranch")},"branch"),b=(0,c.K2)(t=>{let r=t.branch,e=t.id;const n=t.type,o=t.tags,a=m();r=c.Y2.sanitizeText(r,a),e&&(e=c.Y2.sanitizeText(e,a));const s=$.records.branches.get($.records.currBranch),i=$.records.branches.get(r),d=s?$.records.commits.get(s):void 0,y=i?$.records.commits.get(i):void 0;if(d&&y&&d.branch===r)throw new Error(`Cannot merge branch '${r}' into itself.`);if($.records.currBranch===r){const t=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(void 0===d||!d){const t=new Error(`Incorrect usage of "merge". Current branch (${$.records.currBranch})has no commits`);throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["commit"]},t}if(!$.records.branches.has(r)){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:[`branch ${r}`]},t}if(void 0===y||!y){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:['"commit"']},t}if(d===y){const t=new Error('Incorrect usage of "merge". Both branches have same head');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(e&&$.records.commits.has(e)){const t=new Error('Incorrect usage of "merge". Commit with id:'+e+" already exists, use different custom id");throw t.hash={text:`merge ${r} ${e} ${n} ${o?.join(" ")}`,token:`merge ${r} ${e} ${n} ${o?.join(" ")}`,expected:[`merge ${r} ${e}_UNIQUE ${n} ${o?.join(" ")}`]},t}const g=i||"",p={id:e||`${$.records.seq}-${l()}`,message:`merged branch ${r} into ${$.records.currBranch}`,seq:$.records.seq++,parents:null==$.records.head?[]:[$.records.head.id,g],branch:$.records.currBranch,type:h.MERGE,customType:n,customId:!!e,tags:o??[]};$.records.head=p,$.records.commits.set(p.id,p),$.records.branches.set($.records.currBranch,p.id),c.Rm.debug($.records.branches),c.Rm.debug("in mergeBranch")},"merge"),w=(0,c.K2)(function(t){let r=t.id,e=t.targetId,n=t.tags,o=t.parent;c.Rm.debug("Entering cherryPick:",r,e,n);const a=m();if(r=c.Y2.sanitizeText(r,a),e=c.Y2.sanitizeText(e,a),n=n?.map(t=>c.Y2.sanitizeText(t,a)),o=c.Y2.sanitizeText(o,a),!r||!$.records.commits.has(r)){const t=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const s=$.records.commits.get(r);if(void 0===s||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(o&&(!Array.isArray(s.parents)||!s.parents.includes(o))){throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.")}const i=s.branch;if(s.type===h.MERGE&&!o){throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.")}if(!e||!$.records.commits.has(e)){if(i===$.records.currBranch){const t=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const t=$.records.branches.get($.records.currBranch);if(void 0===t||!t){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${$.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const a=$.records.commits.get(t);if(void 0===a||!a){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${$.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const d={id:$.records.seq+"-"+l(),message:`cherry-picked ${s?.message} into ${$.records.currBranch}`,seq:$.records.seq++,parents:null==$.records.head?[]:[$.records.head.id,s.id],branch:$.records.currBranch,type:h.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===h.MERGE?`|parent:${o}`:""}`]};$.records.head=d,$.records.commits.set(d.id,d),$.records.branches.set($.records.currBranch,d.id),c.Rm.debug($.records.branches),c.Rm.debug("in cherryPick")}},"cherryPick"),B=(0,c.K2)(function(t){if(t=c.Y2.sanitizeText(t,m()),!$.records.branches.has(t)){const r=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw r.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},r}{$.records.currBranch=t;const r=$.records.branches.get($.records.currBranch);$.records.head=void 0!==r&&r?$.records.commits.get(r)??null:null}},"checkout");function E(t,r,e){const n=t.indexOf(r);-1===n?t.push(e):t.splice(n,1,e)}function k(t){const r=t.reduce((t,r)=>t.seq>r.seq?t:r,t[0]);let e="";t.forEach(function(t){e+=t===r?"\t*":"\t|"});const n=[e,r.id,r.seq];for(const o in $.records.branches)$.records.branches.get(o)===r.id&&n.push(o);if(c.Rm.debug(n.join(" ")),r.parents&&2==r.parents.length&&r.parents[0]&&r.parents[1]){const e=$.records.commits.get(r.parents[0]);E(t,r,e),r.parents[1]&&t.push($.records.commits.get(r.parents[1]))}else{if(0==r.parents.length)return;if(r.parents[0]){const e=$.records.commits.get(r.parents[0]);E(t,r,e)}}k(t=y(t,t=>t.id))}(0,c.K2)(E,"upsert"),(0,c.K2)(k,"prettyPrintCommitHistory");var C=(0,c.K2)(function(){c.Rm.debug($.records.commits);k([R()[0]])},"prettyPrint"),T=(0,c.K2)(function(){$.reset(),(0,c.IU)()},"clear"),L=(0,c.K2)(function(){return[...$.records.branchConfig.values()].map((t,r)=>null!==t.order&&void 0!==t.order?t:{...t,order:parseFloat(`0.${r}`)}).sort((t,r)=>(t.order??0)-(r.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),K=(0,c.K2)(function(){return $.records.branches},"getBranches"),M=(0,c.K2)(function(){return $.records.commits},"getCommits"),R=(0,c.K2)(function(){const t=[...$.records.commits.values()];return t.forEach(function(t){c.Rm.debug(t.id)}),t.sort((t,r)=>t.seq-r.seq),t},"getCommitsArray"),v={commitType:h,getConfig:m,setDirection:g,setOptions:p,getOptions:x,commit:f,branch:u,merge:b,cherryPick:w,checkout:B,prettyPrint:C,clear:T,getBranchesAsObjArray:L,getBranches:K,getCommits:M,getCommitsArray:R,getCurrentBranch:(0,c.K2)(function(){return $.records.currBranch},"getCurrentBranch"),getDirection:(0,c.K2)(function(){return $.records.direction},"getDirection"),getHead:(0,c.K2)(function(){return $.records.head},"getHead"),setAccTitle:c.SV,getAccTitle:c.iN,getAccDescription:c.m7,setAccDescription:c.EI,setDiagramTitle:c.ke,getDiagramTitle:c.ab},P=(0,c.K2)((t,r)=>{(0,n.S)(t,r),t.dir&&r.setDirection(t.dir);for(const e of t.statements)I(e,r)},"populate"),I=(0,c.K2)((t,r)=>{const e={Commit:(0,c.K2)(t=>r.commit(A(t)),"Commit"),Branch:(0,c.K2)(t=>r.branch(G(t)),"Branch"),Merge:(0,c.K2)(t=>r.merge(O(t)),"Merge"),Checkout:(0,c.K2)(t=>r.checkout(q(t)),"Checkout"),CherryPicking:(0,c.K2)(t=>r.cherryPick(z(t)),"CherryPicking")}[t.$type];e?e(t):c.Rm.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),A=(0,c.K2)(t=>({id:t.id,msg:t.message??"",type:void 0!==t.type?h[t.type]:h.NORMAL,tags:t.tags??void 0}),"parseCommit"),G=(0,c.K2)(t=>({name:t.name,order:t.order??0}),"parseBranch"),O=(0,c.K2)(t=>({branch:t.branch,id:t.id??"",type:void 0!==t.type?h[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),q=(0,c.K2)(t=>t.branch,"parseCheckout"),z=(0,c.K2)(t=>({id:t.id,targetId:"",tags:0===t.tags?.length?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),H={parse:(0,c.K2)(async t=>{const r=await(0,s.qg)("gitGraph",t);c.Rm.debug(r),P(r,v)},"parse")};var S=(0,c.D7)(),D=S?.gitGraph,Y=10,N=40,j=new Map,W=new Map,_=new Map,F=[],U=0,V="LR",J=(0,c.K2)(()=>{j.clear(),W.clear(),_.clear(),U=0,F=[],V="LR"},"clear"),Q=(0,c.K2)(t=>{const r=document.createElementNS("http://www.w3.org/2000/svg","text");return("string"==typeof t?t.split(/\\n|\n|<br\s*\/?>/gi):t).forEach(t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","0"),e.setAttribute("class","row"),e.textContent=t.trim(),r.appendChild(e)}),r},"drawText"),X=(0,c.K2)(t=>{let r,e,n;return"BT"===V?(e=(0,c.K2)((t,r)=>t<=r,"comparisonFunc"),n=1/0):(e=(0,c.K2)((t,r)=>t>=r,"comparisonFunc"),n=0),t.forEach(t=>{const o="TB"===V||"BT"==V?W.get(t)?.y:W.get(t)?.x;void 0!==o&&e(o,n)&&(r=t,n=o)}),r},"findClosestParent"),Z=(0,c.K2)(t=>{let r="",e=1/0;return t.forEach(t=>{const n=W.get(t).y;n<=e&&(r=t,e=n)}),r||void 0},"findClosestParentBT"),tt=(0,c.K2)((t,r,e)=>{let n=e,o=e;const a=[];t.forEach(t=>{const e=r.get(t);if(!e)throw new Error(`Commit not found for key ${t}`);e.parents.length?(n=et(e),o=Math.max(n,o)):a.push(e),nt(e,n)}),n=o,a.forEach(t=>{ot(t,n,e)}),t.forEach(t=>{const e=r.get(t);if(e?.parents.length){const t=Z(e.parents);n=W.get(t).y-N,n<=o&&(o=n);const r=j.get(e.branch).pos,a=n-Y;W.set(e.id,{x:r,y:a})}})},"setParallelBTPos"),rt=(0,c.K2)(t=>{const r=X(t.parents.filter(t=>null!==t));if(!r)throw new Error(`Closest parent not found for commit ${t.id}`);const e=W.get(r)?.y;if(void 0===e)throw new Error(`Closest parent position not found for commit ${t.id}`);return e},"findClosestParentPos"),et=(0,c.K2)(t=>rt(t)+N,"calculateCommitPosition"),nt=(0,c.K2)((t,r)=>{const e=j.get(t.branch);if(!e)throw new Error(`Branch not found for commit ${t.id}`);const n=e.pos,o=r+Y;return W.set(t.id,{x:n,y:o}),{x:n,y:o}},"setCommitPosition"),ot=(0,c.K2)((t,r,e)=>{const n=j.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);const o=r+e,a=n.pos;W.set(t.id,{x:a,y:o})},"setRootPosition"),at=(0,c.K2)((t,r,e,n,o,a)=>{if(a===h.HIGHLIGHT)t.append("rect").attr("x",e.x-10).attr("y",e.y-10).attr("width",20).attr("height",20).attr("class",`commit ${r.id} commit-highlight${o%8} ${n}-outer`),t.append("rect").attr("x",e.x-6).attr("y",e.y-6).attr("width",12).attr("height",12).attr("class",`commit ${r.id} commit${o%8} ${n}-inner`);else if(a===h.CHERRY_PICK)t.append("circle").attr("cx",e.x).attr("cy",e.y).attr("r",10).attr("class",`commit ${r.id} ${n}`),t.append("circle").attr("cx",e.x-3).attr("cy",e.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${n}`),t.append("circle").attr("cx",e.x+3).attr("cy",e.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${n}`),t.append("line").attr("x1",e.x+3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${n}`),t.append("line").attr("x1",e.x-3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${n}`);else{const c=t.append("circle");if(c.attr("cx",e.x),c.attr("cy",e.y),c.attr("r",r.type===h.MERGE?9:10),c.attr("class",`commit ${r.id} commit${o%8}`),a===h.MERGE){const a=t.append("circle");a.attr("cx",e.x),a.attr("cy",e.y),a.attr("r",6),a.attr("class",`commit ${n} ${r.id} commit${o%8}`)}if(a===h.REVERSE){t.append("path").attr("d",`M ${e.x-5},${e.y-5}L${e.x+5},${e.y+5}M${e.x-5},${e.y+5}L${e.x+5},${e.y-5}`).attr("class",`commit ${n} ${r.id} commit${o%8}`)}}},"drawCommitBullet"),ct=(0,c.K2)((t,r,e,n)=>{if(r.type!==h.CHERRY_PICK&&(r.customId&&r.type===h.MERGE||r.type!==h.MERGE)&&D?.showCommitLabel){const o=t.append("g"),a=o.insert("rect").attr("class","commit-label-bkg"),c=o.append("text").attr("x",n).attr("y",e.y+25).attr("class","commit-label").text(r.id),s=c.node()?.getBBox();if(s&&(a.attr("x",e.posWithOffset-s.width/2-2).attr("y",e.y+13.5).attr("width",s.width+4).attr("height",s.height+4),"TB"===V||"BT"===V?(a.attr("x",e.x-(s.width+16+5)).attr("y",e.y-12),c.attr("x",e.x-(s.width+16)).attr("y",e.y+s.height-12)):c.attr("x",e.posWithOffset-s.width/2),D.rotateCommitLabel))if("TB"===V||"BT"===V)c.attr("transform","rotate(-45, "+e.x+", "+e.y+")"),a.attr("transform","rotate(-45, "+e.x+", "+e.y+")");else{const t=-7.5-(s.width+10)/25*9.5,r=10+s.width/25*8.5;o.attr("transform","translate("+t+", "+r+") rotate(-45, "+n+", "+e.y+")")}}},"drawCommitLabel"),st=(0,c.K2)((t,r,e,n)=>{if(r.tags.length>0){let o=0,a=0,c=0;const s=[];for(const n of r.tags.reverse()){const r=t.insert("polygon"),i=t.append("circle"),h=t.append("text").attr("y",e.y-16-o).attr("class","tag-label").text(n),d=h.node()?.getBBox();if(!d)throw new Error("Tag bbox not found");a=Math.max(a,d.width),c=Math.max(c,d.height),h.attr("x",e.posWithOffset-d.width/2),s.push({tag:h,hole:i,rect:r,yOffset:o}),o+=20}for(const{tag:t,hole:r,rect:i,yOffset:h}of s){const o=c/2,s=e.y-19.2-h;if(i.attr("class","tag-label-bkg").attr("points",`\n ${n-a/2-2},${s+2} \n ${n-a/2-2},${s-2}\n ${e.posWithOffset-a/2-4},${s-o-2}\n ${e.posWithOffset+a/2+4},${s-o-2}\n ${e.posWithOffset+a/2+4},${s+o+2}\n ${e.posWithOffset-a/2-4},${s+o+2}`),r.attr("cy",s).attr("cx",n-a/2+2).attr("r",1.5).attr("class","tag-hole"),"TB"===V||"BT"===V){const c=n+h;i.attr("class","tag-label-bkg").attr("points",`\n ${e.x},${c+2}\n ${e.x},${c-2}\n ${e.x+Y},${c-o-2}\n ${e.x+Y+a+4},${c-o-2}\n ${e.x+Y+a+4},${c+o+2}\n ${e.x+Y},${c+o+2}`).attr("transform","translate(12,12) rotate(45, "+e.x+","+n+")"),r.attr("cx",e.x+2).attr("cy",c).attr("transform","translate(12,12) rotate(45, "+e.x+","+n+")"),t.attr("x",e.x+5).attr("y",c+3).attr("transform","translate(14,14) rotate(45, "+e.x+","+n+")")}}}},"drawCommitTags"),it=(0,c.K2)(t=>{switch(t.customType??t.type){case h.NORMAL:return"commit-normal";case h.REVERSE:return"commit-reverse";case h.HIGHLIGHT:return"commit-highlight";case h.MERGE:return"commit-merge";case h.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),ht=(0,c.K2)((t,r,e,n)=>{const o={x:0,y:0};if(!(t.parents.length>0)){if("TB"===r)return 30;if("BT"===r){return(n.get(t.id)??o).y-N}return 0}{const e=X(t.parents);if(e){const a=n.get(e)??o;if("TB"===r)return a.y+N;if("BT"===r){return(n.get(t.id)??o).y-N}return a.x+N}}return 0},"calculatePosition"),dt=(0,c.K2)((t,r,e)=>{const n="BT"===V&&e?r:r+Y,o="TB"===V||"BT"===V?n:j.get(t.branch)?.pos,a="TB"===V||"BT"===V?j.get(t.branch)?.pos:n;if(void 0===a||void 0===o)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:o,posWithOffset:n}},"getCommitPosition"),mt=(0,c.K2)((t,r,e)=>{if(!D)throw new Error("GitGraph config not found");const n=t.append("g").attr("class","commit-bullets"),o=t.append("g").attr("class","commit-labels");let a="TB"===V||"BT"===V?30:0;const s=[...r.keys()],i=D?.parallelCommits??!1,h=(0,c.K2)((t,e)=>{const n=r.get(t)?.seq,o=r.get(e)?.seq;return void 0!==n&&void 0!==o?n-o:0},"sortKeys");let d=s.sort(h);"BT"===V&&(i&&tt(d,r,a),d=d.reverse()),d.forEach(t=>{const c=r.get(t);if(!c)throw new Error(`Commit not found for key ${t}`);i&&(a=ht(c,V,a,W));const s=dt(c,a,i);if(e){const t=it(c),r=c.customType??c.type,e=j.get(c.branch)?.index??0;at(n,c,s,t,e,r),ct(o,c,s,a),st(o,c,s,a)}"TB"===V||"BT"===V?W.set(c.id,{x:s.x,y:s.posWithOffset}):W.set(c.id,{x:s.posWithOffset,y:s.y}),a="BT"===V&&i?a+N:a+N+Y,a>U&&(U=a)})},"drawCommits"),$t=(0,c.K2)((t,r,e,n,o)=>{const a=("TB"===V||"BT"===V?e.x<n.x:e.y<n.y)?r.branch:t.branch,s=(0,c.K2)(t=>t.branch===a,"isOnBranchToGetCurve"),i=(0,c.K2)(e=>e.seq>t.seq&&e.seq<r.seq,"isBetweenCommits");return[...o.values()].some(t=>i(t)&&s(t))},"shouldRerouteArrow"),lt=(0,c.K2)((t,r,e=0)=>{const n=t+Math.abs(t-r)/2;if(e>5)return n;if(F.every(t=>Math.abs(t-n)>=10))return F.push(n),n;const o=Math.abs(t-r);return lt(t,r-o/5,e+1)},"findLane"),yt=(0,c.K2)((t,r,e,n)=>{const o=W.get(r.id),a=W.get(e.id);if(void 0===o||void 0===a)throw new Error(`Commit positions not found for commits ${r.id} and ${e.id}`);const c=$t(r,e,o,a,n);let s,i="",d="",m=0,$=0,l=j.get(e.branch)?.index;if(e.type===h.MERGE&&r.id!==e.parents[0]&&(l=j.get(r.branch)?.index),c){i="A 10 10, 0, 0, 0,",d="A 10 10, 0, 0, 1,",m=10,$=10;const t=o.y<a.y?lt(o.y,a.y):lt(a.y,o.y),e=o.x<a.x?lt(o.x,a.x):lt(a.x,o.x);"TB"===V?o.x<a.x?s=`M ${o.x} ${o.y} L ${e-m} ${o.y} ${d} ${e} ${o.y+$} L ${e} ${a.y-m} ${i} ${e+$} ${a.y} L ${a.x} ${a.y}`:(l=j.get(r.branch)?.index,s=`M ${o.x} ${o.y} L ${e+m} ${o.y} ${i} ${e} ${o.y+$} L ${e} ${a.y-m} ${d} ${e-$} ${a.y} L ${a.x} ${a.y}`):"BT"===V?o.x<a.x?s=`M ${o.x} ${o.y} L ${e-m} ${o.y} ${i} ${e} ${o.y-$} L ${e} ${a.y+m} ${d} ${e+$} ${a.y} L ${a.x} ${a.y}`:(l=j.get(r.branch)?.index,s=`M ${o.x} ${o.y} L ${e+m} ${o.y} ${d} ${e} ${o.y-$} L ${e} ${a.y+m} ${i} ${e-$} ${a.y} L ${a.x} ${a.y}`):o.y<a.y?s=`M ${o.x} ${o.y} L ${o.x} ${t-m} ${i} ${o.x+$} ${t} L ${a.x-m} ${t} ${d} ${a.x} ${t+$} L ${a.x} ${a.y}`:(l=j.get(r.branch)?.index,s=`M ${o.x} ${o.y} L ${o.x} ${t+m} ${d} ${o.x+$} ${t} L ${a.x-m} ${t} ${i} ${a.x} ${t-$} L ${a.x} ${a.y}`)}else i="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",m=20,$=20,"TB"===V?(o.x<a.x&&(s=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y-m} ${i} ${o.x+$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${d} ${a.x} ${o.y+$} L ${a.x} ${a.y}`),o.x>a.x&&(i="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",m=20,$=20,s=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y-m} ${d} ${o.x-$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x+m} ${o.y} ${i} ${a.x} ${o.y+$} L ${a.x} ${a.y}`),o.x===a.x&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`)):"BT"===V?(o.x<a.x&&(s=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y+m} ${d} ${o.x+$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${i} ${a.x} ${o.y-$} L ${a.x} ${a.y}`),o.x>a.x&&(i="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",m=20,$=20,s=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y+m} ${i} ${o.x-$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${i} ${a.x} ${o.y-$} L ${a.x} ${a.y}`),o.x===a.x&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`)):(o.y<a.y&&(s=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${d} ${a.x} ${o.y+$} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${o.x} ${a.y-m} ${i} ${o.x+$} ${a.y} L ${a.x} ${a.y}`),o.y>a.y&&(s=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${i} ${a.x} ${o.y-$} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${o.x} ${a.y+m} ${d} ${o.x+$} ${a.y} L ${a.x} ${a.y}`),o.y===a.y&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`));if(void 0===s)throw new Error("Line definition not found");t.append("path").attr("d",s).attr("class","arrow arrow"+l%8)},"drawArrow"),gt=(0,c.K2)((t,r)=>{const e=t.append("g").attr("class","commit-arrows");[...r.keys()].forEach(t=>{const n=r.get(t);n.parents&&n.parents.length>0&&n.parents.forEach(t=>{yt(e,r.get(t),n,r)})})},"drawArrows"),pt=(0,c.K2)((t,r)=>{const e=t.append("g");r.forEach((t,r)=>{const n=r%8,o=j.get(t.name)?.pos;if(void 0===o)throw new Error(`Position not found for branch ${t.name}`);const a=e.append("line");a.attr("x1",0),a.attr("y1",o),a.attr("x2",U),a.attr("y2",o),a.attr("class","branch branch"+n),"TB"===V?(a.attr("y1",30),a.attr("x1",o),a.attr("y2",U),a.attr("x2",o)):"BT"===V&&(a.attr("y1",U),a.attr("x1",o),a.attr("y2",30),a.attr("x2",o)),F.push(o);const c=t.name,s=Q(c),i=e.insert("rect"),h=e.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+n);h.node().appendChild(s);const d=s.getBBox();i.attr("class","branchLabelBkg label"+n).attr("rx",4).attr("ry",4).attr("x",-d.width-4-(!0===D?.rotateCommitLabel?30:0)).attr("y",-d.height/2+8).attr("width",d.width+18).attr("height",d.height+4),h.attr("transform","translate("+(-d.width-14-(!0===D?.rotateCommitLabel?30:0))+", "+(o-d.height/2-1)+")"),"TB"===V?(i.attr("x",o-d.width/2-10).attr("y",0),h.attr("transform","translate("+(o-d.width/2-5)+", 0)")):"BT"===V?(i.attr("x",o-d.width/2-10).attr("y",U),h.attr("transform","translate("+(o-d.width/2-5)+", "+U+")")):i.attr("transform","translate(-19, "+(o-d.height/2)+")")})},"drawBranches"),xt=(0,c.K2)(function(t,r,e,n,o){return j.set(t,{pos:r,index:e}),r+=50+(o?40:0)+("TB"===V||"BT"===V?n.width/2:0)},"setBranchPosition");var ft={parser:H,db:v,renderer:{draw:(0,c.K2)(function(t,r,e,n){if(J(),c.Rm.debug("in gitgraph renderer",t+"\n","id:",r,e),!D)throw new Error("GitGraph config not found");const o=D.rotateCommitLabel??!1,s=n.db;_=s.getCommits();const h=s.getBranchesAsObjArray();V=s.getDirection();const d=(0,i.Ltv)(`[id="${r}"]`);let m=0;h.forEach((t,r)=>{const e=Q(t.name),n=d.append("g"),a=n.insert("g").attr("class","branchLabel"),c=a.insert("g").attr("class","label branch-label");c.node()?.appendChild(e);const s=e.getBBox();m=xt(t.name,m,r,s,o),c.remove(),a.remove(),n.remove()}),mt(d,_,!1),D.showBranches&&pt(d,h),gt(d,_),mt(d,_,!0),a._K.insertTitle(d,"gitTitleText",D.titleTopMargin??0,s.getDiagramTitle()),(0,c.mj)(void 0,d,D.diagramPadding,D.useMaxWidth)},"draw")},styles:(0,c.K2)(t=>`\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0,1,2,3,4,5,6,7].map(r=>`\n .branch-label${r} { fill: ${t["gitBranchLabel"+r]}; }\n .commit${r} { stroke: ${t["git"+r]}; fill: ${t["git"+r]}; }\n .commit-highlight${r} { stroke: ${t["gitInv"+r]}; fill: ${t["gitInv"+r]}; }\n .label${r} { fill: ${t["git"+r]}; }\n .arrow${r} { stroke: ${t["git"+r]}; }\n `).join("\n")}\n\n .branch {\n stroke-width: 1;\n stroke: ${t.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\n .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }\n .tag-hole { fill: ${t.textColor}; }\n\n .commit-merge {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n .commit-reverse {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`,"getStyles")}},28844:(t,r,e)=>{e.d(r,{m:()=>o});var n=e(27293),o=class{constructor(t){this.init=t,this.records=this.init()}static{(0,n.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}}}]); \ No newline at end of file diff --git a/assets/js/7bab4396.f58c23ab.js b/assets/js/7bab4396.f58c23ab.js new file mode 100644 index 0000000000..784f133a1e --- /dev/null +++ b/assets/js/7bab4396.f58c23ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2771],{58118:(e,t,n)=>{n.d(t,{A:()=>o});n(36672);var r=n(13526);const a={tabItem:"tabItem_qogc"};var s=n(23420);function o({children:e,hidden:t,className:n}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,n),hidden:t,children:e})}},65404:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>u});var r=n(36672);const a={},s=r.createContext(a);function o(e){const t=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:t},e.children)}},65780:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(36672),a=n(13526),s=n(10452),o=n(85291),u=n(10914),l=n(41201),i=n(40622),c=n(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function f(e){const{values:t,children:n}=e;return(0,r.useMemo)(()=>{const e=t??function(e){return d(e).map(({props:{value:e,label:t,attributes:n,default:r}})=>({value:e,label:t,attributes:n,default:r}))}(n);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[t,n])}function p({value:e,tabValues:t}){return t.some(t=>t.value===e)}function h({queryString:e=!1,groupId:t}){const n=(0,o.W6)(),a=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,l.aZ)(a),(0,r.useCallback)(e=>{if(!a)return;const t=new URLSearchParams(n.location.search);t.set(a,e),n.replace({...n.location,search:t.toString()})},[a,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,s=f(e),[o,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:s})),[i,d]=h({queryString:n,groupId:a}),[m,b]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,a]=(0,c.Dv)(t);return[n,(0,r.useCallback)(e=>{t&&a.set(e)},[t,a])]}({groupId:a}),y=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,u.A)(()=>{y&&l(y)},[y]);return{selectedValue:o,selectValue:(0,r.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,s]),tabValues:s}}var b=n(74682);const y={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var g=n(23420);function v({className:e,block:t,selectedValue:n,selectValue:r,tabValues:o}){const u=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),i=e=>{const t=e.currentTarget,a=u.indexOf(t),s=o[a].value;s!==n&&(l(t),r(s))},c=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},e),children:o.map(({value:e,label:t,attributes:r})=>(0,g.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{u.push(e)},onKeyDown:c,onClick:i,...r,className:(0,a.A)("tabs__item",y.tabItem,r?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function k({lazy:e,children:t,selectedValue:n}){const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===n);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:s.map((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function j(e){const t=m(e);return(0,g.jsxs)("div",{className:(0,a.A)("tabs-container",y.tabList),children:[(0,g.jsx)(v,{...t,...e}),(0,g.jsx)(k,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,g.jsx)(j,{...e,children:d(e.children)},String(t))}},81882:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.11.3/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.11.3/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/configuration.mdx","tags":[],"version":"0.11.3","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.11.3/"},"next":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.11.3/suppressing-findings"}}');var a=n(23420),s=n(65404),o=n(65780),u=n(58118);const l={id:"configuration",sidebar_label:"Configuration"},i=void 0,c={},d=[];function f(e){const t={code:"code",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(o.A,{children:[(0,a.jsx)(u.A,{value:"Kotlin",default:!0,children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'plugins {\n id("com.rickbusarow.module-check") version "0.11.3"\n}\n\nmoduleCheck {\n\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = setOf(":app")\n\n additionalKaptMatchers = listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n\n reports {\n checkstyle {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n text {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n}\n'})})}),(0,a.jsx)(u.A,{value:"Groovy",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:"plugins {\n id 'com.rickbusarow.module-check' version '0.11.3'\n}\n\nmoduleCheck {\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they're used\n ignoreUnusedFinding = [':test:core-jvm', ':test:core-android']\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = [':app']\n\n additionalKaptMatchers = [\n new modulecheck.api.KaptMatcher(\n 'MyProcessor',\n 'my-project.codegen:processor',\n [\n \"myproject\\\\.\\\\*\",\n \"myproject\\\\.MyInject\",\n \"myproject\\\\.MyInject\\\\.Factory\",\n \"myproject\\\\.MyInjectParam\",\n \"myproject\\\\.MyInjectModule\"\n ]\n )\n ]\n\n reports {\n checkstyle {\n it.enabled = true // default is false\n it.outputPath = \"${project.buildDir}/reports/modulecheck/checkstyle.xml\"\n }\n text {\n it.enabled = true // default is false\n it.outputPath = \"${project.buildDir}/reports/modulecheck/report.txt\"\n }\n }\n\n}\n"})})})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}}}]); \ No newline at end of file diff --git a/assets/js/7c1e7b42.398858f5.js b/assets/js/7c1e7b42.398858f5.js new file mode 100644 index 0000000000..9882f34e31 --- /dev/null +++ b/assets/js/7c1e7b42.398858f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5682],{20962:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.12.0/rules/android/disable_resources.md","sourceDirName":"rules/android","slug":"/rules/android/disable_resources","permalink":"/ModuleCheck/docs/0.12.0/rules/android/disable_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/android/disable_resources.md","tags":[],"version":"0.12.0","frontMatter":{"id":"disable_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.0/rules/android/disable_viewbinding"}}');var o=r(23420),d=r(65404);const i={id:"disable_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,c={},a=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7cbf6be7.0fd7bef4.js b/assets/js/7cbf6be7.0fd7bef4.js new file mode 100644 index 0000000000..e58a6d793c --- /dev/null +++ b/assets/js/7cbf6be7.0fd7bef4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9065],{29781:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>d,default:()=>l,frontMatter:()=>c,metadata:()=>o,toc:()=>a});const o=JSON.parse('{"id":"mdx","title":"Powered by MDX","description":"I can write Markdown alongside my JSX!","source":"@site/versioned_docs/version-0.10.0/mdx.md","sourceDirName":".","slug":"/mdx","permalink":"/ModuleCheck/docs/0.10.0/mdx","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/mdx.md","tags":[],"version":"0.10.0","frontMatter":{"id":"mdx","title":"Powered by MDX"}}');var r=n(23420),s=n(65404);const c={id:"mdx",title:"Powered by MDX"},d=void 0,i={},a=[];function u(e){const t={em:"em",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,r.jsxs)(t.p,{children:["I can write ",(0,r.jsx)(t.strong,{children:"Markdown"})," alongside my ",(0,r.jsx)(t.em,{children:"JSX"}),"!"]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},65404:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>d});var o=n(36672);const r={},s=o.createContext(r);function c(e){const t=o.useContext(s);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7da24252.97351c6c.js b/assets/js/7da24252.97351c6c.js new file mode 100644 index 0000000000..6c303415c6 --- /dev/null +++ b/assets/js/7da24252.97351c6c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2016],{12577:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.12.2/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sort_dependencies","permalink":"/ModuleCheck/docs/0.12.2/rules/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/sorting/sort_dependencies.md","tags":[],"version":"0.12.2","frontMatter":{"id":"sort_dependencies","slug":"/rules/sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.2/rules/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.2/rules/sort_plugins"}}');var r=s(23420),o=s(65404);const i={id:"sort_dependencies",slug:"/rules/sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l()}},65404:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>c});var n=s(36672);const r={},o=n.createContext(r);function i(e){const t=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8065.f8f3def9.js b/assets/js/8065.f8f3def9.js new file mode 100644 index 0000000000..2d24b3e2b0 --- /dev/null +++ b/assets/js/8065.f8f3def9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8065],{19641:(t,e,r)=>{r.d(e,{T:()=>f});var a=r(48203),s=r(41863),i=r(22859),n=r(89949),o=r(90570),l=r(83129),c=r(60707),d=r(49759),h=r(34713),g=r(80171),u=r(33998);const p=(0,h.A)(function(t){return(0,g.A)((0,d.A)(t,1,u.A,!0))});var y=r(6064),b=r(96800),x="\0";class f{constructor(t={}){this._isDirected=!Object.prototype.hasOwnProperty.call(t,"directed")||t.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(t,"multigraph")&&t.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=a.A(void 0),this._defaultEdgeLabelFn=a.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[x]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return s.A(t)||(t=a.A(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return i.A(this._nodes)}sources(){var t=this;return n.A(this.nodes(),function(e){return o.A(t._in[e])})}sinks(){var t=this;return n.A(this.nodes(),function(e){return o.A(t._out[e])})}setNodes(t,e){var r=arguments,a=this;return l.A(t,function(t){r.length>1?a.setNode(t,e):a.setNode(t)}),this}setNode(t,e){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=x,this._children[t]={},this._children[x][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var e=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],l.A(this.children(t),t=>{this.setParent(t)}),delete this._children[t]),l.A(i.A(this._in[t]),e),delete this._in[t],delete this._preds[t],l.A(i.A(this._out[t]),e),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(c.A(e))e=x;else{for(var r=e+="";!c.A(r);r=this.parent(r))if(r===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==x)return e}}children(t){if(c.A(t)&&(t=x),this._isCompound){var e=this._children[t];if(e)return i.A(e)}else{if(t===x)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return i.A(e)}successors(t){var e=this._sucs[t];if(e)return i.A(e)}neighbors(t){var e=this.predecessors(t);if(e)return p(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var r=this;l.A(this._nodes,function(r,a){t(a)&&e.setNode(a,r)}),l.A(this._edgeObjs,function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,r.edge(t))});var a={};function s(t){var i=r.parent(t);return void 0===i||e.hasNode(i)?(a[t]=i,i):i in a?a[i]:s(i)}return this._isCompound&&l.A(e.nodes(),function(t){e.setParent(t,s(t))}),e}setDefaultEdgeLabel(t){return s.A(t)||(t=a.A(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return y.A(this._edgeObjs)}setPath(t,e){var r=this,a=arguments;return b.A(t,function(t,s){return a.length>1?r.setEdge(t,s,e):r.setEdge(t,s),s}),this}setEdge(){var t,e,r,a,s=!1,i=arguments[0];"object"==typeof i&&null!==i&&"v"in i?(t=i.v,e=i.w,r=i.name,2===arguments.length&&(a=arguments[1],s=!0)):(t=i,e=arguments[1],r=arguments[3],arguments.length>2&&(a=arguments[2],s=!0)),t=""+t,e=""+e,c.A(r)||(r=""+r);var n=_(this._isDirected,t,e,r);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,n))return s&&(this._edgeLabels[n]=a),this;if(!c.A(r)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[n]=s?a:this._defaultEdgeLabelFn(t,e,r);var o=function(t,e,r,a){var s=""+e,i=""+r;if(!t&&s>i){var n=s;s=i,i=n}var o={v:s,w:i};a&&(o.name=a);return o}(this._isDirected,t,e,r);return t=o.v,e=o.w,Object.freeze(o),this._edgeObjs[n]=o,m(this._preds[e],t),m(this._sucs[t],e),this._in[e][n]=o,this._out[t][n]=o,this._edgeCount++,this}edge(t,e,r){var a=1===arguments.length?L(this._isDirected,arguments[0]):_(this._isDirected,t,e,r);return this._edgeLabels[a]}hasEdge(t,e,r){var a=1===arguments.length?L(this._isDirected,arguments[0]):_(this._isDirected,t,e,r);return Object.prototype.hasOwnProperty.call(this._edgeLabels,a)}removeEdge(t,e,r){var a=1===arguments.length?L(this._isDirected,arguments[0]):_(this._isDirected,t,e,r),s=this._edgeObjs[a];return s&&(t=s.v,e=s.w,delete this._edgeLabels[a],delete this._edgeObjs[a],w(this._preds[e],t),w(this._sucs[t],e),delete this._in[e][a],delete this._out[t][a],this._edgeCount--),this}inEdges(t,e){var r=this._in[t];if(r){var a=y.A(r);return e?n.A(a,function(t){return t.v===e}):a}}outEdges(t,e){var r=this._out[t];if(r){var a=y.A(r);return e?n.A(a,function(t){return t.w===e}):a}}nodeEdges(t,e){var r=this.inEdges(t,e);if(r)return r.concat(this.outEdges(t,e))}}function m(t,e){t[e]?t[e]++:t[e]=1}function w(t,e){--t[e]||delete t[e]}function _(t,e,r,a){var s=""+e,i=""+r;if(!t&&s>i){var n=s;s=i,i=n}return s+"\x01"+i+"\x01"+(c.A(a)?"\0":a)}function L(t,e){return _(t,e.v,e.w,e.name)}f.prototype._nodeCount=0,f.prototype._edgeCount=0},53776:(t,e,r)=>{r.d(e,{o:()=>a});var a=(0,r(27293).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},57420:(t,e,r)=>{r.d(e,{T:()=>a.T});var a=r(19641)},58065:(t,e,r)=>{r.d(e,{diagram:()=>me});var a=r(53776),s=r(43545),i=r(70837),n=r(24199),o=r(47794),l=r(27293),c=r(64350),d=r(80124),h=r(30941),g=r(61274),u=r(57420),p=function(){var t=(0,l.K2)(function(t,e,r,a){for(r=r||{},a=t.length;a--;r[t[a]]=e);return r},"o"),e=[1,7],r=[1,13],a=[1,14],s=[1,15],i=[1,19],n=[1,16],o=[1,17],c=[1,18],d=[8,30],h=[8,21,28,29,30,31,32,40,44,47],g=[1,23],u=[1,24],p=[8,15,16,21,28,29,30,31,32,40,44,47],y=[8,15,16,21,27,28,29,30,31,32,40,44,47],b=[1,49],x={trace:(0,l.K2)(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:(0,l.K2)(function(t,e,r,a,s,i,n){var o=i.length-1;switch(s){case 4:a.getLogger().debug("Rule: separator (NL) ");break;case 5:a.getLogger().debug("Rule: separator (Space) ");break;case 6:a.getLogger().debug("Rule: separator (EOF) ");break;case 7:a.getLogger().debug("Rule: hierarchy: ",i[o-1]),a.setHierarchy(i[o-1]);break;case 8:a.getLogger().debug("Stop NL ");break;case 9:a.getLogger().debug("Stop EOF ");break;case 10:a.getLogger().debug("Stop NL2 ");break;case 11:a.getLogger().debug("Stop EOF2 ");break;case 12:a.getLogger().debug("Rule: statement: ",i[o]),"number"==typeof i[o].length?this.$=i[o]:this.$=[i[o]];break;case 13:a.getLogger().debug("Rule: statement #2: ",i[o-1]),this.$=[i[o-1]].concat(i[o]);break;case 14:a.getLogger().debug("Rule: link: ",i[o],t),this.$={edgeTypeStr:i[o],label:""};break;case 15:a.getLogger().debug("Rule: LABEL link: ",i[o-3],i[o-1],i[o]),this.$={edgeTypeStr:i[o],label:i[o-1]};break;case 18:const e=parseInt(i[o]),r=a.generateId();this.$={id:r,type:"space",label:"",width:e,children:[]};break;case 23:a.getLogger().debug("Rule: (nodeStatement link node) ",i[o-2],i[o-1],i[o]," typestr: ",i[o-1].edgeTypeStr);const s=a.edgeStrToEdgeData(i[o-1].edgeTypeStr);this.$=[{id:i[o-2].id,label:i[o-2].label,type:i[o-2].type,directions:i[o-2].directions},{id:i[o-2].id+"-"+i[o].id,start:i[o-2].id,end:i[o].id,label:i[o-1].label,type:"edge",directions:i[o].directions,arrowTypeEnd:s,arrowTypeStart:"arrow_open"},{id:i[o].id,label:i[o].label,type:a.typeStr2Type(i[o].typeStr),directions:i[o].directions}];break;case 24:a.getLogger().debug("Rule: nodeStatement (abc88 node size) ",i[o-1],i[o]),this.$={id:i[o-1].id,label:i[o-1].label,type:a.typeStr2Type(i[o-1].typeStr),directions:i[o-1].directions,widthInColumns:parseInt(i[o],10)};break;case 25:a.getLogger().debug("Rule: nodeStatement (node) ",i[o]),this.$={id:i[o].id,label:i[o].label,type:a.typeStr2Type(i[o].typeStr),directions:i[o].directions,widthInColumns:1};break;case 26:a.getLogger().debug("APA123",this?this:"na"),a.getLogger().debug("COLUMNS: ",i[o]),this.$={type:"column-setting",columns:"auto"===i[o]?-1:parseInt(i[o])};break;case 27:a.getLogger().debug("Rule: id-block statement : ",i[o-2],i[o-1]);a.generateId();this.$={...i[o-2],type:"composite",children:i[o-1]};break;case 28:a.getLogger().debug("Rule: blockStatement : ",i[o-2],i[o-1],i[o]);const n=a.generateId();this.$={id:n,type:"composite",label:"",children:i[o-1]};break;case 29:a.getLogger().debug("Rule: node (NODE_ID separator): ",i[o]),this.$={id:i[o]};break;case 30:a.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",i[o-1],i[o]),this.$={id:i[o-1],label:i[o].label,typeStr:i[o].typeStr,directions:i[o].directions};break;case 31:a.getLogger().debug("Rule: dirList: ",i[o]),this.$=[i[o]];break;case 32:a.getLogger().debug("Rule: dirList: ",i[o-1],i[o]),this.$=[i[o-1]].concat(i[o]);break;case 33:a.getLogger().debug("Rule: nodeShapeNLabel: ",i[o-2],i[o-1],i[o]),this.$={typeStr:i[o-2]+i[o],label:i[o-1]};break;case 34:a.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",i[o-3],i[o-2]," #3:",i[o-1],i[o]),this.$={typeStr:i[o-3]+i[o],label:i[o-2],directions:i[o-1]};break;case 35:case 36:this.$={type:"classDef",id:i[o-1].trim(),css:i[o].trim()};break;case 37:this.$={type:"applyClass",id:i[o-1].trim(),styleClass:i[o].trim()};break;case 38:this.$={type:"applyStyles",id:i[o-1].trim(),stylesStr:i[o].trim()}}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:a,31:s,32:i,40:n,44:o,47:c},{8:[1,20]},t(d,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:e,28:r,29:a,31:s,32:i,40:n,44:o,47:c}),t(h,[2,16],{14:22,15:g,16:u}),t(h,[2,17]),t(h,[2,18]),t(h,[2,19]),t(h,[2,20]),t(h,[2,21]),t(h,[2,22]),t(p,[2,25],{27:[1,25]}),t(h,[2,26]),{19:26,26:12,32:i},{11:27,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:a,31:s,32:i,40:n,44:o,47:c},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},t(y,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},t(d,[2,13]),{26:35,32:i},{32:[2,14]},{17:[1,36]},t(p,[2,24]),{11:37,13:4,14:22,15:g,16:u,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:a,31:s,32:i,40:n,44:o,47:c},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},t(y,[2,30]),{18:[1,43]},{18:[1,44]},t(p,[2,23]),{18:[1,45]},{30:[1,46]},t(h,[2,28]),t(h,[2,35]),t(h,[2,36]),t(h,[2,37]),t(h,[2,38]),{37:[1,47]},{34:48,35:b},{15:[1,50]},t(h,[2,27]),t(y,[2,33]),{39:[1,51]},{34:52,35:b,39:[2,31]},{32:[2,15]},t(y,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:(0,l.K2)(function(t,e){if(!e.recoverable){var r=new Error(t);throw r.hash=e,r}this.trace(t)},"parseError"),parse:(0,l.K2)(function(t){var e=this,r=[0],a=[],s=[null],i=[],n=this.table,o="",c=0,d=0,h=0,g=i.slice.call(arguments,1),u=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);u.setInput(t,p.yy),p.yy.lexer=u,p.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var b=u.yylloc;i.push(b);var x=u.options&&u.options.ranges;function f(){var t;return"number"!=typeof(t=a.pop()||u.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,l.K2)(function(t){r.length=r.length-2*t,s.length=s.length-t,i.length=i.length-t},"popStack"),(0,l.K2)(f,"lex");for(var m,w,_,L,k,S,v,E,D,C={};;){if(_=r[r.length-1],this.defaultActions[_]?L=this.defaultActions[_]:(null==m&&(m=f()),L=n[_]&&n[_][m]),void 0===L||!L.length||!L[0]){var R="";for(S in D=[],n[_])this.terminals_[S]&&S>2&&D.push("'"+this.terminals_[S]+"'");R=u.showPosition?"Parse error on line "+(c+1)+":\n"+u.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(R,{text:u.match,token:this.terminals_[m]||m,line:u.yylineno,loc:b,expected:D})}if(L[0]instanceof Array&&L.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+m);switch(L[0]){case 1:r.push(m),s.push(u.yytext),i.push(u.yylloc),r.push(L[1]),m=null,w?(m=w,w=null):(d=u.yyleng,o=u.yytext,c=u.yylineno,b=u.yylloc,h>0&&h--);break;case 2:if(v=this.productions_[L[1]][1],C.$=s[s.length-v],C._$={first_line:i[i.length-(v||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(v||1)].first_column,last_column:i[i.length-1].last_column},x&&(C._$.range=[i[i.length-(v||1)].range[0],i[i.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[o,d,c,p.yy,L[1],s,i].concat(g))))return k;v&&(r=r.slice(0,-1*v*2),s=s.slice(0,-1*v),i=i.slice(0,-1*v)),r.push(this.productions_[L[1]][0]),s.push(C.$),i.push(C._$),E=n[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0},"parse")},f=function(){return{EOF:1,parseError:(0,l.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,l.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,l.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,l.K2)(function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===a.length?this.yylloc.first_column:0)+a[a.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,l.K2)(function(){return this._more=!0,this},"more"),reject:(0,l.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,l.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,l.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,l.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,l.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,l.K2)(function(t,e){var r,a,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],r=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var i in s)this[i]=s[i];return!1}return!1},"test_match"),next:(0,l.K2)(function(){if(this.done)return this.EOF;var t,e,r,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),i=0;i<s.length;i++)if((r=this._input.match(this.rules[s[i]]))&&(!e||r[0].length>e[0].length)){if(e=r,a=i,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,s[i])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,l.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,l.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,l.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,l.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,l.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,l.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,l.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,l.K2)(function(t,e,r,a){switch(r){case 0:return 10;case 1:return t.getLogger().debug("Found space-block"),31;case 2:return t.getLogger().debug("Found nl-block"),31;case 3:return t.getLogger().debug("Found space-block"),29;case 4:t.getLogger().debug(".",e.yytext);break;case 5:t.getLogger().debug("_",e.yytext);break;case 6:return 5;case 7:return e.yytext=-1,28;case 8:return e.yytext=e.yytext.replace(/columns\s+/,""),t.getLogger().debug("COLUMNS (LEX)",e.yytext),28;case 9:case 77:case 78:case 100:this.pushState("md_string");break;case 10:return"MD_STR";case 11:case 35:case 80:this.popState();break;case 12:this.pushState("string");break;case 13:t.getLogger().debug("LEX: POPPING STR:",e.yytext),this.popState();break;case 14:return t.getLogger().debug("LEX: STR end:",e.yytext),"STR";case 15:return e.yytext=e.yytext.replace(/space\:/,""),t.getLogger().debug("SPACE NUM (LEX)",e.yytext),21;case 16:return e.yytext="1",t.getLogger().debug("COLUMNS (LEX)",e.yytext),21;case 17:return 43;case 18:return"LINKSTYLE";case 19:return"INTERPOLATE";case 20:return this.pushState("CLASSDEF"),40;case 21:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 22:return this.popState(),this.pushState("CLASSDEFID"),41;case 23:return this.popState(),42;case 24:return this.pushState("CLASS"),44;case 25:return this.popState(),this.pushState("CLASS_STYLE"),45;case 26:return this.popState(),46;case 27:return this.pushState("STYLE_STMNT"),47;case 28:return this.popState(),this.pushState("STYLE_DEFINITION"),48;case 29:return this.popState(),49;case 30:return this.pushState("acc_title"),"acc_title";case 31:return this.popState(),"acc_title_value";case 32:return this.pushState("acc_descr"),"acc_descr";case 33:return this.popState(),"acc_descr_value";case 34:this.pushState("acc_descr_multiline");break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:case 39:case 41:case 42:case 45:return this.popState(),t.getLogger().debug("Lex: (("),"NODE_DEND";case 40:return this.popState(),t.getLogger().debug("Lex: ))"),"NODE_DEND";case 43:return this.popState(),t.getLogger().debug("Lex: (-"),"NODE_DEND";case 44:return this.popState(),t.getLogger().debug("Lex: -)"),"NODE_DEND";case 46:return this.popState(),t.getLogger().debug("Lex: ]]"),"NODE_DEND";case 47:return this.popState(),t.getLogger().debug("Lex: ("),"NODE_DEND";case 48:return this.popState(),t.getLogger().debug("Lex: ])"),"NODE_DEND";case 49:case 50:return this.popState(),t.getLogger().debug("Lex: /]"),"NODE_DEND";case 51:return this.popState(),t.getLogger().debug("Lex: )]"),"NODE_DEND";case 52:return this.popState(),t.getLogger().debug("Lex: )"),"NODE_DEND";case 53:return this.popState(),t.getLogger().debug("Lex: ]>"),"NODE_DEND";case 54:return this.popState(),t.getLogger().debug("Lex: ]"),"NODE_DEND";case 55:return t.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;case 56:return t.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;case 57:return t.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;case 58:case 60:case 61:case 62:case 65:return t.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 59:return t.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;case 63:return t.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;case 64:return t.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;case 66:case 67:case 68:case 69:case 70:case 71:case 72:return this.pushState("NODE"),36;case 73:return t.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;case 74:return this.pushState("BLOCK_ARROW"),t.getLogger().debug("LEX ARR START"),38;case 75:return t.getLogger().debug("Lex: NODE_ID",e.yytext),32;case 76:return t.getLogger().debug("Lex: EOF",e.yytext),8;case 79:return"NODE_DESCR";case 81:t.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:t.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return t.getLogger().debug("LEX: NODE_DESCR:",e.yytext),"NODE_DESCR";case 84:t.getLogger().debug("LEX POPPING"),this.popState();break;case 85:t.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (right): dir:",e.yytext),"DIR";case 87:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (left):",e.yytext),"DIR";case 88:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (x):",e.yytext),"DIR";case 89:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (y):",e.yytext),"DIR";case 90:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (up):",e.yytext),"DIR";case 91:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (down):",e.yytext),"DIR";case 92:return e.yytext="]>",t.getLogger().debug("Lex (ARROW_DIR end):",e.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 93:return t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 94:case 95:case 96:return t.getLogger().debug("Lex: LINK",e.yytext),15;case 97:case 98:case 99:return t.getLogger().debug("Lex: START_LINK",e.yytext),this.pushState("LLABEL"),16;case 101:return t.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 102:return this.popState(),t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 103:case 104:return this.popState(),t.getLogger().debug("Lex: LINK",e.yytext),15;case 105:return t.getLogger().debug("Lex: COLON",e.yytext),e.yytext=e.yytext.slice(1),27}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block\s+)/,/^(?:block\n+)/,/^(?:block:)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[29],inclusive:!1},STYLE_STMNT:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[23],inclusive:!1},CLASSDEF:{rules:[21,22],inclusive:!1},CLASS_STYLE:{rules:[26],inclusive:!1},CLASS:{rules:[25],inclusive:!1},LLABEL:{rules:[100,101,102,103,104],inclusive:!1},ARROW_DIR:{rules:[86,87,88,89,90,91,92],inclusive:!1},BLOCK_ARROW:{rules:[77,82,85],inclusive:!1},NODE:{rules:[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,78,81],inclusive:!1},md_string:{rules:[10,11,79,80],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[13,14,83,84],inclusive:!1},acc_descr_multiline:{rules:[35,36],inclusive:!1},acc_descr:{rules:[33],inclusive:!1},acc_title:{rules:[31],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,12,15,16,17,18,19,20,24,27,30,32,34,37,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,93,94,95,96,97,98,99,105],inclusive:!0}}}}();function m(){this.yy={}}return x.lexer=f,(0,l.K2)(m,"Parser"),m.prototype=x,x.Parser=m,new m}();p.parser=p;var y=p,b=new Map,x=[],f=new Map,m="color",w="fill",_=(0,l.D7)(),L=new Map,k=(0,l.K2)(t=>l.Y2.sanitizeText(t,_),"sanitizeText"),S=(0,l.K2)(function(t,e=""){let r=L.get(t);r||(r={id:t,styles:[],textStyles:[]},L.set(t,r)),null!=e&&e.split(",").forEach(t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(m).exec(t)){const t=e.replace(w,"bgFill").replace(m,w);r.textStyles.push(t)}r.styles.push(e)})},"addStyleClass"),v=(0,l.K2)(function(t,e=""){const r=b.get(t);null!=e&&(r.styles=e.split(","))},"addStyle2Node"),E=(0,l.K2)(function(t,e){t.split(",").forEach(function(t){let r=b.get(t);if(void 0===r){const e=t.trim();r={id:e,type:"na",children:[]},b.set(e,r)}r.classes||(r.classes=[]),r.classes.push(e)})},"setCssClass"),D=(0,l.K2)((t,e)=>{const r=t.flat(),a=[];for(const s of r)if(s.label&&(s.label=k(s.label)),"classDef"!==s.type)if("applyClass"!==s.type)if("applyStyles"!==s.type)if("column-setting"===s.type)e.columns=s.columns??-1;else if("edge"===s.type){const t=(f.get(s.id)??0)+1;f.set(s.id,t),s.id=t+"-"+s.id,x.push(s)}else{s.label||("composite"===s.type?s.label="":s.label=s.id);const t=b.get(s.id);if(void 0===t?b.set(s.id,s):("na"!==s.type&&(t.type=s.type),s.label!==s.id&&(t.label=s.label)),s.children&&D(s.children,s),"space"===s.type){const t=s.width??1;for(let e=0;e<t;e++){const t=(0,c.A)(s);t.id=t.id+"-"+e,b.set(t.id,t),a.push(t)}}else void 0===t&&a.push(s)}else s?.stylesStr&&v(s.id,s?.stylesStr);else E(s.id,s?.styleClass??"");else S(s.id,s.css);e.children=a},"populateBlockDatabase"),C=[],R={id:"root",type:"composite",children:[],columns:-1},K=(0,l.K2)(()=>{l.Rm.debug("Clear called"),(0,l.IU)(),R={id:"root",type:"composite",children:[],columns:-1},b=new Map([["root",R]]),C=[],L=new Map,x=[],f=new Map},"clear");function N(t){switch(l.Rm.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return l.Rm.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function $(t){return l.Rm.debug("typeStr2Type",t),"=="===t?"thick":"normal"}function T(t){switch(t.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}}(0,l.K2)(N,"typeStr2Type"),(0,l.K2)($,"edgeTypeStr2Type"),(0,l.K2)(T,"edgeStrToEdgeData");var A=0,I=(0,l.K2)(()=>(A++,"id-"+Math.random().toString(36).substr(2,12)+"-"+A),"generateId"),O=(0,l.K2)(t=>{R.children=t,D(t,R),C=R.children},"setHierarchy"),B=(0,l.K2)(t=>{const e=b.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),z=(0,l.K2)(()=>[...b.values()],"getBlocksFlat"),M=(0,l.K2)(()=>C||[],"getBlocks"),P=(0,l.K2)(()=>x,"getEdges"),Y=(0,l.K2)(t=>b.get(t),"getBlock"),F=(0,l.K2)(t=>{b.set(t.id,t)},"setBlock"),j=(0,l.K2)(()=>console,"getLogger"),W=(0,l.K2)(function(){return L},"getClasses"),X={getConfig:(0,l.K2)(()=>(0,l.zj)().block,"getConfig"),typeStr2Type:N,edgeTypeStr2Type:$,edgeStrToEdgeData:T,getLogger:j,getBlocksFlat:z,getBlocks:M,getEdges:P,setHierarchy:O,getBlock:Y,setBlock:F,getColumns:B,getClasses:W,clear:K,generateId:I},H=(0,l.K2)((t,e)=>{const r=d.A,a=r(t,"r"),s=r(t,"g"),i=r(t,"b");return h.A(a,s,i,e)},"fade"),U=(0,l.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span,p {\n color: ${t.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${H(t.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .node .cluster {\n // fill: ${H(t.mainBkg,.5)};\n fill: ${H(t.clusterBkg,.5)};\n stroke: ${H(t.clusterBorder,.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span,p {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n ${(0,a.o)()}\n`,"getStyles"),Z=(0,l.K2)((t,e,r,a)=>{e.forEach(e=>{q[e](t,r,a)})},"insertMarkers"),q={extension:(0,l.K2)((t,e,r)=>{l.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),composition:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),aggregation:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),dependency:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lollipop:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),point:(0,l.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),circle:(0,l.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cross:(0,l.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),barb:(0,l.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb")},G=Z,J=(0,l.D7)()?.block?.padding??8;function V(t,e){if(0===t||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(1===t)return{px:0,py:e};return{px:e%t,py:Math.floor(e/t)}}(0,l.K2)(V,"calculateBlockPosition");var Q=(0,l.K2)(t=>{let e=0,r=0;for(const a of t.children){const{width:s,height:i,x:n,y:o}=a.size??{width:0,height:0,x:0,y:0};l.Rm.debug("getMaxChildSize abc95 child:",a.id,"width:",s,"height:",i,"x:",n,"y:",o,a.type),"space"!==a.type&&(s>e&&(e=s/(t.widthInColumns??1)),i>r&&(r=i))}return{width:e,height:r}},"getMaxChildSize");function tt(t,e,r=0,a=0){l.Rm.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"siblingWidth",r),t?.size?.width||(t.size={width:r,height:a,x:0,y:0});let s=0,i=0;if(t.children?.length>0){for(const r of t.children)tt(r,e);const n=Q(t);s=n.width,i=n.height,l.Rm.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",s,i);for(const e of t.children)e.size&&(l.Rm.debug(`abc95 Setting size of children of ${t.id} id=${e.id} ${s} ${i} ${JSON.stringify(e.size)}`),e.size.width=s*(e.widthInColumns??1)+J*((e.widthInColumns??1)-1),e.size.height=i,e.size.x=0,e.size.y=0,l.Rm.debug(`abc95 updating size of ${t.id} children child:${e.id} maxWidth:${s} maxHeight:${i}`));for(const r of t.children)tt(r,e,s,i);const o=t.columns??-1;let c=0;for(const e of t.children)c+=e.widthInColumns??1;let d=t.children.length;o>0&&o<c&&(d=o);const h=Math.ceil(c/d);let g=d*(s+J)+J,u=h*(i+J)+J;if(g<r){l.Rm.debug(`Detected to small sibling: abc95 ${t.id} siblingWidth ${r} siblingHeight ${a} width ${g}`),g=r,u=a;const e=(r-d*J-J)/d,n=(a-h*J-J)/h;l.Rm.debug("Size indata abc88",t.id,"childWidth",e,"maxWidth",s),l.Rm.debug("Size indata abc88",t.id,"childHeight",n,"maxHeight",i),l.Rm.debug("Size indata abc88 xSize",d,"padding",J);for(const r of t.children)r.size&&(r.size.width=e,r.size.height=n,r.size.x=0,r.size.y=0)}if(l.Rm.debug(`abc95 (finale calc) ${t.id} xSize ${d} ySize ${h} columns ${o}${t.children.length} width=${Math.max(g,t.size?.width||0)}`),g<(t?.size?.width||0)){g=t?.size?.width||0;const e=o>0?Math.min(t.children.length,o):t.children.length;if(e>0){const r=(g-e*J-J)/e;l.Rm.debug("abc95 (growing to fit) width",t.id,g,t.size?.width,r);for(const e of t.children)e.size&&(e.size.width=r)}}t.size={width:g,height:u,x:0,y:0}}l.Rm.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function et(t,e){l.Rm.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);const r=t.columns??-1;if(l.Rm.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){const a=t?.children[0]?.size?.width??0,s=t.children.length*a+(t.children.length-1)*J;l.Rm.debug("widthOfChildren 88",s,"posX");let i=0;l.Rm.debug("abc91 block?.size?.x",t.id,t?.size?.x);let n=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-J,o=0;for(const c of t.children){const a=t;if(!c.size)continue;const{width:s,height:d}=c.size,{px:h,py:g}=V(r,i);if(g!=o&&(o=g,n=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-J,l.Rm.debug("New row in layout for block",t.id," and child ",c.id,o)),l.Rm.debug(`abc89 layout blocks (child) id: ${c.id} Pos: ${i} (px, py) ${h},${g} (${a?.size?.x},${a?.size?.y}) parent: ${a.id} width: ${s}${J}`),a.size){const t=s/2;c.size.x=n+J+t,l.Rm.debug(`abc91 layout blocks (calc) px, pyid:${c.id} startingPos=X${n} new startingPosX${c.size.x} ${t} padding=${J} width=${s} halfWidth=${t} => x:${c.size.x} y:${c.size.y} ${c.widthInColumns} (width * (child?.w || 1)) / 2 ${s*(c?.widthInColumns??1)/2}`),n=c.size.x+t,c.size.y=a.size.y-a.size.height/2+g*(d+J)+d/2+J,l.Rm.debug(`abc88 layout blocks (calc) px, pyid:${c.id}startingPosX${n}${J}${t}=>x:${c.size.x}y:${c.size.y}${c.widthInColumns}(width * (child?.w || 1)) / 2${s*(c?.widthInColumns??1)/2}`)}c.children&&et(c,e),i+=c?.widthInColumns??1,l.Rm.debug("abc88 columnsPos",c,i)}}l.Rm.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function rt(t,{minX:e,minY:r,maxX:a,maxY:s}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&"root"!==t.id){const{x:i,y:n,width:o,height:l}=t.size;i-o/2<e&&(e=i-o/2),n-l/2<r&&(r=n-l/2),i+o/2>a&&(a=i+o/2),n+l/2>s&&(s=n+l/2)}if(t.children)for(const i of t.children)({minX:e,minY:r,maxX:a,maxY:s}=rt(i,{minX:e,minY:r,maxX:a,maxY:s}));return{minX:e,minY:r,maxX:a,maxY:s}}function at(t){const e=t.getBlock("root");if(!e)return;tt(e,t,0,0),et(e,t),l.Rm.debug("getBlocks",JSON.stringify(e,null,2));const{minX:r,minY:a,maxX:s,maxY:i}=rt(e);return{x:r,y:a,width:s-r,height:i-a}}function st(t,e){e&&t.attr("style",e)}function it(t){const e=(0,g.Ltv)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),a=t.label,s=t.isNode?"nodeLabel":"edgeLabel",i=r.append("span");return i.html(a),st(i,t.labelStyle),i.attr("class",s),st(r,t.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}(0,l.K2)(tt,"setBlockSizes"),(0,l.K2)(et,"layoutBlocks"),(0,l.K2)(rt,"findBounds"),(0,l.K2)(at,"layout"),(0,l.K2)(st,"applyStyle"),(0,l.K2)(it,"addHtmlLabel");var nt=(0,l.K2)(async(t,e,r,a)=>{let s=t||"";if("object"==typeof s&&(s=s[0]),(0,l._3)((0,l.D7)().flowchart.htmlLabels)){s=s.replace(/\\n|\n/g,"<br />"),l.Rm.debug("vertexText"+s);return it({isNode:a,label:await(0,n.hE)((0,o.Sm)(s)),labelStyle:e.replace("fill:","color:")})}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let a=[];a="string"==typeof s?s.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(s)?s:[];for(const e of a){const a=document.createElementNS("http://www.w3.org/2000/svg","tspan");a.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),a.setAttribute("dy","1em"),a.setAttribute("x","0"),r?a.setAttribute("class","title-row"):a.setAttribute("class","row"),a.textContent=e.trim(),t.appendChild(a)}return t}},"createLabel"),ot=(0,l.K2)((t,e,r,a,s)=>{e.arrowTypeStart&&ct(t,"start",e.arrowTypeStart,r,a,s),e.arrowTypeEnd&&ct(t,"end",e.arrowTypeEnd,r,a,s)},"addEdgeMarkers"),lt={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},ct=(0,l.K2)((t,e,r,a,s,i)=>{const n=lt[r];if(!n)return void l.Rm.warn(`Unknown arrow type: ${r}`);const o="start"===e?"Start":"End";t.attr(`marker-${e}`,`url(${a}#${s}_${i}-${n}${o})`)},"addEdgeMarker"),dt={},ht={},gt=(0,l.K2)(async(t,e)=>{const r=(0,l.D7)(),a=(0,l._3)(r.flowchart.htmlLabels),s="markdown"===e.labelType?(0,n.GZ)(t,e.label,{style:e.labelStyle,useHtmlLabels:a,addSvgBackground:!0},r):await nt(e.label,e.labelStyle),i=t.insert("g").attr("class","edgeLabel"),o=i.insert("g").attr("class","label");o.node().appendChild(s);let c,d=s.getBBox();if(a){const t=s.children[0],e=(0,g.Ltv)(s);d=t.getBoundingClientRect(),e.attr("width",d.width),e.attr("height",d.height)}if(o.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),dt[e.id]=i,e.width=d.width,e.height=d.height,e.startLabelLeft){const r=await nt(e.startLabelLeft,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),ht[e.id]||(ht[e.id]={}),ht[e.id].startLeft=a,ut(c,e.startLabelLeft)}if(e.startLabelRight){const r=await nt(e.startLabelRight,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=a.node().appendChild(r),s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),ht[e.id]||(ht[e.id]={}),ht[e.id].startRight=a,ut(c,e.startLabelRight)}if(e.endLabelLeft){const r=await nt(e.endLabelLeft,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),a.node().appendChild(r),ht[e.id]||(ht[e.id]={}),ht[e.id].endLeft=a,ut(c,e.endLabelLeft)}if(e.endLabelRight){const r=await nt(e.endLabelRight,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),a.node().appendChild(r),ht[e.id]||(ht[e.id]={}),ht[e.id].endRight=a,ut(c,e.endLabelRight)}return s},"insertEdgeLabel");function ut(t,e){(0,l.D7)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,l.K2)(ut,"setTerminalWidth");var pt=(0,l.K2)((t,e)=>{l.Rm.debug("Moving label abc88 ",t.id,t.label,dt[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath;const a=(0,l.D7)(),{subGraphTitleTotalMargin:s}=(0,i.O)(a);if(t.label){const a=dt[t.id];let i=t.x,n=t.y;if(r){const a=o._K.calcLabelPosition(r);l.Rm.debug("Moving label "+t.label+" from (",i,",",n,") to (",a.x,",",a.y,") abc88"),e.updatedPath&&(i=a.x,n=a.y)}a.attr("transform",`translate(${i}, ${n+s/2})`)}if(t.startLabelLeft){const e=ht[t.id].startLeft;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.startLabelRight){const e=ht[t.id].startRight;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.endLabelLeft){const e=ht[t.id].endLeft;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.endLabelRight){const e=ht[t.id].endRight;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}},"positionEdgeLabel"),yt=(0,l.K2)((t,e)=>{const r=t.x,a=t.y,s=Math.abs(e.x-r),i=Math.abs(e.y-a),n=t.width/2,o=t.height/2;return s>=n||i>=o},"outsideNode"),bt=(0,l.K2)((t,e,r)=>{l.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const a=t.x,s=t.y,i=Math.abs(a-r.x),n=t.width/2;let o=r.x<e.x?n-i:n+i;const c=t.height/2,d=Math.abs(e.y-r.y),h=Math.abs(e.x-r.x);if(Math.abs(s-e.y)*n>Math.abs(a-e.x)*c){let t=r.y<e.y?e.y-c-s:s-c-e.y;o=h*t/d;const a={x:r.x<e.x?r.x+o:r.x-h+o,y:r.y<e.y?r.y+d-t:r.y-d+t};return 0===o&&(a.x=e.x,a.y=e.y),0===h&&(a.x=e.x),0===d&&(a.y=e.y),l.Rm.debug(`abc89 topp/bott calc, Q ${d}, q ${t}, R ${h}, r ${o}`,a),a}{o=r.x<e.x?e.x-n-a:a-n-e.x;let t=d*o/h,s=r.x<e.x?r.x+h-o:r.x-h+o,i=r.y<e.y?r.y+t:r.y-t;return l.Rm.debug(`sides calc abc89, Q ${d}, q ${t}, R ${h}, r ${o}`,{_x:s,_y:i}),0===o&&(s=e.x,i=e.y),0===h&&(s=e.x),0===d&&(i=e.y),{x:s,y:i}}},"intersection"),xt=(0,l.K2)((t,e)=>{l.Rm.debug("abc88 cutPathAtIntersect",t,e);let r=[],a=t[0],s=!1;return t.forEach(t=>{if(yt(e,t)||s)a=t,s||r.push(t);else{const i=bt(e,a,t);let n=!1;r.forEach(t=>{n=n||t.x===i.x&&t.y===i.y}),r.some(t=>t.x===i.x&&t.y===i.y)||r.push(i),s=!0}}),r},"cutPathAtIntersect"),ft=(0,l.K2)(function(t,e,r,a,i,n,o){let c=r.points;l.Rm.debug("abc88 InsertEdge: edge=",r,"e=",e);let d=!1;const h=n.node(e.v);var u=n.node(e.w);u?.intersect&&h?.intersect&&(c=c.slice(1,r.points.length-1),c.unshift(h.intersect(c[0])),c.push(u.intersect(c[c.length-1]))),r.toCluster&&(l.Rm.debug("to cluster abc88",a[r.toCluster]),c=xt(r.points,a[r.toCluster].node),d=!0),r.fromCluster&&(l.Rm.debug("from cluster abc88",a[r.fromCluster]),c=xt(c.reverse(),a[r.fromCluster].node).reverse(),d=!0);const p=c.filter(t=>!Number.isNaN(t.y));let y=g.qrM;!r.curve||"graph"!==i&&"flowchart"!==i||(y=r.curve);const{x:b,y:x}=(0,s.R)(r),f=(0,g.n8j)().x(b).y(x).curve(y);let m;switch(r.thickness){case"normal":m="edge-thickness-normal";break;case"thick":case"invisible":m="edge-thickness-thick";break;default:m=""}switch(r.pattern){case"solid":m+=" edge-pattern-solid";break;case"dotted":m+=" edge-pattern-dotted";break;case"dashed":m+=" edge-pattern-dashed"}const w=t.append("path").attr("d",f(p)).attr("id",r.id).attr("class"," "+m+(r.classes?" "+r.classes:"")).attr("style",r.style);let _="";((0,l.D7)().flowchart.arrowMarkerAbsolute||(0,l.D7)().state.arrowMarkerAbsolute)&&(_=(0,l.ID)(!0)),ot(w,r,_,o,i);let L={};return d&&(L.updatedPath=c),L.originalPath=r.points,L},"insertEdge"),mt=(0,l.K2)(t=>{const e=new Set;for(const r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r)}return e},"expandAndDeduplicateDirections"),wt=(0,l.K2)((t,e,r)=>{const a=mt(t),s=e.height+2*r.padding,i=s/2,n=e.width+2*i+r.padding,o=r.padding/2;return a.has("right")&&a.has("left")&&a.has("up")&&a.has("down")?[{x:0,y:0},{x:i,y:0},{x:n/2,y:2*o},{x:n-i,y:0},{x:n,y:0},{x:n,y:-s/3},{x:n+2*o,y:-s/2},{x:n,y:-2*s/3},{x:n,y:-s},{x:n-i,y:-s},{x:n/2,y:-s-2*o},{x:i,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*o,y:-s/2},{x:0,y:-s/3}]:a.has("right")&&a.has("left")&&a.has("up")?[{x:i,y:0},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}]:a.has("right")&&a.has("left")&&a.has("down")?[{x:0,y:0},{x:i,y:-s},{x:n-i,y:-s},{x:n,y:0}]:a.has("right")&&a.has("up")&&a.has("down")?[{x:0,y:0},{x:n,y:-i},{x:n,y:-s+i},{x:0,y:-s}]:a.has("left")&&a.has("up")&&a.has("down")?[{x:n,y:0},{x:0,y:-i},{x:0,y:-s+i},{x:n,y:-s}]:a.has("right")&&a.has("left")?[{x:i,y:0},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s},{x:0,y:-s/2}]:a.has("up")&&a.has("down")?[{x:n/2,y:0},{x:0,y:-o},{x:i,y:-o},{x:i,y:-s+o},{x:0,y:-s+o},{x:n/2,y:-s},{x:n,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o},{x:n,y:-o}]:a.has("right")&&a.has("up")?[{x:0,y:0},{x:n,y:-i},{x:0,y:-s}]:a.has("right")&&a.has("down")?[{x:0,y:0},{x:n,y:0},{x:0,y:-s}]:a.has("left")&&a.has("up")?[{x:n,y:0},{x:0,y:-i},{x:n,y:-s}]:a.has("left")&&a.has("down")?[{x:n,y:0},{x:0,y:0},{x:n,y:-s}]:a.has("right")?[{x:i,y:-o},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s+o}]:a.has("left")?[{x:i,y:0},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s},{x:0,y:-s/2}]:a.has("up")?[{x:i,y:-o},{x:i,y:-s+o},{x:0,y:-s+o},{x:n/2,y:-s},{x:n,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o}]:a.has("down")?[{x:n/2,y:0},{x:0,y:-o},{x:i,y:-o},{x:i,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o},{x:n,y:-o}]:[{x:0,y:0}]},"getArrowPoints");function _t(t,e){return t.intersect(e)}(0,l.K2)(_t,"intersectNode");var Lt=_t;function kt(t,e,r,a){var s=t.x,i=t.y,n=s-a.x,o=i-a.y,l=Math.sqrt(e*e*o*o+r*r*n*n),c=Math.abs(e*r*n/l);a.x<s&&(c=-c);var d=Math.abs(e*r*o/l);return a.y<i&&(d=-d),{x:s+c,y:i+d}}(0,l.K2)(kt,"intersectEllipse");var St=kt;function vt(t,e,r){return St(t,e,e,r)}(0,l.K2)(vt,"intersectCircle");var Et=vt;function Dt(t,e,r,a){var s,i,n,o,l,c,d,h,g,u,p,y,b;if(s=e.y-t.y,n=t.x-e.x,l=e.x*t.y-t.x*e.y,g=s*r.x+n*r.y+l,u=s*a.x+n*a.y+l,!(0!==g&&0!==u&&Ct(g,u)||(i=a.y-r.y,o=r.x-a.x,c=a.x*r.y-r.x*a.y,d=i*t.x+o*t.y+c,h=i*e.x+o*e.y+c,0!==d&&0!==h&&Ct(d,h)||0===(p=s*o-i*n))))return y=Math.abs(p/2),{x:(b=n*c-o*l)<0?(b-y)/p:(b+y)/p,y:(b=i*l-s*c)<0?(b-y)/p:(b+y)/p}}function Ct(t,e){return t*e>0}(0,l.K2)(Dt,"intersectLine"),(0,l.K2)(Ct,"sameSign");var Rt=Dt,Kt=Nt;function Nt(t,e,r){var a=t.x,s=t.y,i=[],n=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach(function(t){n=Math.min(n,t.x),o=Math.min(o,t.y)}):(n=Math.min(n,e.x),o=Math.min(o,e.y));for(var l=a-t.width/2-n,c=s-t.height/2-o,d=0;d<e.length;d++){var h=e[d],g=e[d<e.length-1?d+1:0],u=Rt(t,r,{x:l+h.x,y:c+h.y},{x:l+g.x,y:c+g.y});u&&i.push(u)}return i.length?(i.length>1&&i.sort(function(t,e){var a=t.x-r.x,s=t.y-r.y,i=Math.sqrt(a*a+s*s),n=e.x-r.x,o=e.y-r.y,l=Math.sqrt(n*n+o*o);return i<l?-1:i===l?0:1}),i[0]):t}(0,l.K2)(Nt,"intersectPolygon");var $t={node:Lt,circle:Et,ellipse:St,polygon:Kt,rect:(0,l.K2)((t,e)=>{var r,a,s=t.x,i=t.y,n=e.x-s,o=e.y-i,l=t.width/2,c=t.height/2;return Math.abs(o)*l>Math.abs(n)*c?(o<0&&(c=-c),r=0===o?0:c*n/o,a=c):(n<0&&(l=-l),r=l,a=0===n?0:l*o/n),{x:s+r,y:i+a}},"intersectRect")},Tt=(0,l.K2)(async(t,e,r,a)=>{const s=(0,l.D7)();let i;const c=e.useHtmlLabels||(0,l._3)(s.flowchart.htmlLabels);i=r||"node default";const d=t.insert("g").attr("class",i).attr("id",e.domId||e.id),h=d.insert("g").attr("class","label").attr("style",e.labelStyle);let u;u=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0];const p=h.node();let y;y="markdown"===e.labelType?(0,n.GZ)(h,(0,l.jZ)((0,o.Sm)(u),s),{useHtmlLabels:c,width:e.width||s.flowchart.wrappingWidth,classes:"markdown-node-label"},s):p.appendChild(await nt((0,l.jZ)((0,o.Sm)(u),s),e.labelStyle,!1,a));let b=y.getBBox();const x=e.padding/2;if((0,l._3)(s.flowchart.htmlLabels)){const t=y.children[0],e=(0,g.Ltv)(y),r=t.getElementsByTagName("img");if(r){const t=""===u.replace(/<img[^>]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function a(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=s.fontSize?s.fontSize:window.getComputedStyle(document.body).fontSize,r=5,a=parseInt(t,10)*r+"px";e.style.minWidth=a,e.style.maxWidth=a}else e.style.width="100%";r(e)}(0,l.K2)(a,"setupImage"),setTimeout(()=>{e.complete&&a()}),e.addEventListener("error",a),e.addEventListener("load",a)})))}b=t.getBoundingClientRect(),e.attr("width",b.width),e.attr("height",b.height)}return c?h.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"):h.attr("transform","translate(0, "+-b.height/2+")"),e.centerLabel&&h.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),h.insert("rect",":first-child"),{shapeSvg:d,bbox:b,halfPadding:x,label:h}},"labelHelper"),At=(0,l.K2)((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");function It(t,e,r,a){return t.insert("polygon",":first-child").attr("points",a.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}(0,l.K2)(It,"insertPolygonShape");var Ot=(0,l.K2)(async(t,e)=>{e.useHtmlLabels||(0,l.D7)().flowchart.htmlLabels||(e.centerLabel=!0);const{shapeSvg:r,bbox:a,halfPadding:s}=await Tt(t,e,"node "+e.classes,!0);l.Rm.info("Classes = ",e.classes);const i=r.insert("rect",":first-child");return i.attr("rx",e.rx).attr("ry",e.ry).attr("x",-a.width/2-s).attr("y",-a.height/2-s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),At(e,i),e.intersect=function(t){return $t.rect(e,t)},r},"note"),Bt=(0,l.K2)(t=>t?" "+t:"","formatClass"),zt=(0,l.K2)((t,e)=>`${e||"node default"}${Bt(t.classes)} ${Bt(t.class)}`,"getClassesFromNode"),Mt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.width+e.padding+(a.height+e.padding),i=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];l.Rm.info("Question main (Circle)");const n=It(r,s,s,i);return n.attr("style",e.style),At(e,n),e.intersect=function(t){return l.Rm.warn("Intersect called"),$t.polygon(e,i,t)},r},"question"),Pt=(0,l.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return r.insert("polygon",":first-child").attr("points",a.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return $t.circle(e,14,t)},r},"choice"),Yt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.height+e.padding,i=s/4,n=a.width+2*i+e.padding,o=[{x:i,y:0},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}],l=It(r,n,s,o);return l.attr("style",e.style),At(e,l),e.intersect=function(t){return $t.polygon(e,o,t)},r},"hexagon"),Ft=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,void 0,!0),s=a.height+2*e.padding,i=s/2,n=a.width+2*i+e.padding,o=wt(e.directions,a,e),l=It(r,n,s,o);return l.attr("style",e.style),At(e,l),e.intersect=function(t){return $t.polygon(e,o,t)},r},"block_arrow"),jt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-i/2,y:0},{x:s,y:0},{x:s,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}];return It(r,s,i,n).attr("style",e.style),e.width=s+i,e.height=i,e.intersect=function(t){return $t.polygon(e,n,t)},r},"rect_left_inv_arrow"),Wt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-2*i/6,y:0},{x:s-i/6,y:0},{x:s+2*i/6,y:-i},{x:i/6,y:-i}],o=It(r,s,i,n);return o.attr("style",e.style),At(e,o),e.intersect=function(t){return $t.polygon(e,n,t)},r},"lean_right"),Xt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:2*i/6,y:0},{x:s+i/6,y:0},{x:s-2*i/6,y:-i},{x:-i/6,y:-i}],o=It(r,s,i,n);return o.attr("style",e.style),At(e,o),e.intersect=function(t){return $t.polygon(e,n,t)},r},"lean_left"),Ht=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-2*i/6,y:0},{x:s+2*i/6,y:0},{x:s-i/6,y:-i},{x:i/6,y:-i}],o=It(r,s,i,n);return o.attr("style",e.style),At(e,o),e.intersect=function(t){return $t.polygon(e,n,t)},r},"trapezoid"),Ut=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:i/6,y:0},{x:s-i/6,y:0},{x:s+2*i/6,y:-i},{x:-2*i/6,y:-i}],o=It(r,s,i,n);return o.attr("style",e.style),At(e,o),e.intersect=function(t){return $t.polygon(e,n,t)},r},"inv_trapezoid"),Zt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:0,y:0},{x:s+i/2,y:0},{x:s,y:-i/2},{x:s+i/2,y:-i},{x:0,y:-i}],o=It(r,s,i,n);return o.attr("style",e.style),At(e,o),e.intersect=function(t){return $t.polygon(e,n,t)},r},"rect_right_inv_arrow"),qt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.width+e.padding,i=s/2,n=i/(2.5+s/50),o=a.height+n+e.padding,l="M 0,"+n+" a "+i+","+n+" 0,0,0 "+s+" 0 a "+i+","+n+" 0,0,0 "+-s+" 0 l 0,"+o+" a "+i+","+n+" 0,0,0 "+s+" 0 l 0,"+-o,c=r.attr("label-offset-y",n).insert("path",":first-child").attr("style",e.style).attr("d",l).attr("transform","translate("+-s/2+","+-(o/2+n)+")");return At(e,c),e.intersect=function(t){const r=$t.rect(e,t),a=r.x-e.x;if(0!=i&&(Math.abs(a)<e.width/2||Math.abs(a)==e.width/2&&Math.abs(r.y-e.y)>e.height/2-n)){let s=n*n*(1-a*a/(i*i));0!=s&&(s=Math.sqrt(s)),s=n-s,t.y-e.y>0&&(s=-s),r.y+=s}return r},r},"cylinder"),Gt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await Tt(t,e,"node "+e.classes+" "+e.class,!0),i=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,c=e.positioned?-n/2:-a.width/2-s,d=e.positioned?-o/2:-a.height/2-s;if(i.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",c).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(Qt(i,e.props.borders,n,o),t.delete("borders")),t.forEach(t=>{l.Rm.warn(`Unknown node property ${t}`)})}return At(e,i),e.intersect=function(t){return $t.rect(e,t)},r},"rect"),Jt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await Tt(t,e,"node "+e.classes,!0),i=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,c=e.positioned?-n/2:-a.width/2-s,d=e.positioned?-o/2:-a.height/2-s;if(i.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",c).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(Qt(i,e.props.borders,n,o),t.delete("borders")),t.forEach(t=>{l.Rm.warn(`Unknown node property ${t}`)})}return At(e,i),e.intersect=function(t){return $t.rect(e,t)},r},"composite"),Vt=(0,l.K2)(async(t,e)=>{const{shapeSvg:r}=await Tt(t,e,"label",!0);l.Rm.trace("Classes = ",e.class);const a=r.insert("rect",":first-child");if(a.attr("width",0).attr("height",0),r.attr("class","label edgeLabel"),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(Qt(a,e.props.borders,0,0),t.delete("borders")),t.forEach(t=>{l.Rm.warn(`Unknown node property ${t}`)})}return At(e,a),e.intersect=function(t){return $t.rect(e,t)},r},"labelRect");function Qt(t,e,r,a){const s=[],i=(0,l.K2)(t=>{s.push(t,0)},"addBorder"),n=(0,l.K2)(t=>{s.push(0,t)},"skipBorder");e.includes("t")?(l.Rm.debug("add top border"),i(r)):n(r),e.includes("r")?(l.Rm.debug("add right border"),i(a)):n(a),e.includes("b")?(l.Rm.debug("add bottom border"),i(r)):n(r),e.includes("l")?(l.Rm.debug("add left border"),i(a)):n(a),t.attr("stroke-dasharray",s.join(" "))}(0,l.K2)(Qt,"applyNodePropertyBorders");var te=(0,l.K2)(async(t,e)=>{let r;r=e.classes?"node "+e.classes:"node default";const a=t.insert("g").attr("class",r).attr("id",e.domId||e.id),s=a.insert("rect",":first-child"),i=a.insert("line"),n=a.insert("g").attr("class","label"),o=e.labelText.flat?e.labelText.flat():e.labelText;let c="";c="object"==typeof o?o[0]:o,l.Rm.info("Label text abc79",c,o,"object"==typeof o);const d=n.node().appendChild(await nt(c,e.labelStyle,!0,!0));let h={width:0,height:0};if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=d.children[0],e=(0,g.Ltv)(d);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}l.Rm.info("Text 2",o);const u=o.slice(1,o.length);let p=d.getBBox();const y=n.node().appendChild(await nt(u.join?u.join("<br/>"):u,e.labelStyle,!0,!0));if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=y.children[0],e=(0,g.Ltv)(y);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}const b=e.padding/2;return(0,g.Ltv)(y).attr("transform","translate( "+(h.width>p.width?0:(p.width-h.width)/2)+", "+(p.height+b+5)+")"),(0,g.Ltv)(d).attr("transform","translate( "+(h.width<p.width?0:-(p.width-h.width)/2)+", 0)"),h=n.node().getBBox(),n.attr("transform","translate("+-h.width/2+", "+(-h.height/2-b+3)+")"),s.attr("class","outer title-state").attr("x",-h.width/2-b).attr("y",-h.height/2-b).attr("width",h.width+e.padding).attr("height",h.height+e.padding),i.attr("class","divider").attr("x1",-h.width/2-b).attr("x2",h.width/2+b).attr("y1",-h.height/2-b+p.height+b).attr("y2",-h.height/2-b+p.height+b),At(e,s),e.intersect=function(t){return $t.rect(e,t)},a},"rectWithTitle"),ee=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.height+e.padding,i=a.width+s/4+e.padding,n=r.insert("rect",":first-child").attr("style",e.style).attr("rx",s/2).attr("ry",s/2).attr("x",-i/2).attr("y",-s/2).attr("width",i).attr("height",s);return At(e,n),e.intersect=function(t){return $t.rect(e,t)},r},"stadium"),re=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await Tt(t,e,zt(e,void 0),!0),i=r.insert("circle",":first-child");return i.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),l.Rm.info("Circle main"),At(e,i),e.intersect=function(t){return l.Rm.info("Circle intersect",e,a.width/2+s,t),$t.circle(e,a.width/2+s,t)},r},"circle"),ae=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await Tt(t,e,zt(e,void 0),!0),i=r.insert("g",":first-child"),n=i.insert("circle"),o=i.insert("circle");return i.attr("class",e.class),n.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s+5).attr("width",a.width+e.padding+10).attr("height",a.height+e.padding+10),o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),l.Rm.info("DoubleCircle main"),At(e,n),e.intersect=function(t){return l.Rm.info("DoubleCircle intersect",e,a.width/2+s+5,t),$t.circle(e,a.width/2+s+5,t)},r},"doublecircle"),se=(0,l.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Tt(t,e,zt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:0,y:0},{x:s,y:0},{x:s,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:s+8,y:0},{x:s+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],o=It(r,s,i,n);return o.attr("style",e.style),At(e,o),e.intersect=function(t){return $t.polygon(e,n,t)},r},"subroutine"),ie=(0,l.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child");return a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),At(e,a),e.intersect=function(t){return $t.circle(e,7,t)},r},"start"),ne=(0,l.K2)((t,e,r)=>{const a=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let s=70,i=10;"LR"===r&&(s=10,i=70);const n=a.append("rect").attr("x",-1*s/2).attr("y",-1*i/2).attr("width",s).attr("height",i).attr("class","fork-join");return At(e,n),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return $t.rect(e,t)},a},"forkJoin"),oe={rhombus:Mt,composite:Jt,question:Mt,rect:Gt,labelRect:Vt,rectWithTitle:te,choice:Pt,circle:re,doublecircle:ae,stadium:ee,hexagon:Yt,block_arrow:Ft,rect_left_inv_arrow:jt,lean_right:Wt,lean_left:Xt,trapezoid:Ht,inv_trapezoid:Ut,rect_right_inv_arrow:Zt,cylinder:qt,start:ie,end:(0,l.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child"),s=r.insert("circle",":first-child");return s.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),a.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),At(e,s),e.intersect=function(t){return $t.circle(e,7,t)},r},"end"),note:Ot,subroutine:se,fork:ne,join:ne,class_box:(0,l.K2)(async(t,e)=>{const r=e.padding/2;let a;a=e.classes?"node "+e.classes:"node default";const s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),i=s.insert("rect",":first-child"),n=s.insert("line"),o=s.insert("line");let c=0,d=4;const h=s.insert("g").attr("class","label");let u=0;const p=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xab"+e.classData.annotations[0]+"\xbb":"",b=h.node().appendChild(await nt(y,e.labelStyle,!0,!0));let x=b.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=b.children[0],e=(0,g.Ltv)(b);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+4,c+=x.width);let f=e.classData.label;void 0!==e.classData.type&&""!==e.classData.type&&((0,l.D7)().flowchart.htmlLabels?f+="<"+e.classData.type+">":f+="<"+e.classData.type+">");const m=h.node().appendChild(await nt(f,e.labelStyle,!0,!0));(0,g.Ltv)(m).attr("class","classTitle");let w=m.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=m.children[0],e=(0,g.Ltv)(m);w=t.getBoundingClientRect(),e.attr("width",w.width),e.attr("height",w.height)}d+=w.height+4,w.width>c&&(c=w.width);const _=[];e.classData.members.forEach(async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.D7)().flowchart.htmlLabels&&(a=a.replace(/</g,"<").replace(/>/g,">"));const s=h.node().appendChild(await nt(a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0));let i=s.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=s.children[0],e=(0,g.Ltv)(s);i=t.getBoundingClientRect(),e.attr("width",i.width),e.attr("height",i.height)}i.width>c&&(c=i.width),d+=i.height+4,_.push(s)}),d+=8;const L=[];if(e.classData.methods.forEach(async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.D7)().flowchart.htmlLabels&&(a=a.replace(/</g,"<").replace(/>/g,">"));const s=h.node().appendChild(await nt(a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0));let i=s.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=s.children[0],e=(0,g.Ltv)(s);i=t.getBoundingClientRect(),e.attr("width",i.width),e.attr("height",i.height)}i.width>c&&(c=i.width),d+=i.height+4,L.push(s)}),d+=8,p){let t=(c-x.width)/2;(0,g.Ltv)(b).attr("transform","translate( "+(-1*c/2+t)+", "+-1*d/2+")"),u=x.height+4}let k=(c-w.width)/2;return(0,g.Ltv)(m).attr("transform","translate( "+(-1*c/2+k)+", "+(-1*d/2+u)+")"),u+=w.height+4,n.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+u).attr("y2",-d/2-r+8+u),u+=8,_.forEach(t=>{(0,g.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+u+4)+")");const e=t?.getBBox();u+=(e?.height??0)+4}),u+=8,o.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+u).attr("y2",-d/2-r+8+u),u+=8,L.forEach(t=>{(0,g.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+u)+")");const e=t?.getBBox();u+=(e?.height??0)+4}),i.attr("style",e.style).attr("class","outer title-state").attr("x",-c/2-r).attr("y",-d/2-r).attr("width",c+e.padding).attr("height",d+e.padding),At(e,i),e.intersect=function(t){return $t.rect(e,t)},s},"class_box")},le={},ce=(0,l.K2)(async(t,e,r)=>{let a,s;if(e.link){let i;"sandbox"===(0,l.D7)().securityLevel?i="_top":e.linkTarget&&(i=e.linkTarget||"_blank"),a=t.insert("svg:a").attr("xlink:href",e.link).attr("target",i),s=await oe[e.shape](a,e,r)}else s=await oe[e.shape](t,e,r),a=s;return e.tooltip&&s.attr("title",e.tooltip),e.class&&s.attr("class","node default "+e.class),le[e.id]=a,e.haveCallback&&le[e.id].attr("class",le[e.id].attr("class")+" clickable"),a},"insertNode"),de=(0,l.K2)(t=>{const e=le[t.id];l.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode");function he(t,e,r=!1){const a=t;let s="default";(a?.classes?.length||0)>0&&(s=(a?.classes??[]).join(" ")),s+=" flowchart-label";let i,n=0,c="";switch(a.type){case"round":n=5,c="rect";break;case"composite":n=0,c="composite",i=0;break;case"square":case"group":default:c="rect";break;case"diamond":c="question";break;case"hexagon":c="hexagon";break;case"block_arrow":c="block_arrow";break;case"odd":case"rect_left_inv_arrow":c="rect_left_inv_arrow";break;case"lean_right":c="lean_right";break;case"lean_left":c="lean_left";break;case"trapezoid":c="trapezoid";break;case"inv_trapezoid":c="inv_trapezoid";break;case"circle":c="circle";break;case"ellipse":c="ellipse";break;case"stadium":c="stadium";break;case"subroutine":c="subroutine";break;case"cylinder":c="cylinder";break;case"doublecircle":c="doublecircle"}const d=(0,o.sM)(a?.styles??[]),h=a.label,g=a.size??{width:0,height:0,x:0,y:0};return{labelStyle:d.labelStyle,shape:c,labelText:h,rx:n,ry:n,class:s,style:d.style,id:a.id,directions:a.directions,width:g.width,height:g.height,x:g.x,y:g.y,positioned:r,intersect:void 0,type:a.type,padding:i??(0,l.zj)()?.block?.padding??0}}async function ge(t,e,r){const a=he(e,0,!1);if("group"===a.type)return;const s=(0,l.zj)(),i=await ce(t,a,{config:s}),n=i.node().getBBox(),o=r.getBlock(a.id);o.size={width:n.width,height:n.height,x:0,y:0,node:i},r.setBlock(o),i.remove()}async function ue(t,e,r){const a=he(e,0,!0);if("space"!==r.getBlock(a.id).type){const r=(0,l.zj)();await ce(t,a,{config:r}),e.intersect=a?.intersect,de(a)}}async function pe(t,e,r,a){for(const s of e)await a(t,s,r),s.children&&await pe(t,s.children,r,a)}async function ye(t,e,r){await pe(t,e,r,ge)}async function be(t,e,r){await pe(t,e,r,ue)}async function xe(t,e,r,a,s){const i=new u.T({multigraph:!0,compound:!0});i.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const n of r)n.size&&i.setNode(n.id,{width:n.size.width,height:n.size.height,intersect:n.intersect});for(const n of e)if(n.start&&n.end){const e=a.getBlock(n.start),r=a.getBlock(n.end);if(e?.size&&r?.size){const a=e.size,o=r.size,l=[{x:a.x,y:a.y},{x:a.x+(o.x-a.x)/2,y:a.y+(o.y-a.y)/2},{x:o.x,y:o.y}];ft(t,{v:n.start,w:n.end,name:n.id},{...n,arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",i,s),n.label&&(await gt(t,{...n,label:n.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),pt({...n,x:l[1].x,y:l[1].y},{originalPath:l}))}}}(0,l.K2)(he,"getNodeFromBlock"),(0,l.K2)(ge,"calculateBlockSize"),(0,l.K2)(ue,"insertBlockPositioned"),(0,l.K2)(pe,"performOperations"),(0,l.K2)(ye,"calculateBlockSizes"),(0,l.K2)(be,"insertBlocks"),(0,l.K2)(xe,"insertEdges");var fe=(0,l.K2)(function(t,e){return e.db.getClasses()},"getClasses"),me={parser:y,db:X,renderer:{draw:(0,l.K2)(async function(t,e,r,a){const{securityLevel:s,block:i}=(0,l.zj)(),n=a.db;let o;"sandbox"===s&&(o=(0,g.Ltv)("#i"+e));const c="sandbox"===s?(0,g.Ltv)(o.nodes()[0].contentDocument.body):(0,g.Ltv)("body"),d="sandbox"===s?c.select(`[id="${e}"]`):(0,g.Ltv)(`[id="${e}"]`);G(d,["point","circle","cross"],a.type,e);const h=n.getBlocks(),u=n.getBlocksFlat(),p=n.getEdges(),y=d.insert("g").attr("class","block");await ye(y,h,n);const b=at(n);if(await be(y,h,n),await xe(y,p,u,n,e),b){const t=b,e=Math.max(1,Math.round(t.width/t.height*.125)),r=t.height+e+10,a=t.width+10,{useMaxWidth:s}=i;(0,l.a$)(d,r,a,!!s),l.Rm.debug("Here Bounds",b,t),d.attr("viewBox",`${t.x-5} ${t.y-5} ${t.width+10} ${t.height+10}`)}},"draw"),getClasses:fe},styles:U}},64350:(t,e,r)=>{r.d(e,{A:()=>s});var a=r(98020);const s=function(t){return(0,a.A)(t,4)}},80124:(t,e,r)=>{r.d(e,{A:()=>i});var a=r(46554),s=r(55385);const i=(t,e)=>a.A.lang.round(s.A.parse(t)[e])}}]); \ No newline at end of file diff --git a/assets/js/8090.2e2b6ff8.js b/assets/js/8090.2e2b6ff8.js new file mode 100644 index 0000000000..39f61270d9 --- /dev/null +++ b/assets/js/8090.2e2b6ff8.js @@ -0,0 +1,2 @@ +/*! For license information please see 8090.2e2b6ff8.js.LICENSE.txt */ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8090],{48090:(e,t,n)=>{function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t,n){return t&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,c(r.key),r)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function o(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=h(e))||t){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw i}}}}function s(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,s=[],l=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||h(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||h(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function h(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}n.d(t,{A:()=>Fh});var f="undefined"==typeof window?null:window,p=f?f.navigator:null;f&&f.document;var g,v,y,m,b,x,w,E,k,T,C,P,S,B,D,_,A,M,R,I,N,L,z,O,V,F,j,X,q=d(""),Y=d({}),W=d(function(){}),U="undefined"==typeof HTMLElement?"undefined":d(HTMLElement),H=function(e){return e&&e.instanceString&&G(e.instanceString)?e.instanceString():null},K=function(e){return null!=e&&d(e)==q},G=function(e){return null!=e&&d(e)===W},Z=function(e){return!ee(e)&&(Array.isArray?Array.isArray(e):null!=e&&e instanceof Array)},$=function(e){return null!=e&&d(e)===Y&&!Z(e)&&e.constructor===Object},Q=function(e){return null!=e&&d(e)===d(1)&&!isNaN(e)},J=function(e){return"undefined"===U?void 0:null!=e&&e instanceof HTMLElement},ee=function(e){return te(e)||ne(e)},te=function(e){return"collection"===H(e)&&e._private.single},ne=function(e){return"collection"===H(e)&&!e._private.single},re=function(e){return"core"===H(e)},ae=function(e){return"stylesheet"===H(e)},ie=function(e){return null==e||!(""!==e&&!e.match(/^\s+$/))},oe=function(e){return function(e){return null!=e&&d(e)===Y}(e)&&G(e.then)},se=function(e,t){t||(t=function(){if(1===arguments.length)return arguments[0];if(0===arguments.length)return"undefined";for(var e=[],t=0;t<arguments.length;t++)e.push(arguments[t]);return e.join("$")});var n=function(){var r,a=arguments,i=t.apply(this,a),o=n.cache;return(r=o[i])||(r=o[i]=e.apply(this,a)),r};return n.cache={},n},le=se(function(e){return e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})}),ue=se(function(e){return e.replace(/(-\w)/g,function(e){return e[1].toUpperCase()})}),ce=se(function(e,t){return e+t[0].toUpperCase()+t.substring(1)},function(e,t){return e+"$"+t}),de=function(e){return ie(e)?e:e.charAt(0).toUpperCase()+e.substring(1)},he="(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))",fe="rgb[a]?\\(("+he+"[%]?)\\s*,\\s*("+he+"[%]?)\\s*,\\s*("+he+"[%]?)(?:\\s*,\\s*("+he+"))?\\)",pe="rgb[a]?\\((?:"+he+"[%]?)\\s*,\\s*(?:"+he+"[%]?)\\s*,\\s*(?:"+he+"[%]?)(?:\\s*,\\s*(?:"+he+"))?\\)",ge="hsl[a]?\\(("+he+")\\s*,\\s*("+he+"[%])\\s*,\\s*("+he+"[%])(?:\\s*,\\s*("+he+"))?\\)",ve="hsl[a]?\\((?:"+he+")\\s*,\\s*(?:"+he+"[%])\\s*,\\s*(?:"+he+"[%])(?:\\s*,\\s*(?:"+he+"))?\\)",ye=function(e,t){return e<t?-1:e>t?1:0},me=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n<t.length;n++){var r=t[n];if(null!=r)for(var a=Object.keys(r),i=0;i<a.length;i++){var o=a[i];e[o]=r[o]}}return e},be=function(e){return(Z(e)?e:null)||function(e){return xe[e.toLowerCase()]}(e)||function(e){if((4===e.length||7===e.length)&&"#"===e[0]){var t,n,r,a=16;return 4===e.length?(t=parseInt(e[1]+e[1],a),n=parseInt(e[2]+e[2],a),r=parseInt(e[3]+e[3],a)):(t=parseInt(e[1]+e[2],a),n=parseInt(e[3]+e[4],a),r=parseInt(e[5]+e[6],a)),[t,n,r]}}(e)||function(e){var t,n=new RegExp("^"+fe+"$").exec(e);if(n){t=[];for(var r=[],a=1;a<=3;a++){var i=n[a];if("%"===i[i.length-1]&&(r[a]=!0),i=parseFloat(i),r[a]&&(i=i/100*255),i<0||i>255)return;t.push(Math.floor(i))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var l=n[4];if(void 0!==l){if((l=parseFloat(l))<0||l>1)return;t.push(l)}}return t}(e)||function(e){var t,n,r,a,i,o,s,l;function u(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^"+ge+"$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(a=parseFloat(c[3]))<0||a>100)return;if(a/=100,void 0!==(i=c[4])&&((i=parseFloat(i))<0||i>1))return;if(0===r)o=s=l=Math.round(255*a);else{var d=a<.5?a*(1+r):a+r-a*r,h=2*a-d;o=Math.round(255*u(h,d,n+1/3)),s=Math.round(255*u(h,d,n)),l=Math.round(255*u(h,d,n-1/3))}t=[o,s,l,i]}return t}(e)},xe={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},we=function(e){for(var t=e.map,n=e.keys,r=n.length,a=0;a<r;a++){var i=n[a];if($(i))throw Error("Tried to set map with object key");a<n.length-1?(null==t[i]&&(t[i]={}),t=t[i]):t[i]=e.value}},Ee=function(e){for(var t=e.map,n=e.keys,r=n.length,a=0;a<r;a++){var i=n[a];if($(i))throw Error("Tried to get map with object key");if(null==(t=t[i]))return t}return t},ke="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Te(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Ce(){if(v)return g;return v=1,g=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}}function Pe(){if(x)return b;x=1;var e=function(){if(m)return y;m=1;var e="object"==typeof ke&&ke&&ke.Object===Object&&ke;return y=e}(),t="object"==typeof self&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return b=n}function Se(){if(P)return C;P=1;var e=function(){if(T)return k;T=1;var e=/\s/;return k=function(t){for(var n=t.length;n--&&e.test(t.charAt(n)););return n},k}(),t=/^\s+/;return C=function(n){return n?n.slice(0,e(n)+1).replace(t,""):n},C}function Be(){if(B)return S;B=1;var e=Pe().Symbol;return S=e}function De(){if(I)return R;I=1;var e=Be(),t=function(){if(_)return D;_=1;var e=Be(),t=Object.prototype,n=t.hasOwnProperty,r=t.toString,a=e?e.toStringTag:void 0;return D=function(e){var t=n.call(e,a),i=e[a];try{e[a]=void 0;var o=!0}catch(l){}var s=r.call(e);return o&&(t?e[a]=i:delete e[a]),s}}(),n=function(){if(M)return A;M=1;var e=Object.prototype.toString;return A=function(t){return e.call(t)}}(),r=e?e.toStringTag:void 0;return R=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":r&&r in Object(e)?t(e):n(e)}}function _e(){if(O)return z;O=1;var e=De(),t=L?N:(L=1,N=function(e){return null!=e&&"object"==typeof e});return z=function(n){return"symbol"==typeof n||t(n)&&"[object Symbol]"==e(n)}}var Ae=Te(function(){if(X)return j;X=1;var e=Ce(),t=function(){if(E)return w;E=1;var e=Pe();return w=function(){return e.Date.now()}}(),n=function(){if(F)return V;F=1;var e=Se(),t=Ce(),n=_e(),r=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,i=/^0o[0-7]+$/i,o=parseInt;return V=function(s){if("number"==typeof s)return s;if(n(s))return NaN;if(t(s)){var l="function"==typeof s.valueOf?s.valueOf():s;s=t(l)?l+"":l}if("string"!=typeof s)return 0===s?s:+s;s=e(s);var u=a.test(s);return u||i.test(s)?o(s.slice(2),u?2:8):r.test(s)?NaN:+s}}(),r=Math.max,a=Math.min;return j=function(i,o,s){var l,u,c,d,h,f,p=0,g=!1,v=!1,y=!0;if("function"!=typeof i)throw new TypeError("Expected a function");function m(e){var t=l,n=u;return l=u=void 0,p=e,d=i.apply(n,t)}function b(e){var t=e-f;return void 0===f||t>=o||t<0||v&&e-p>=c}function x(){var e=t();if(b(e))return w(e);h=setTimeout(x,function(e){var t=o-(e-f);return v?a(t,c-(e-p)):t}(e))}function w(e){return h=void 0,y&&l?m(e):(l=u=void 0,d)}function E(){var e=t(),n=b(e);if(l=arguments,u=this,f=e,n){if(void 0===h)return function(e){return p=e,h=setTimeout(x,o),g?m(e):d}(f);if(v)return clearTimeout(h),h=setTimeout(x,o),m(f)}return void 0===h&&(h=setTimeout(x,o)),d}return o=n(o)||0,e(s)&&(g=!!s.leading,c=(v="maxWait"in s)?r(n(s.maxWait)||0,o):c,y="trailing"in s?!!s.trailing:y),E.cancel=function(){void 0!==h&&clearTimeout(h),p=0,l=f=u=h=void 0},E.flush=function(){return void 0===h?d:w(t())},E}}()),Me=f?f.performance:null,Re=Me&&Me.now?function(){return Me.now()}:function(){return Date.now()},Ie=function(){if(f){if(f.requestAnimationFrame)return function(e){f.requestAnimationFrame(e)};if(f.mozRequestAnimationFrame)return function(e){f.mozRequestAnimationFrame(e)};if(f.webkitRequestAnimationFrame)return function(e){f.webkitRequestAnimationFrame(e)};if(f.msRequestAnimationFrame)return function(e){f.msRequestAnimationFrame(e)}}return function(e){e&&setTimeout(function(){e(Re())},1e3/60)}}(),Ne=function(e){return Ie(e)},Le=Re,ze=9261,Oe=5381,Ve=function(e){for(var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ze;!(t=e.next()).done;)n=65599*n+t.value|0;return n},Fe=function(e){return 65599*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:ze)+e|0},je=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Oe;return(t<<5)+t+e|0},Xe=function(e){return 2097152*e[0]+e[1]},qe=function(e,t){return[Fe(e[0],t[0]),je(e[1],t[1])]},Ye=function(e,t){var n={value:0,done:!1},r=0,a=e.length;return Ve({next:function(){return r<a?n.value=e[r++]:n.done=!0,n}},t)},We=function(e,t){var n={value:0,done:!1},r=0,a=e.length;return Ve({next:function(){return r<a?n.value=e.charCodeAt(r++):n.done=!0,n}},t)},Ue=function(){return He(arguments)},He=function(e){for(var t,n=0;n<e.length;n++){var r=e[n];t=0===n?We(r):We(r,t)}return t},Ke=!0,Ge=null!=console.warn,Ze=null!=console.trace,$e=Number.MAX_SAFE_INTEGER||9007199254740991,Qe=function(){return!0},Je=function(){return!1},et=function(){return 0},tt=function(){},nt=function(e){throw new Error(e)},rt=function(e){if(void 0===e)return Ke;Ke=!!e},at=function(e){rt()&&(Ge?console.warn(e):(console.log(e),Ze&&console.trace()))},it=function(e){return null==e?e:Z(e)?e.slice():$(e)?function(e){return me({},e)}(e):e},ot=function(e,t){for(t=e="";e++<36;t+=51*e&52?(15^e?8^Math.random()*(20^e?16:4):4).toString(16):"-");return t},st={},lt=function(){return st},ut=function(e){var t=Object.keys(e);return function(n){for(var r={},a=0;a<t.length;a++){var i=t[a],o=null==n?void 0:n[i];r[i]=void 0===o?e[i]:o}return r}},ct=function(e,t,n){for(var r=e.length-1;r>=0;r--)e[r]===t&&e.splice(r,1)},dt=function(e){e.splice(0,e.length)},ht=function(e,t,n){return n&&(t=ce(n,t)),e[t]},ft=function(e,t,n,r){n&&(t=ce(n,t)),e[t]=r},pt="undefined"!=typeof Map?Map:function(){return i(function e(){a(this,e),this._obj={}},[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}])}(),gt=function(){return i(function e(t){if(a(this,e),this._obj=Object.create(null),this.size=0,null!=t){var n;n=null!=t.instanceString&&t.instanceString()===this.instanceString()?t.toArray():t;for(var r=0;r<n.length;r++)this.add(n[r])}},[{key:"instanceString",value:function(){return"set"}},{key:"add",value:function(e){var t=this._obj;1!==t[e]&&(t[e]=1,this.size++)}},{key:"delete",value:function(e){var t=this._obj;1===t[e]&&(t[e]=0,this.size--)}},{key:"clear",value:function(){this._obj=Object.create(null)}},{key:"has",value:function(e){return 1===this._obj[e]}},{key:"toArray",value:function(){var e=this;return Object.keys(this._obj).filter(function(t){return e.has(t)})}},{key:"forEach",value:function(e,t){return this.toArray().forEach(e,t)}}])}(),vt="undefined"!==("undefined"==typeof Set?"undefined":d(Set))?Set:gt,yt=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&re(e)){var r=t.group;if(null==r&&(r=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===r||"edges"===r){this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:r,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===r:!!t.pannable,active:!1,classes:new vt,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:t.parent&&t.parent.isNode()?t.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==a.position.x&&(a.position.x=0),null==a.position.y&&(a.position.y=0),t.renderedPosition){var i=t.renderedPosition,o=e.pan(),s=e.zoom();a.position={x:(i.x-o.x)/s,y:(i.y-o.y)/s}}var l=[];Z(t.classes)?l=t.classes:K(t.classes)&&(l=t.classes.split(/\s+/));for(var u=0,c=l.length;u<c;u++){var d=l[u];d&&""!==d&&a.classes.add(d)}this.createEmitter(),(void 0===n||n)&&this.restore();var h=t.style||t.css;h&&(at("Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead."),this.style(h))}else nt("An element must be of type `nodes` or `edges`; you specified `"+r+"`")}else nt("An element must have a core reference and parameters set")},mt=function(e){return e={bfs:e.bfs||!e.dfs,dfs:e.dfs||!e.bfs},function(t,n,r){var a;$(t)&&!ee(t)&&(t=(a=t).roots||a.root,n=a.visit,r=a.directed),r=2!==arguments.length||G(n)?r:n,n=G(n)?n:function(){};for(var i,o=this._private.cy,s=t=K(t)?this.filter(t):t,l=[],u=[],c={},d={},h={},f=0,p=this.byGroup(),g=p.nodes,v=p.edges,y=0;y<s.length;y++){var m=s[y],b=m.id();m.isNode()&&(l.unshift(m),e.bfs&&(h[b]=!0,u.push(m)),d[b]=0)}for(var x,w=function(){var t=e.bfs?l.shift():l.pop(),a=t.id();if(e.dfs){if(h[a])return 0;h[a]=!0,u.push(t)}var o,s=d[a],p=c[a],y=null!=p?p.source():null,m=null!=p?p.target():null,b=null==p?void 0:t.same(y)?m[0]:y[0];if(!0===(o=n(t,p,b,f++,s)))return i=t,1;if(!1===o)return 1;for(var x=t.connectedEdges().filter(function(e){return(!r||e.source().same(t))&&v.has(e)}),w=0;w<x.length;w++){var E=x[w],k=E.connectedNodes().filter(function(e){return!e.same(t)&&g.has(e)}),T=k.id();0===k.length||h[T]||(k=k[0],l.push(k),e.bfs&&(h[T]=!0,u.push(k)),c[T]=E,d[T]=d[a]+1)}};0!==l.length&&(0===(x=w())||1!==x););for(var E=o.collection(),k=0;k<u.length;k++){var T=u[k],C=c[T.id()];null!=C&&E.push(C),E.push(T)}return{path:o.collection(E),found:o.collection(i)}}},bt={breadthFirstSearch:mt({bfs:!0}),depthFirstSearch:mt({dfs:!0})};bt.bfs=bt.breadthFirstSearch,bt.dfs=bt.depthFirstSearch;var xt,wt,Et,kt={exports:{}},Tt=kt.exports;function Ct(){return xt||(xt=1,e=kt,function(){var t,n,r,a,i,o,s,l,u,c,d,h,f,p,g;r=Math.floor,c=Math.min,n=function(e,t){return e<t?-1:e>t?1:0},u=function(e,t,a,i,o){var s;if(null==a&&(a=0),null==o&&(o=n),a<0)throw new Error("lo must be non-negative");for(null==i&&(i=e.length);a<i;)o(t,e[s=r((a+i)/2)])<0?i=s:a=s+1;return[].splice.apply(e,[a,a-a].concat(t)),t},o=function(e,t,r){return null==r&&(r=n),e.push(t),p(e,0,e.length-1,r)},i=function(e,t){var r,a;return null==t&&(t=n),r=e.pop(),e.length?(a=e[0],e[0]=r,g(e,0,t)):a=r,a},l=function(e,t,r){var a;return null==r&&(r=n),a=e[0],e[0]=t,g(e,0,r),a},s=function(e,t,r){var a;return null==r&&(r=n),e.length&&r(e[0],t)<0&&(t=(a=[e[0],t])[0],e[0]=a[1],g(e,0,r)),t},a=function(e,t){var a,i,o,s,l,u;for(null==t&&(t=n),l=[],i=0,o=(s=function(){u=[];for(var t=0,n=r(e.length/2);0<=n?t<n:t>n;0<=n?t++:t--)u.push(t);return u}.apply(this).reverse()).length;i<o;i++)a=s[i],l.push(g(e,a,t));return l},f=function(e,t,r){var a;if(null==r&&(r=n),-1!==(a=e.indexOf(t)))return p(e,0,a,r),g(e,a,r)},d=function(e,t,r){var i,o,l,u,c;if(null==r&&(r=n),!(o=e.slice(0,t)).length)return o;for(a(o,r),l=0,u=(c=e.slice(t)).length;l<u;l++)i=c[l],s(o,i,r);return o.sort(r).reverse()},h=function(e,t,r){var o,s,l,d,h,f,p,g,v;if(null==r&&(r=n),10*t<=e.length){if(!(l=e.slice(0,t).sort(r)).length)return l;for(s=l[l.length-1],d=0,f=(p=e.slice(t)).length;d<f;d++)r(o=p[d],s)<0&&(u(l,o,0,null,r),l.pop(),s=l[l.length-1]);return l}for(a(e,r),v=[],h=0,g=c(t,e.length);0<=g?h<g:h>g;0<=g?++h:--h)v.push(i(e,r));return v},p=function(e,t,r,a){var i,o,s;for(null==a&&(a=n),i=e[r];r>t&&a(i,o=e[s=r-1>>1])<0;)e[r]=o,r=s;return e[r]=i},g=function(e,t,r){var a,i,o,s,l;for(null==r&&(r=n),i=e.length,l=t,o=e[t],a=2*t+1;a<i;)(s=a+1)<i&&!(r(e[a],e[s])<0)&&(a=s),e[t]=e[a],a=2*(t=a)+1;return e[t]=o,p(e,l,t,r)},t=function(){function e(e){this.cmp=null!=e?e:n,this.nodes=[]}return e.push=o,e.pop=i,e.replace=l,e.pushpop=s,e.heapify=a,e.updateItem=f,e.nlargest=d,e.nsmallest=h,e.prototype.push=function(e){return o(this.nodes,e,this.cmp)},e.prototype.pop=function(){return i(this.nodes,this.cmp)},e.prototype.peek=function(){return this.nodes[0]},e.prototype.contains=function(e){return-1!==this.nodes.indexOf(e)},e.prototype.replace=function(e){return l(this.nodes,e,this.cmp)},e.prototype.pushpop=function(e){return s(this.nodes,e,this.cmp)},e.prototype.heapify=function(){return a(this.nodes,this.cmp)},e.prototype.updateItem=function(e){return f(this.nodes,e,this.cmp)},e.prototype.clear=function(){return this.nodes=[]},e.prototype.empty=function(){return 0===this.nodes.length},e.prototype.size=function(){return this.nodes.length},e.prototype.clone=function(){var t;return(t=new e).nodes=this.nodes.slice(0),t},e.prototype.toArray=function(){return this.nodes.slice(0)},e.prototype.insert=e.prototype.push,e.prototype.top=e.prototype.peek,e.prototype.front=e.prototype.peek,e.prototype.has=e.prototype.contains,e.prototype.copy=e.prototype.clone,e}(),e.exports=t}.call(Tt)),kt.exports;var e}var Pt=Te(Et?wt:(Et=1,wt=Ct())),St=ut({root:null,weight:function(e){return 1},directed:!1}),Bt={dijkstra:function(e){if(!$(e)){var t=arguments;e={root:t[0],weight:t[1],directed:t[2]}}var n=St(e),r=n.root,a=n.weight,i=n.directed,o=this,s=a,l=K(r)?this.filter(r)[0]:r[0],u={},c={},d={},h=this.byGroup(),f=h.nodes,p=h.edges;p.unmergeBy(function(e){return e.isLoop()});for(var g=function(e){return u[e.id()]},v=function(e,t){u[e.id()]=t,y.updateItem(e)},y=new Pt(function(e,t){return g(e)-g(t)}),m=0;m<f.length;m++){var b=f[m];u[b.id()]=b.same(l)?0:1/0,y.push(b)}for(var x=function(e,t){for(var n,r=(i?e.edgesTo(t):e.edgesWith(t)).intersect(p),a=1/0,o=0;o<r.length;o++){var l=r[o],u=s(l);(u<a||!n)&&(a=u,n=l)}return{edge:n,dist:a}};y.size()>0;){var w=y.pop(),E=g(w),k=w.id();if(d[k]=E,E!==1/0)for(var T=w.neighborhood().intersect(f),C=0;C<T.length;C++){var P=T[C],S=P.id(),B=x(w,P),D=E+B.dist;D<g(P)&&(v(P,D),c[S]={node:w,edge:B.edge})}}return{distanceTo:function(e){var t=K(e)?f.filter(e)[0]:e[0];return d[t.id()]},pathTo:function(e){var t=K(e)?f.filter(e)[0]:e[0],n=[],r=t,a=r.id();if(t.length>0)for(n.unshift(t);c[a];){var i=c[a];n.unshift(i.edge),n.unshift(i.node),a=(r=i.node).id()}return o.spawn(n)}}}},Dt={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),n=t.nodes,r=t.edges,a=n.length,i=new Array(a),o=n,s=function(e){for(var t=0;t<i.length;t++){if(i[t].has(e))return t}},l=0;l<a;l++)i[l]=this.spawn(n[l]);for(var u=r.sort(function(t,n){return e(t)-e(n)}),c=0;c<u.length;c++){var d=u[c],h=d.source()[0],f=d.target()[0],p=s(h),g=s(f),v=i[p],y=i[g];p!==g&&(o.merge(d),v.merge(y),i.splice(g,1))}return o}},_t=ut({root:null,goal:null,weight:function(e){return 1},heuristic:function(e){return 0},directed:!1}),At={aStar:function(e){var t=this.cy(),n=_t(e),r=n.root,a=n.goal,i=n.heuristic,o=n.directed,s=n.weight;r=t.collection(r)[0],a=t.collection(a)[0];var l,u,c=r.id(),d=a.id(),h={},f={},p={},g=new Pt(function(e,t){return f[e.id()]-f[t.id()]}),v=new vt,y={},m={},b=function(e,t){g.push(e),v.add(t)},x=function(){l=g.pop(),u=l.id(),v.delete(u)},w=function(e){return v.has(e)};b(r,c),h[c]=0,f[c]=i(r);for(var E=0;g.size()>0;){if(x(),E++,u===d){for(var k=[],T=a,C=d,P=m[C];k.unshift(T),null!=P&&k.unshift(P),null!=(T=y[C]);)P=m[C=T.id()];return{found:!0,distance:h[u],path:this.spawn(k),steps:E}}p[u]=!0;for(var S=l._private.edges,B=0;B<S.length;B++){var D=S[B];if(this.hasElementWithId(D.id())&&(!o||D.data("source")===u)){var _=D.source(),A=D.target(),M=_.id()!==u?_:A,R=M.id();if(this.hasElementWithId(R)&&!p[R]){var I=h[u]+s(D);w(R)?I<h[R]&&(h[R]=I,f[R]=I+i(M),y[R]=l,m[R]=D):(h[R]=I,f[R]=I+i(M),b(M,R),y[R]=l,m[R]=D)}}}}return{found:!1,distance:void 0,path:void 0,steps:E}}},Mt=ut({weight:function(e){return 1},directed:!1}),Rt={floydWarshall:function(e){for(var t=this.cy(),n=Mt(e),r=n.weight,a=n.directed,i=r,o=this.byGroup(),s=o.nodes,l=o.edges,u=s.length,c=u*u,d=function(e){return s.indexOf(e)},h=function(e){return s[e]},f=new Array(c),p=0;p<c;p++){var g=p%u,v=(p-g)/u;f[p]=v===g?0:1/0}for(var y=new Array(c),m=new Array(c),b=0;b<l.length;b++){var x=l[b],w=x.source()[0],E=x.target()[0];if(w!==E){var k=d(w),T=d(E),C=k*u+T,P=i(x);if(f[C]>P&&(f[C]=P,y[C]=T,m[C]=x),!a){var S=T*u+k;!a&&f[S]>P&&(f[S]=P,y[S]=k,m[S]=x)}}}for(var B=0;B<u;B++)for(var D=0;D<u;D++)for(var _=D*u+B,A=0;A<u;A++){var M=D*u+A,R=B*u+A;f[_]+f[R]<f[M]&&(f[M]=f[_]+f[R],y[M]=y[_])}var I=function(e){return d(function(e){return(K(e)?t.filter(e):e)[0]}(e))},N={distance:function(e,t){var n=I(e),r=I(t);return f[n*u+r]},path:function(e,n){var r=I(e),a=I(n),i=h(r);if(r===a)return i.collection();if(null==y[r*u+a])return t.collection();var o,s=t.collection(),l=r;for(s.merge(i);r!==a;)l=r,r=y[r*u+a],o=m[l*u+r],s.merge(o),s.merge(h(r));return s}};return N}},It=ut({weight:function(e){return 1},directed:!1,root:null}),Nt={bellmanFord:function(e){var t=this,n=It(e),r=n.weight,a=n.directed,i=n.root,o=r,s=this,l=this.cy(),u=this.byGroup(),c=u.edges,d=u.nodes,h=d.length,f=new pt,p=!1,g=[];i=l.collection(i)[0],c.unmergeBy(function(e){return e.isLoop()});for(var v=c.length,y=function(e){var t=f.get(e.id());return t||(t={},f.set(e.id(),t)),t},m=function(e){return(K(e)?l.$(e):e)[0]},b=0;b<h;b++){var x=d[b],w=y(x);x.same(i)?w.dist=0:w.dist=1/0,w.pred=null,w.edge=null}for(var E=!1,k=function(e,t,n,r,a,i){var o=r.dist+i;o<a.dist&&!n.same(r.edge)&&(a.dist=o,a.pred=e,a.edge=n,E=!0)},T=1;T<h;T++){E=!1;for(var C=0;C<v;C++){var P=c[C],S=P.source(),B=P.target(),D=o(P),_=y(S),A=y(B);k(S,0,P,_,A,D),a||k(B,0,P,A,_,D)}if(!E)break}if(E)for(var M=[],R=0;R<v;R++){var I=c[R],N=I.source(),L=I.target(),z=o(I),O=y(N).dist,V=y(L).dist;if(O+z<V||!a&&V+z<O){if(p||(at("Graph contains a negative weight cycle for Bellman-Ford"),p=!0),!1===e.findNegativeWeightCycles)break;var F=[];O+z<V&&F.push(N),!a&&V+z<O&&F.push(L);for(var j=F.length,X=0;X<j;X++){var q=F[X],Y=[q];Y.push(y(q).edge);for(var W=y(q).pred;-1===Y.indexOf(W);)Y.push(W),Y.push(y(W).edge),W=y(W).pred;for(var U=(Y=Y.slice(Y.indexOf(W)))[0].id(),H=0,G=2;G<Y.length;G+=2)Y[G].id()<U&&(U=Y[G].id(),H=G);(Y=Y.slice(H).concat(Y.slice(0,H))).push(Y[0]);var Z=Y.map(function(e){return e.id()}).join(",");-1===M.indexOf(Z)&&(g.push(s.spawn(Y)),M.push(Z))}}}return{distanceTo:function(e){return y(m(e)).dist},pathTo:function(e){for(var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i,r=[],a=m(e);;){if(null==a)return t.spawn();var o=y(a),l=o.edge,u=o.pred;if(r.unshift(a[0]),a.same(n)&&r.length>0)break;null!=l&&r.unshift(l),a=u}return s.spawn(r)},hasNegativeWeightCycle:p,negativeWeightCycles:g}}},Lt=Math.sqrt(2),zt=function(e,t,n){0===n.length&&nt("Karger-Stein must be run on a connected (sub)graph");for(var r=n[e],a=r[1],i=r[2],o=t[a],s=t[i],l=n,u=l.length-1;u>=0;u--){var c=l[u],d=c[1],h=c[2];(t[d]===o&&t[h]===s||t[d]===s&&t[h]===o)&&l.splice(u,1)}for(var f=0;f<l.length;f++){var p=l[f];p[1]===s?(l[f]=p.slice(),l[f][1]=o):p[2]===s&&(l[f]=p.slice(),l[f][2]=o)}for(var g=0;g<t.length;g++)t[g]===s&&(t[g]=o);return l},Ot=function(e,t,n,r){for(;n>r;){var a=Math.floor(Math.random()*t.length);t=zt(a,e,t),n--}return t},Vt={kargerStein:function(){var e=this,t=this.byGroup(),n=t.nodes,r=t.edges;r.unmergeBy(function(e){return e.isLoop()});var a=n.length,i=r.length,o=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),s=Math.floor(a/Lt);if(!(a<2)){for(var l=[],u=0;u<i;u++){var c=r[u];l.push([u,n.indexOf(c.source()),n.indexOf(c.target())])}for(var d=1/0,h=[],f=new Array(a),p=new Array(a),g=new Array(a),v=function(e,t){for(var n=0;n<a;n++)t[n]=e[n]},y=0;y<=o;y++){for(var m=0;m<a;m++)p[m]=m;var b=Ot(p,l.slice(),a,s),x=b.slice();v(p,g);var w=Ot(p,b,s,2),E=Ot(g,x,s,2);w.length<=E.length&&w.length<d?(d=w.length,h=w,v(p,f)):E.length<=w.length&&E.length<d&&(d=E.length,h=E,v(g,f))}for(var k=this.spawn(h.map(function(e){return r[e[0]]})),T=this.spawn(),C=this.spawn(),P=f[0],S=0;S<f.length;S++){var B=f[S],D=n[S];B===P?T.merge(D):C.merge(D)}var _=function(t){var n=e.spawn();return t.forEach(function(t){n.merge(t),t.connectedEdges().forEach(function(t){e.contains(t)&&!k.contains(t)&&n.merge(t)})}),n},A=[_(T),_(C)];return{cut:k,components:A,partition1:T,partition2:C}}nt("At least 2 nodes are required for Karger-Stein algorithm")}},Ft=function(e,t,n){return{x:e.x*t+n.x,y:e.y*t+n.y}},jt=function(e,t,n){return{x:(e.x-n.x)/t,y:(e.y-n.y)/t}},Xt=function(e){return{x:e[0],y:e[1]}},qt=function(e,t){return Math.atan2(t,e)-Math.PI/2},Yt=Math.log2||function(e){return Math.log(e)/Math.log(2)},Wt=function(e){return e>0?1:e<0?-1:0},Ut=function(e,t){return Math.sqrt(Ht(e,t))},Ht=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},Kt=function(e){for(var t=e.length,n=0,r=0;r<t;r++)n+=e[r];for(var a=0;a<t;a++)e[a]=e[a]/n;return e},Gt=function(e,t,n,r){return(1-r)*(1-r)*e+2*(1-r)*r*t+r*r*n},Zt=function(e,t,n,r){return{x:Gt(e.x,t.x,n.x,r),y:Gt(e.y,t.y,n.y,r)}},$t=function(e,t,n){return Math.max(e,Math.min(n,t))},Qt=function(e){if(null==e)return{x1:1/0,y1:1/0,x2:-1/0,y2:-1/0,w:0,h:0};if(null!=e.x1&&null!=e.y1){if(null!=e.x2&&null!=e.y2&&e.x2>=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},Jt=function(e,t){e.x1=Math.min(e.x1,t.x1),e.x2=Math.max(e.x2,t.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,t.y1),e.y2=Math.max(e.y2,t.y2),e.h=e.y2-e.y1},en=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},tn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},nn=function(e){var t,n,r,a,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===i.length)t=n=r=a=i[0];else if(2===i.length)t=r=i[0],a=n=i[1];else if(4===i.length){var o=l(i,4);t=o[0],n=o[1],r=o[2],a=o[3]}return e.x1-=a,e.x2+=n,e.y1-=t,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},rn=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},an=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2<t.x1)&&(!(t.x2<e.x1)&&(!(e.y2<t.y1)&&(!(t.y2<e.y1)&&(!(e.y1>t.y2)&&!(t.y1>e.y2)))))))},on=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},sn=function(e,t){return on(e,t.x,t.y)},ln=function(e,t){return on(e,t.x1,t.y1)&&on(e,t.x2,t.y2)},un=function(e,t,n,r,a,i,o){var s,l,u=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"auto",c="auto"===u?Sn(a,i):u,d=a/2,h=i/2,f=(c=Math.min(c,d,h))!==d,p=c!==h;if(f){var g=r-h-o;if((s=wn(e,t,n,r,n-d+c-o,g,n+d-c+o,g,!1)).length>0)return s}if(p){var v=n+d+o;if((s=wn(e,t,n,r,v,r-h+c-o,v,r+h-c+o,!1)).length>0)return s}if(f){var y=r+h+o;if((s=wn(e,t,n,r,n-d+c-o,y,n+d-c+o,y,!1)).length>0)return s}if(p){var m=n-d-o;if((s=wn(e,t,n,r,m,r-h+c-o,m,r+h-c+o,!1)).length>0)return s}var b=n-d+c,x=r-h+c;if((l=bn(e,t,n,r,b,x,c+o)).length>0&&l[0]<=b&&l[1]<=x)return[l[0],l[1]];var w=n+d-c,E=r-h+c;if((l=bn(e,t,n,r,w,E,c+o)).length>0&&l[0]>=w&&l[1]<=E)return[l[0],l[1]];var k=n+d-c,T=r+h-c;if((l=bn(e,t,n,r,k,T,c+o)).length>0&&l[0]>=k&&l[1]>=T)return[l[0],l[1]];var C=n-d+c,P=r+h-c;return(l=bn(e,t,n,r,C,P,c+o)).length>0&&l[0]<=C&&l[1]>=P?[l[0],l[1]]:[]},cn=function(e,t,n,r,a,i,o){var s=o,l=Math.min(n,a),u=Math.max(n,a),c=Math.min(r,i),d=Math.max(r,i);return l-s<=e&&e<=u+s&&c-s<=t&&t<=d+s},dn=function(e,t,n,r,a,i,o,s,l){var u=Math.min(n,o,a)-l,c=Math.max(n,o,a)+l,d=Math.min(r,s,i)-l,h=Math.max(r,s,i)+l;return!(e<u||e>c||t<d||t>h)},hn=function(e,t,n,r,a,i,o,s){var l=[];!function(e,t,n,r,a){var i,o,s,l,u,c,d,h;0===e&&(e=1e-5),s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),i=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,a[1]=0,d=t/3,i>0?(u=(u=s+Math.sqrt(i))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),c=(c=s-Math.sqrt(i))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),a[0]=-d+u+c,d+=(u+c)/2,a[4]=a[2]=-d,d=Math.sqrt(3)*(-c+u)/2,a[3]=d,a[5]=-d):(a[5]=a[3]=0,0===i?(h=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),a[0]=2*h-d,a[4]=a[2]=-(h+d)):(l=(o=-o)*o*o,l=Math.acos(s/Math.sqrt(l)),h=2*Math.sqrt(o),a[0]=-d+h*Math.cos(l/3),a[2]=-d+h*Math.cos((l+2*Math.PI)/3),a[4]=-d+h*Math.cos((l+4*Math.PI)/3)))}(1*n*n-4*n*a+2*n*o+4*a*a-4*a*o+o*o+r*r-4*r*i+2*r*s+4*i*i-4*i*s+s*s,9*n*a-3*n*n-3*n*o-6*a*a+3*a*o+9*r*i-3*r*r-3*r*s-6*i*i+3*i*s,3*n*n-6*n*a+n*o-n*e+2*a*a+2*a*e-o*e+3*r*r-6*r*i+r*s-r*t+2*i*i+2*i*t-s*t,1*n*a-n*n+n*e-a*e+r*i-r*r+r*t-i*t,l);for(var u=[],c=0;c<6;c+=2)Math.abs(l[c+1])<1e-7&&l[c]>=0&&l[c]<=1&&u.push(l[c]);u.push(1),u.push(0);for(var d,h,f,p=-1,g=0;g<u.length;g++)d=Math.pow(1-u[g],2)*n+2*(1-u[g])*u[g]*a+u[g]*u[g]*o,h=Math.pow(1-u[g],2)*r+2*(1-u[g])*u[g]*i+u[g]*u[g]*s,f=Math.pow(d-e,2)+Math.pow(h-t,2),p>=0?f<p&&(p=f):p=f;return p},fn=function(e,t,n,r,a,i){var o=[e-n,t-r],s=[a-n,i-r],l=s[0]*s[0]+s[1]*s[1],u=o[0]*o[0]+o[1]*o[1],c=o[0]*s[0]+o[1]*s[1],d=c*c/l;return c<0?u:d>l?(e-a)*(e-a)+(t-i)*(t-i):u-d},pn=function(e,t,n){for(var r,a,i,o,s=0,l=0;l<n.length/2;l++)if(r=n[2*l],a=n[2*l+1],l+1<n.length/2?(i=n[2*(l+1)],o=n[2*(l+1)+1]):(i=n[2*(l+1-n.length/2)],o=n[2*(l+1-n.length/2)+1]),r==e&&i==e);else{if(!(r>=e&&e>=i||r<=e&&e<=i))continue;(e-r)/(i-r)*(o-a)+a>t&&s++}return s%2!=0},gn=function(e,t,n,r,a,i,o,s,l){var u,c=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var d,h=Math.cos(-u),f=Math.sin(-u),p=0;p<c.length/2;p++)c[2*p]=i/2*(n[2*p]*h-n[2*p+1]*f),c[2*p+1]=o/2*(n[2*p+1]*h+n[2*p]*f),c[2*p]+=r,c[2*p+1]+=a;if(l>0){var g=yn(c,-l);d=vn(g)}else d=c;return pn(e,t,d)},vn=function(e){for(var t,n,r,a,i,o,s,l,u=new Array(e.length/2),c=0;c<e.length/4;c++){t=e[4*c],n=e[4*c+1],r=e[4*c+2],a=e[4*c+3],c<e.length/4-1?(i=e[4*(c+1)],o=e[4*(c+1)+1],s=e[4*(c+1)+2],l=e[4*(c+1)+3]):(i=e[0],o=e[1],s=e[2],l=e[3]);var d=wn(t,n,r,a,i,o,s,l,!0);u[2*c]=d[0],u[2*c+1]=d[1]}return u},yn=function(e,t){for(var n,r,a,i,o=new Array(2*e.length),s=0;s<e.length/2;s++){n=e[2*s],r=e[2*s+1],s<e.length/2-1?(a=e[2*(s+1)],i=e[2*(s+1)+1]):(a=e[0],i=e[1]);var l=i-r,u=-(a-n),c=Math.sqrt(l*l+u*u),d=l/c,h=u/c;o[4*s]=n+d*t,o[4*s+1]=r+h*t,o[4*s+2]=a+d*t,o[4*s+3]=i+h*t}return o},mn=function(e,t,n,r,a,i,o){return e-=a,t-=i,(e/=n/2+o)*e+(t/=r/2+o)*t<=1},bn=function(e,t,n,r,a,i,o){var s=[n-e,r-t],l=[e-a,t-i],u=s[0]*s[0]+s[1]*s[1],c=2*(l[0]*s[0]+l[1]*s[1]),d=c*c-4*u*(l[0]*l[0]+l[1]*l[1]-o*o);if(d<0)return[];var h=(-c+Math.sqrt(d))/(2*u),f=(-c-Math.sqrt(d))/(2*u),p=Math.min(h,f),g=Math.max(h,f),v=[];if(p>=0&&p<=1&&v.push(p),g>=0&&g<=1&&v.push(g),0===v.length)return[];var y=v[0]*s[0]+e,m=v[0]*s[1]+t;return v.length>1?v[0]==v[1]?[y,m]:[y,m,v[1]*s[0]+e,v[1]*s[1]+t]:[y,m]},xn=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},wn=function(e,t,n,r,a,i,o,s,l){var u=e-a,c=n-e,d=o-a,h=t-i,f=r-t,p=s-i,g=d*h-p*u,v=c*h-f*u,y=p*c-d*f;if(0!==y){var m=g/y,b=v/y,x=-.001;return x<=m&&m<=1.001&&x<=b&&b<=1.001||l?[e+m*c,t+m*f]:[]}return 0===g||0===v?xn(e,n,o)===o?[o,s]:xn(e,n,a)===a?[a,i]:xn(a,o,n)===n?[n,r]:[]:[]},En=function(e,t,n,r,a,i,o,s){var l,u,c,d,h,f,p=[],g=new Array(n.length),v=!0;if(null==i&&(v=!1),v){for(var y=0;y<g.length/2;y++)g[2*y]=n[2*y]*i+r,g[2*y+1]=n[2*y+1]*o+a;if(s>0){var m=yn(g,-s);u=vn(m)}else u=g}else u=n;for(var b=0;b<u.length/2;b++)c=u[2*b],d=u[2*b+1],b<u.length/2-1?(h=u[2*(b+1)],f=u[2*(b+1)+1]):(h=u[0],f=u[1]),0!==(l=wn(e,t,r,a,c,d,h,f)).length&&p.push(l[0],l[1]);return p},kn=function(e,t,n){var r=[e[0]-t[0],e[1]-t[1]],a=Math.sqrt(r[0]*r[0]+r[1]*r[1]),i=(a-n)/a;return i<0&&(i=1e-5),[t[0]+i*r[0],t[1]+i*r[1]]},Tn=function(e,t){var n=Pn(e,t);return n=Cn(n)},Cn=function(e){for(var t,n,r=e.length/2,a=1/0,i=1/0,o=-1/0,s=-1/0,l=0;l<r;l++)t=e[2*l],n=e[2*l+1],a=Math.min(a,t),o=Math.max(o,t),i=Math.min(i,n),s=Math.max(s,n);for(var u=2/(o-a),c=2/(s-i),d=0;d<r;d++)t=e[2*d]=e[2*d]*u,n=e[2*d+1]=e[2*d+1]*c,a=Math.min(a,t),o=Math.max(o,t),i=Math.min(i,n),s=Math.max(s,n);if(i<-1)for(var h=0;h<r;h++)n=e[2*h+1]=e[2*h+1]+(-1-i);return e},Pn=function(e,t){var n=1/e*2*Math.PI,r=e%2==0?Math.PI/2+n/2:Math.PI/2;r+=t;for(var a,i=new Array(2*e),o=0;o<e;o++)a=o*n+r,i[2*o]=Math.cos(a),i[2*o+1]=Math.sin(-a);return i},Sn=function(e,t){return Math.min(e/4,t/4,8)},Bn=function(e,t){return Math.min(e/10,t/10,8)},Dn=function(e,t){return{heightOffset:Math.min(15,.05*t),widthOffset:Math.min(100,.25*e),ctrlPtOffsetPct:.05}};function _n(e,t){function n(e){for(var t=[],n=0;n<e.length;n++){var r=e[n],a=e[(n+1)%e.length],i={x:a.x-r.x,y:a.y-r.y},o={x:-i.y,y:i.x},s=Math.sqrt(o.x*o.x+o.y*o.y);t.push({x:o.x/s,y:o.y/s})}return t}function r(e,t){var n,r=1/0,a=-1/0,i=o(e);try{for(i.s();!(n=i.n()).done;){var s=n.value,l=s.x*t.x+s.y*t.y;r=Math.min(r,l),a=Math.max(a,l)}}catch(u){i.e(u)}finally{i.f()}return{min:r,max:a}}function a(e,t){return!(e.max<t.min||t.max<e.min)}var i,s=o([].concat(u(n(e)),u(n(t))));try{for(s.s();!(i=s.n()).done;){var l=i.value;if(!a(r(e,l),r(t,l)))return!1}}catch(c){s.e(c)}finally{s.f()}return!0}var An=ut({dampingFactor:.8,precision:1e-6,iterations:200,weight:function(e){return 1}}),Mn={pageRank:function(e){for(var t=An(e),n=t.dampingFactor,r=t.precision,a=t.iterations,i=t.weight,o=this._private.cy,s=this.byGroup(),l=s.nodes,u=s.edges,c=l.length,d=c*c,h=u.length,f=new Array(d),p=new Array(c),g=(1-n)/c,v=0;v<c;v++){for(var y=0;y<c;y++){f[v*c+y]=0}p[v]=0}for(var m=0;m<h;m++){var b=u[m],x=b.data("source"),w=b.data("target");if(x!==w){var E=l.indexOfId(x),k=l.indexOfId(w),T=i(b);f[k*c+E]+=T,p[E]+=T}}for(var C=1/c+g,P=0;P<c;P++)if(0===p[P])for(var S=0;S<c;S++){f[S*c+P]=C}else for(var B=0;B<c;B++){var D=B*c+P;f[D]=f[D]/p[P]+g}for(var _,A=new Array(c),M=new Array(c),R=0;R<c;R++)A[R]=1;for(var I=0;I<a;I++){for(var N=0;N<c;N++)M[N]=0;for(var L=0;L<c;L++)for(var z=0;z<c;z++){var O=L*c+z;M[L]+=f[O]*A[z]}Kt(M),_=A,A=M,M=_;for(var V=0,F=0;F<c;F++){var j=_[F]-A[F];V+=j*j}if(V<r)break}return{rank:function(e){return e=o.collection(e)[0],A[l.indexOf(e)]}}}},Rn=ut({root:null,weight:function(e){return 1},directed:!1,alpha:0}),In={degreeCentralityNormalized:function(e){e=Rn(e);var t=this.cy(),n=this.nodes(),r=n.length;if(e.directed){for(var a={},i={},o=0,s=0,l=0;l<r;l++){var u=n[l],c=u.id();e.root=u;var d=this.degreeCentrality(e);o<d.indegree&&(o=d.indegree),s<d.outdegree&&(s=d.outdegree),a[c]=d.indegree,i[c]=d.outdegree}return{indegree:function(e){return 0==o?0:(K(e)&&(e=t.filter(e)),a[e.id()]/o)},outdegree:function(e){return 0===s?0:(K(e)&&(e=t.filter(e)),i[e.id()]/s)}}}for(var h={},f=0,p=0;p<r;p++){var g=n[p];e.root=g;var v=this.degreeCentrality(e);f<v.degree&&(f=v.degree),h[g.id()]=v.degree}return{degree:function(e){return 0===f?0:(K(e)&&(e=t.filter(e)),h[e.id()]/f)}}},degreeCentrality:function(e){e=Rn(e);var t=this.cy(),n=this,r=e,a=r.root,i=r.weight,o=r.directed,s=r.alpha;if(a=t.collection(a)[0],o){for(var l=a.connectedEdges(),u=l.filter(function(e){return e.target().same(a)&&n.has(e)}),c=l.filter(function(e){return e.source().same(a)&&n.has(e)}),d=u.length,h=c.length,f=0,p=0,g=0;g<u.length;g++)f+=i(u[g]);for(var v=0;v<c.length;v++)p+=i(c[v]);return{indegree:Math.pow(d,1-s)*Math.pow(f,s),outdegree:Math.pow(h,1-s)*Math.pow(p,s)}}for(var y=a.connectedEdges().intersection(n),m=y.length,b=0,x=0;x<y.length;x++)b+=i(y[x]);return{degree:Math.pow(m,1-s)*Math.pow(b,s)}}};In.dc=In.degreeCentrality,In.dcn=In.degreeCentralityNormalised=In.degreeCentralityNormalized;var Nn=ut({harmonic:!0,weight:function(){return 1},directed:!1,root:null}),Ln={closenessCentralityNormalized:function(e){for(var t=Nn(e),n=t.harmonic,r=t.weight,a=t.directed,i=this.cy(),o={},s=0,l=this.nodes(),u=this.floydWarshall({weight:r,directed:a}),c=0;c<l.length;c++){for(var d=0,h=l[c],f=0;f<l.length;f++)if(c!==f){var p=u.distance(h,l[f]);d+=n?1/p:p}n||(d=1/d),s<d&&(s=d),o[h.id()]=d}return{closeness:function(e){return 0==s?0:(e=K(e)?i.filter(e)[0].id():e.id(),o[e]/s)}}},closenessCentrality:function(e){var t=Nn(e),n=t.root,r=t.weight,a=t.directed,i=t.harmonic;n=this.filter(n)[0];for(var o=this.dijkstra({root:n,weight:r,directed:a}),s=0,l=this.nodes(),u=0;u<l.length;u++){var c=l[u];if(!c.same(n)){var d=o.distanceTo(c);s+=i?1/d:d}}return i?s:1/s}};Ln.cc=Ln.closenessCentrality,Ln.ccn=Ln.closenessCentralityNormalised=Ln.closenessCentralityNormalized;var zn=ut({weight:null,directed:!1}),On={betweennessCentrality:function(e){for(var t=zn(e),n=t.directed,r=t.weight,a=null!=r,i=this.cy(),o=this.nodes(),s={},l={},u=0,c=function(e,t){l[e]=t,t>u&&(u=t)},d=function(e){return l[e]},h=0;h<o.length;h++){var f=o[h],p=f.id();s[p]=n?f.outgoers().nodes():f.openNeighborhood().nodes(),c(p,0)}for(var g=function(){for(var e=o[v].id(),t=[],n={},l={},u={},h=new Pt(function(e,t){return u[e]-u[t]}),f=0;f<o.length;f++){var p=o[f].id();n[p]=[],l[p]=0,u[p]=1/0}for(l[e]=1,u[e]=0,h.push(e);!h.empty();){var g=h.pop();if(t.push(g),a)for(var y=0;y<s[g].length;y++){var m=s[g][y],b=i.getElementById(g),x=void 0;x=b.edgesTo(m).length>0?b.edgesTo(m)[0]:m.edgesTo(b)[0];var w=r(x);m=m.id(),u[m]>u[g]+w&&(u[m]=u[g]+w,h.nodes.indexOf(m)<0?h.push(m):h.updateItem(m),l[m]=0,n[m]=[]),u[m]==u[g]+w&&(l[m]=l[m]+l[g],n[m].push(g))}else for(var E=0;E<s[g].length;E++){var k=s[g][E].id();u[k]==1/0&&(h.push(k),u[k]=u[g]+1),u[k]==u[g]+1&&(l[k]=l[k]+l[g],n[k].push(g))}}for(var T={},C=0;C<o.length;C++)T[o[C].id()]=0;for(;t.length>0;){for(var P=t.pop(),S=0;S<n[P].length;S++){var B=n[P][S];T[B]=T[B]+l[B]/l[P]*(1+T[P])}P!=o[v].id()&&c(P,d(P)+T[P])}},v=0;v<o.length;v++)g();var y={betweenness:function(e){var t=i.collection(e).id();return d(t)},betweennessNormalized:function(e){if(0==u)return 0;var t=i.collection(e).id();return d(t)/u}};return y.betweennessNormalised=y.betweennessNormalized,y}};On.bc=On.betweennessCentrality;var Vn=ut({expandFactor:2,inflateFactor:2,multFactor:1,maxIterations:20,attributes:[function(e){return 1}]}),Fn=function(e,t){for(var n=0,r=0;r<t.length;r++)n+=t[r](e);return n},jn=function(e,t){for(var n,r=0;r<t;r++){n=0;for(var a=0;a<t;a++)n+=e[a*t+r];for(var i=0;i<t;i++)e[i*t+r]=e[i*t+r]/n}},Xn=function(e,t,n){for(var r=new Array(n*n),a=0;a<n;a++){for(var i=0;i<n;i++)r[a*n+i]=0;for(var o=0;o<n;o++)for(var s=0;s<n;s++)r[a*n+s]+=e[a*n+o]*t[o*n+s]}return r},qn=function(e,t,n){for(var r=e.slice(0),a=1;a<n;a++)e=Xn(e,r,t);return e},Yn=function(e,t,n){for(var r=new Array(t*t),a=0;a<t*t;a++)r[a]=Math.pow(e[a],n);return jn(r,t),r},Wn=function(e,t,n,r){for(var a=0;a<n;a++){if(Math.round(e[a]*Math.pow(10,r))/Math.pow(10,r)!==Math.round(t[a]*Math.pow(10,r))/Math.pow(10,r))return!1}return!0},Un=function(e,t){for(var n=0;n<e.length;n++)if(!t[n]||e[n].id()!==t[n].id())return!1;return!0},Hn=function(e){for(var t=this.nodes(),n=this.edges(),r=this.cy(),a=function(e){return Vn(e)}(e),i={},o=0;o<t.length;o++)i[t[o].id()]=o;for(var s,l=t.length,u=l*l,c=new Array(u),d=0;d<u;d++)c[d]=0;for(var h=0;h<n.length;h++){var f=n[h],p=i[f.source().id()],g=i[f.target().id()],v=Fn(f,a.attributes);c[p*l+g]+=v,c[g*l+p]+=v}!function(e,t,n){for(var r=0;r<t;r++)e[r*t+r]=n}(c,l,a.multFactor),jn(c,l);for(var y=!0,m=0;y&&m<a.maxIterations;)y=!1,s=qn(c,l,a.expandFactor),c=Yn(s,l,a.inflateFactor),Wn(c,s,u,4)||(y=!0),m++;var b=function(e,t,n,r){for(var a=[],i=0;i<t;i++){for(var o=[],s=0;s<t;s++)Math.round(1e3*e[i*t+s])/1e3>0&&o.push(n[s]);0!==o.length&&a.push(r.collection(o))}return a}(c,l,t,r);return b=function(e){for(var t=0;t<e.length;t++)for(var n=0;n<e.length;n++)t!=n&&Un(e[t],e[n])&&e.splice(n,1);return e}(b),b},Kn={markovClustering:Hn,mcl:Hn},Gn=function(e){return e},Zn=function(e,t){return Math.abs(t-e)},$n=function(e,t,n){return e+Zn(t,n)},Qn=function(e,t,n){return e+Math.pow(n-t,2)},Jn=function(e){return Math.sqrt(e)},er=function(e,t,n){return Math.max(e,Zn(t,n))},tr=function(e,t,n,r,a){for(var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:Gn,o=r,s=0;s<e;s++)o=a(o,t(s),n(s));return i(o)},nr={euclidean:function(e,t,n){return e>=2?tr(e,t,n,0,Qn,Jn):tr(e,t,n,0,$n)},squaredEuclidean:function(e,t,n){return tr(e,t,n,0,Qn)},manhattan:function(e,t,n){return tr(e,t,n,0,$n)},max:function(e,t,n){return tr(e,t,n,-1/0,er)}};function rr(e,t,n,r,a,i){var o;return o=G(e)?e:nr[e]||nr.euclidean,0===t&&G(e)?o(a,i):o(t,n,r,a,i)}nr["squared-euclidean"]=nr.squaredEuclidean,nr.squaredeuclidean=nr.squaredEuclidean;var ar=ut({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),ir=function(e){return ar(e)},or=function(e,t,n,r,a){var i="kMedoids"!==a?function(e){return n[e]}:function(e){return r[e](n)},o=n,s=t;return rr(e,r.length,i,function(e){return r[e](t)},o,s)},sr=function(e,t,n){for(var r=n.length,a=new Array(r),i=new Array(r),o=new Array(t),s=null,l=0;l<r;l++)a[l]=e.min(n[l]).value,i[l]=e.max(n[l]).value;for(var u=0;u<t;u++){s=[];for(var c=0;c<r;c++)s[c]=Math.random()*(i[c]-a[c])+a[c];o[u]=s}return o},lr=function(e,t,n,r,a){for(var i=1/0,o=0,s=0;s<t.length;s++){var l=or(n,e,t[s],r,a);l<i&&(i=l,o=s)}return o},ur=function(e,t,n){for(var r=[],a=null,i=0;i<t.length;i++)n[(a=t[i]).id()]===e&&r.push(a);return r},cr=function(e,t,n){return Math.abs(t-e)<=n},dr=function(e,t,n){for(var r=0;r<e.length;r++)for(var a=0;a<e[r].length;a++){if(Math.abs(e[r][a]-t[r][a])>n)return!1}return!0},hr=function(e,t,n){for(var r=0;r<n;r++)if(e===t[r])return!0;return!1},fr=function(e,t){var n=new Array(t);if(e.length<50)for(var r=0;r<t;r++){for(var a=e[Math.floor(Math.random()*e.length)];hr(a,n,r);)a=e[Math.floor(Math.random()*e.length)];n[r]=a}else for(var i=0;i<t;i++)n[i]=e[Math.floor(Math.random()*e.length)];return n},pr=function(e,t,n){for(var r=0,a=0;a<t.length;a++)r+=or("manhattan",t[a],e,n,"kMedoids");return r},gr=function(e,t,n,r,a){for(var i,o,s=0;s<t.length;s++)for(var l=0;l<e.length;l++)r[s][l]=Math.pow(n[s][l],a.m);for(var u=0;u<e.length;u++)for(var c=0;c<a.attributes.length;c++){i=0,o=0;for(var d=0;d<t.length;d++)i+=r[d][u]*a.attributes[c](t[d]),o+=r[d][u];e[u][c]=i/o}},vr=function(e,t,n,r,a){for(var i=0;i<e.length;i++)t[i]=e[i].slice();for(var o,s,l,u=2/(a.m-1),c=0;c<n.length;c++)for(var d=0;d<r.length;d++){o=0;for(var h=0;h<n.length;h++)s=or(a.distance,r[d],n[c],a.attributes,"cmeans"),l=or(a.distance,r[d],n[h],a.attributes,"cmeans"),o+=Math.pow(s/l,u);e[d][c]=1/o}},yr=function(e){var t,n,r,a,i,o=this.cy(),s=this.nodes(),l=ir(e);a=new Array(s.length);for(var u=0;u<s.length;u++)a[u]=new Array(l.k);r=new Array(s.length);for(var c=0;c<s.length;c++)r[c]=new Array(l.k);for(var d=0;d<s.length;d++){for(var h=0,f=0;f<l.k;f++)r[d][f]=Math.random(),h+=r[d][f];for(var p=0;p<l.k;p++)r[d][p]=r[d][p]/h}n=new Array(l.k);for(var g=0;g<l.k;g++)n[g]=new Array(l.attributes.length);i=new Array(s.length);for(var v=0;v<s.length;v++)i[v]=new Array(l.k);for(var y=!0,m=0;y&&m<l.maxIterations;)y=!1,gr(n,s,r,i,l),vr(r,a,n,s,l),dr(r,a,l.sensitivityThreshold)||(y=!0),m++;return t=function(e,t,n,r){for(var a,i,o=new Array(n.k),s=0;s<o.length;s++)o[s]=[];for(var l=0;l<t.length;l++){a=-1/0,i=-1;for(var u=0;u<t[0].length;u++)t[l][u]>a&&(a=t[l][u],i=u);o[i].push(e[l])}for(var c=0;c<o.length;c++)o[c]=r.collection(o[c]);return o}(s,r,l,o),{clusters:t,degreeOfMembership:r}},mr={kMeans:function(e){var t,n=this.cy(),r=this.nodes(),a=null,i=ir(e),o=new Array(i.k),s={};i.testMode?"number"==typeof i.testCentroids?(i.testCentroids,t=sr(r,i.k,i.attributes)):t="object"===d(i.testCentroids)?i.testCentroids:sr(r,i.k,i.attributes):t=sr(r,i.k,i.attributes);for(var l=!0,u=0;l&&u<i.maxIterations;){for(var c=0;c<r.length;c++)s[(a=r[c]).id()]=lr(a,t,i.distance,i.attributes,"kMeans");l=!1;for(var h=0;h<i.k;h++){var f=ur(h,r,s);if(0!==f.length){for(var p=i.attributes.length,g=t[h],v=new Array(p),y=new Array(p),m=0;m<p;m++){y[m]=0;for(var b=0;b<f.length;b++)a=f[b],y[m]+=i.attributes[m](a);v[m]=y[m]/f.length,cr(v[m],g[m],i.sensitivityThreshold)||(l=!0)}t[h]=v,o[h]=n.collection(f)}}u++}return o},kMedoids:function(e){var t,n,r=this.cy(),a=this.nodes(),i=null,o=ir(e),s=new Array(o.k),l={},u=new Array(o.k);o.testMode?"number"==typeof o.testCentroids||(t="object"===d(o.testCentroids)?o.testCentroids:fr(a,o.k)):t=fr(a,o.k);for(var c=!0,h=0;c&&h<o.maxIterations;){for(var f=0;f<a.length;f++)l[(i=a[f]).id()]=lr(i,t,o.distance,o.attributes,"kMedoids");c=!1;for(var p=0;p<t.length;p++){var g=ur(p,a,l);if(0!==g.length){u[p]=pr(t[p],g,o.attributes);for(var v=0;v<g.length;v++)(n=pr(g[v],g,o.attributes))<u[p]&&(u[p]=n,t[p]=g[v],c=!0);s[p]=r.collection(g)}}h++}return s},fuzzyCMeans:yr,fcm:yr},br=ut({distance:"euclidean",linkage:"min",mode:"threshold",threshold:1/0,addDendrogram:!1,dendrogramDepth:0,attributes:[]}),xr={single:"min",complete:"max"},wr=function(e,t,n,r,a){for(var i,o=0,s=1/0,l=a.attributes,u=function(e,t){return rr(a.distance,l.length,function(t){return l[t](e)},function(e){return l[e](t)},e,t)},c=0;c<e.length;c++){var d=e[c].key,h=n[d][r[d]];h<s&&(o=d,s=h)}if("threshold"===a.mode&&s>=a.threshold||"dendrogram"===a.mode&&1===e.length)return!1;var f,p=t[o],g=t[r[o]];f="dendrogram"===a.mode?{left:p,right:g,key:p.key}:{value:p.value.concat(g.value),key:p.key},e[p.index]=f,e.splice(g.index,1),t[p.key]=f;for(var v=0;v<e.length;v++){var y=e[v];p.key===y.key?i=1/0:"min"===a.linkage?(i=n[p.key][y.key],n[p.key][y.key]>n[g.key][y.key]&&(i=n[g.key][y.key])):"max"===a.linkage?(i=n[p.key][y.key],n[p.key][y.key]<n[g.key][y.key]&&(i=n[g.key][y.key])):i="mean"===a.linkage?(n[p.key][y.key]*p.size+n[g.key][y.key]*g.size)/(p.size+g.size):"dendrogram"===a.mode?u(y.value,p.value):u(y.value[0],p.value[0]),n[p.key][y.key]=n[y.key][p.key]=i}for(var m=0;m<e.length;m++){var b=e[m].key;if(r[b]===p.key||r[b]===g.key){for(var x=b,w=0;w<e.length;w++){var E=e[w].key;n[b][E]<n[b][x]&&(x=E)}r[b]=x}e[m].index=m}return p.key=g.key=p.index=g.index=null,!0},Er=function(e,t,n){e&&(e.value?t.push(e.value):(e.left&&Er(e.left,t),e.right&&Er(e.right,t)))},kr=function(e,t){if(!e)return"";if(e.left&&e.right){var n=kr(e.left,t),r=kr(e.right,t),a=t.add({group:"nodes",data:{id:n+","+r}});return t.add({group:"edges",data:{source:n,target:a.id()}}),t.add({group:"edges",data:{source:r,target:a.id()}}),a.id()}return e.value?e.value.id():void 0},Tr=function(e,t,n){if(!e)return[];var r=[],a=[],i=[];return 0===t?(e.left&&Er(e.left,r),e.right&&Er(e.right,a),i=r.concat(a),[n.collection(i)]):1===t?e.value?[n.collection(e.value)]:(e.left&&Er(e.left,r),e.right&&Er(e.right,a),[n.collection(r),n.collection(a)]):e.value?[n.collection(e.value)]:(e.left&&(r=Tr(e.left,t-1,n)),e.right&&(a=Tr(e.right,t-1,n)),r.concat(a))},Cr=function(e){for(var t=this.cy(),n=this.nodes(),r=function(e){var t=br(e),n=xr[t.linkage];return null!=n&&(t.linkage=n),t}(e),a=r.attributes,i=function(e,t){return rr(r.distance,a.length,function(t){return a[t](e)},function(e){return a[e](t)},e,t)},o=[],s=[],l=[],u=[],c=0;c<n.length;c++){var d={value:"dendrogram"===r.mode?n[c]:[n[c]],key:c,index:c};o[c]=d,u[c]=d,s[c]=[],l[c]=0}for(var h=0;h<o.length;h++)for(var f=0;f<=h;f++){var p=void 0;p="dendrogram"===r.mode?h===f?1/0:i(o[h].value,o[f].value):h===f?1/0:i(o[h].value[0],o[f].value[0]),s[h][f]=p,s[f][h]=p,p<s[h][l[h]]&&(l[h]=f)}for(var g,v=wr(o,u,s,l,r);v;)v=wr(o,u,s,l,r);return"dendrogram"===r.mode?(g=Tr(o[0],r.dendrogramDepth,t),r.addDendrogram&&kr(o[0],t)):(g=new Array(o.length),o.forEach(function(e,n){e.key=e.index=null,g[n]=t.collection(e.value)})),g},Pr={hierarchicalClustering:Cr,hca:Cr},Sr=ut({distance:"euclidean",preference:"median",damping:.8,maxIterations:1e3,minIterations:100,attributes:[]}),Br=function(e,t,n,r){var a=function(e,t){return r[t](e)};return-rr(e,r.length,function(e){return a(t,e)},function(e){return a(n,e)},t,n)},Dr=function(e,t){var n=null;return n="median"===t?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(n<e.length&&e.splice(n,e.length-n),t>0&&e.splice(0,t)):e=e.slice(t,n);for(var i=0,o=e.length-1;o>=0;o--){var s=e[o];a?isFinite(s)||(e[o]=-1/0,i++):e.splice(o,1)}r&&e.sort(function(e,t){return e-t});var l=e.length,u=Math.floor(l/2);return l%2!=0?e[u+1+i]:(e[u-1+i]+e[u+i])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=0,a=0,i=t;i<n;i++){var o=e[i];isFinite(o)&&(r+=o,a++)}return r/a}(e):"min"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=1/0,a=t;a<n;a++){var i=e[a];isFinite(i)&&(r=Math.min(i,r))}return r}(e):"max"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=-1/0,a=t;a<n;a++){var i=e[a];isFinite(i)&&(r=Math.max(i,r))}return r}(e):t,n},_r=function(e,t,n){for(var r=[],a=0;a<e;a++){for(var i=-1,o=-1/0,s=0;s<n.length;s++){var l=n[s];t[a*e+l]>o&&(i=l,o=t[a*e+l])}i>0&&r.push(i)}for(var u=0;u<n.length;u++)r[n[u]]=n[u];return r},Ar=function(e){for(var t,n,r,a,i,o,s=this.cy(),l=this.nodes(),u=function(e){var t=e.damping,n=e.preference;.5<=t&&t<1||nt("Damping must range on [0.5, 1). Got: ".concat(t));var r=["median","mean","min","max"];return r.some(function(e){return e===n})||Q(n)||nt("Preference must be one of [".concat(r.map(function(e){return"'".concat(e,"'")}).join(", "),"] or a number. Got: ").concat(n)),Sr(e)}(e),c={},d=0;d<l.length;d++)c[l[d].id()]=d;n=(t=l.length)*t,r=new Array(n);for(var h=0;h<n;h++)r[h]=-1/0;for(var f=0;f<t;f++)for(var p=0;p<t;p++)f!==p&&(r[f*t+p]=Br(u.distance,l[f],l[p],u.attributes));a=Dr(r,u.preference);for(var g=0;g<t;g++)r[g*t+g]=a;i=new Array(n);for(var v=0;v<n;v++)i[v]=0;o=new Array(n);for(var y=0;y<n;y++)o[y]=0;for(var m=new Array(t),b=new Array(t),x=new Array(t),w=0;w<t;w++)m[w]=0,b[w]=0,x[w]=0;for(var E,k=new Array(t*u.minIterations),T=0;T<k.length;T++)k[T]=0;for(E=0;E<u.maxIterations;E++){for(var C=0;C<t;C++){for(var P=-1/0,S=-1/0,B=-1,D=0,_=0;_<t;_++)m[_]=i[C*t+_],(D=o[C*t+_]+r[C*t+_])>=P?(S=P,P=D,B=_):D>S&&(S=D);for(var A=0;A<t;A++)i[C*t+A]=(1-u.damping)*(r[C*t+A]-P)+u.damping*m[A];i[C*t+B]=(1-u.damping)*(r[C*t+B]-S)+u.damping*m[B]}for(var M=0;M<t;M++){for(var R=0,I=0;I<t;I++)m[I]=o[I*t+M],b[I]=Math.max(0,i[I*t+M]),R+=b[I];R-=b[M],b[M]=i[M*t+M],R+=b[M];for(var N=0;N<t;N++)o[N*t+M]=(1-u.damping)*Math.min(0,R-b[N])+u.damping*m[N];o[M*t+M]=(1-u.damping)*(R-b[M])+u.damping*m[M]}for(var L=0,z=0;z<t;z++){var O=o[z*t+z]+i[z*t+z]>0?1:0;k[E%u.minIterations*t+z]=O,L+=O}if(L>0&&(E>=u.minIterations-1||E==u.maxIterations-1)){for(var V=0,F=0;F<t;F++){x[F]=0;for(var j=0;j<u.minIterations;j++)x[F]+=k[j*t+F];0!==x[F]&&x[F]!==u.minIterations||V++}if(V===t)break}}for(var X=function(e,t,n){for(var r=[],a=0;a<e;a++)t[a*e+a]+n[a*e+a]>0&&r.push(a);return r}(t,i,o),q=function(e,t,n){for(var r=_r(e,t,n),a=0;a<n.length;a++){for(var i=[],o=0;o<r.length;o++)r[o]===n[a]&&i.push(o);for(var s=-1,l=-1/0,u=0;u<i.length;u++){for(var c=0,d=0;d<i.length;d++)c+=t[i[d]*e+i[u]];c>l&&(s=u,l=c)}n[a]=i[s]}return _r(e,t,n)}(t,r,X),Y={},W=0;W<X.length;W++)Y[X[W]]=[];for(var U=0;U<l.length;U++){var H=q[c[l[U].id()]];null!=H&&Y[H].push(l[U])}for(var K=new Array(X.length),G=0;G<X.length;G++)K[G]=s.collection(Y[X[G]]);return K},Mr={affinityPropagation:Ar,ap:Ar},Rr=ut({root:void 0,directed:!1}),Ir=function(){var e=this,t={},n=0,r=0,a=[],i=[],o={},s=function(l,u,c){l===c&&(r+=1),t[u]={id:n,low:n++,cutVertex:!1};var d,h,f,p,g=e.getElementById(u).connectedEdges().intersection(e);0===g.size()?a.push(e.spawn(e.getElementById(u))):g.forEach(function(n){d=n.source().id(),h=n.target().id(),(f=d===u?h:d)!==c&&(p=n.id(),o[p]||(o[p]=!0,i.push({x:u,y:f,edge:n})),f in t?t[u].low=Math.min(t[u].low,t[f].id):(s(l,f,u),t[u].low=Math.min(t[u].low,t[f].low),t[u].id<=t[f].low&&(t[u].cutVertex=!0,function(n,r){for(var o=i.length-1,s=[],l=e.spawn();i[o].x!=n||i[o].y!=r;)s.push(i.pop().edge),o--;s.push(i.pop().edge),s.forEach(function(n){var r=n.connectedNodes().intersection(e);l.merge(n),r.forEach(function(n){var r=n.id(),a=n.connectedEdges().intersection(e);l.merge(n),t[r].cutVertex?l.merge(a.filter(function(e){return e.isLoop()})):l.merge(a)})}),a.push(l)}(u,f))))})};e.forEach(function(e){if(e.isNode()){var n=e.id();n in t||(r=0,s(n,n),t[n].cutVertex=r>1)}});var l=Object.keys(t).filter(function(e){return t[e].cutVertex}).map(function(t){return e.getElementById(t)});return{cut:e.spawn(l),components:a}},Nr=function(){var e=this,t={},n=0,r=[],a=[],i=e.spawn(e),o=function(s){if(a.push(s),t[s]={index:n,low:n++,explored:!1},e.getElementById(s).connectedEdges().intersection(e).forEach(function(e){var n=e.target().id();n!==s&&(n in t||o(n),t[n].explored||(t[s].low=Math.min(t[s].low,t[n].low)))}),t[s].index===t[s].low){for(var l=e.spawn();;){var u=a.pop();if(l.merge(e.getElementById(u)),t[u].low=t[s].index,t[u].explored=!0,u===s)break}var c=l.edgesWith(l),d=l.merge(c);r.push(d),i=i.difference(d)}};return e.forEach(function(e){if(e.isNode()){var n=e.id();n in t||o(n)}}),{cut:i,components:r}},Lr={};[bt,Bt,Dt,At,Rt,Nt,Vt,Mn,In,Ln,On,Kn,mr,Pr,Mr,{hierholzer:function(e){if(!$(e)){var t=arguments;e={root:t[0],directed:t[1]}}var n,r,a,i=Rr(e),o=i.root,s=i.directed,l=this,u=!1;o&&(a=K(o)?this.filter(o)[0].id():o[0].id());var c={},d={};s?l.forEach(function(e){var t=e.id();if(e.isNode()){var a=e.indegree(!0),i=e.outdegree(!0),o=a-i,s=i-a;1==o?n?u=!0:n=t:1==s?r?u=!0:r=t:(s>1||o>1)&&(u=!0),c[t]=[],e.outgoers().forEach(function(e){e.isEdge()&&c[t].push(e.id())})}else d[t]=[void 0,e.target().id()]}):l.forEach(function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(n?r?u=!0:r=t:n=t),c[t]=[],e.connectedEdges().forEach(function(e){return c[t].push(e.id())})):d[t]=[e.source().id(),e.target().id()]});var h={found:!1,trail:void 0};if(u)return h;if(r&&n)if(s){if(a&&r!=a)return h;a=r}else{if(a&&r!=a&&n!=a)return h;a||(a=r)}else a||(a=l[0].id());var f=function(e){for(var t,n,r,a=e,i=[e];c[a].length;)t=c[a].shift(),n=d[t][0],a!=(r=d[t][1])?(c[r]=c[r].filter(function(e){return e!=t}),a=r):s||a==n||(c[n]=c[n].filter(function(e){return e!=t}),a=n),i.unshift(t),i.unshift(a);return i},p=[],g=[];for(g=f(a);1!=g.length;)0==c[g[0]].length?(p.unshift(l.getElementById(g.shift())),p.unshift(l.getElementById(g.shift()))):g=f(g.shift()).concat(g);for(var v in p.unshift(l.getElementById(g.shift())),c)if(c[v].length)return h;return h.found=!0,h.trail=this.spawn(p,!0),h}},{hopcroftTarjanBiconnected:Ir,htbc:Ir,htb:Ir,hopcroftTarjanBiconnectedComponents:Ir},{tarjanStronglyConnected:Nr,tsc:Nr,tscc:Nr,tarjanStronglyConnectedComponents:Nr}].forEach(function(e){me(Lr,e)});var zr=function(e){if(!(this instanceof zr))return new zr(e);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof e&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};zr.prototype={fulfill:function(e){return Or(this,1,"fulfillValue",e)},reject:function(e){return Or(this,2,"rejectReason",e)},then:function(e,t){var n=this,r=new zr;return n.onFulfilled.push(jr(e,r,"fulfill")),n.onRejected.push(jr(t,r,"reject")),Vr(n),r.proxy}};var Or=function(e,t,n,r){return 0===e.state&&(e.state=t,e[n]=r,Vr(e)),e},Vr=function(e){1===e.state?Fr(e,"onFulfilled",e.fulfillValue):2===e.state&&Fr(e,"onRejected",e.rejectReason)},Fr=function(e,t,n){if(0!==e[t].length){var r=e[t];e[t]=[];var a=function(){for(var e=0;e<r.length;e++)r[e](n)};"function"==typeof setImmediate?setImmediate(a):setTimeout(a,0)}},jr=function(e,t,n){return function(r){if("function"!=typeof e)t[n].call(t,r);else{var a;try{a=e(r)}catch(i){return void t.reject(i)}Xr(t,a)}}},Xr=function(e,t){if(e!==t&&e.proxy!==t){var n;if("object"===d(t)&&null!==t||"function"==typeof t)try{n=t.then}catch(a){return void e.reject(a)}if("function"!=typeof n)e.fulfill(t);else{var r=!1;try{n.call(t,function(n){r||(r=!0,n===t?e.reject(new TypeError("circular thenable chain")):Xr(e,n))},function(t){r||(r=!0,e.reject(t))})}catch(a){r||e.reject(a)}}}else e.reject(new TypeError("cannot resolve promise with itself"))};zr.all=function(e){return new zr(function(t,n){for(var r=new Array(e.length),a=0,i=function(n,i){r[n]=i,++a===e.length&&t(r)},o=0;o<e.length;o++)(function(t){var r=e[t];null!=r&&null!=r.then?r.then(function(e){i(t,e)},function(e){n(e)}):i(t,r)})(o)})},zr.resolve=function(e){return new zr(function(t,n){t(e)})},zr.reject=function(e){return new zr(function(t,n){n(e)})};var qr="undefined"!=typeof Promise?Promise:zr,Yr=function(e,t,n){var r=re(e),a=!r,i=this._private=me({duration:1e3},t,n);if(i.target=e,i.style=i.style||i.css,i.started=!1,i.playing=!1,i.hooked=!1,i.applying=!1,i.progress=0,i.completes=[],i.frames=[],i.complete&&G(i.complete)&&i.completes.push(i.complete),a){var o=e.position();i.startPosition=i.startPosition||{x:o.x,y:o.y},i.startStyle=i.startStyle||e.cy().style().getAnimationStartStyle(e,i.style)}if(r){var s=e.pan();i.startPan={x:s.x,y:s.y},i.startZoom=e.zoom()}this.length=1,this[0]=this},Wr=Yr.prototype;me(Wr,{instanceString:function(){return"animation"},hook:function(){var e=this._private;if(!e.hooked){var t=e.target._private.animation;(e.queue?t.queue:t.current).push(this),ee(e.target)&&e.target.cy().addToAnimationPool(e.target),e.hooked=!0}return this},play:function(){var e=this._private;return 1===e.progress&&(e.progress=0),e.playing=!0,e.started=!1,e.stopped=!1,this.hook(),this},playing:function(){return this._private.playing},apply:function(){var e=this._private;return e.applying=!0,e.started=!1,e.stopped=!1,this.hook(),this},applying:function(){return this._private.applying},pause:function(){var e=this._private;return e.playing=!1,e.started=!1,this},stop:function(){var e=this._private;return e.playing=!1,e.started=!1,e.stopped=!0,this},rewind:function(){return this.progress(0)},fastforward:function(){return this.progress(1)},time:function(e){var t=this._private;return void 0===e?t.progress*t.duration:this.progress(e/t.duration)},progress:function(e){var t=this._private,n=t.playing;return void 0===e?t.progress:(n&&this.pause(),t.progress=e,t.started=!1,n&&this.play(),this)},completed:function(){return 1===this._private.progress},reverse:function(){var e=this._private,t=e.playing;t&&this.pause(),e.progress=1-e.progress,e.started=!1;var n=function(t,n){var r=e[t];null!=r&&(e[t]=e[n],e[n]=r)};if(n("zoom","startZoom"),n("pan","startPan"),n("position","startPosition"),e.style)for(var r=0;r<e.style.length;r++){var a=e.style[r],i=a.name,o=e.startStyle[i];e.startStyle[i]=a,e.style[r]=o}return t&&this.play(),this},promise:function(e){var t,n=this._private;if("frame"===e)t=n.frames;else t=n.completes;return new qr(function(e,n){t.push(function(){e()})})}}),Wr.complete=Wr.completed,Wr.run=Wr.play,Wr.running=Wr.playing;var Ur,Hr,Kr,Gr,Zr,$r,Qr,Jr,ea,ta,na,ra,aa,ia,oa,sa,la,ua,ca,da,ha,fa,pa,ga,va,ya,ma,ba,xa,wa,Ea,ka,Ta,Ca,Pa,Sa,Ba,Da,_a,Aa,Ma,Ra,Ia,Na,La,za,Oa,Va,Fa,ja,Xa,qa,Ya,Wa,Ua,Ha,Ka,Ga,Za,$a,Qa,Ja,ei,ti,ni,ri,ai,ii,oi,si,li,ui,ci,di,hi,fi,pi,gi,vi,yi,mi,bi,xi,wi,Ei,ki,Ti={animated:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return!1;var n=t[0];return n?n._private.animation.current.length>0:void 0}},clearQueue:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return this;for(var n=0;n<t.length;n++){t[n]._private.animation.queue=[]}return this}},delay:function(){return function(e,t){return(this._private.cy||this).styleEnabled()?this.animate({delay:e,duration:e,complete:t}):this}},delayAnimation:function(){return function(e,t){return(this._private.cy||this).styleEnabled()?this.animation({delay:e,duration:e,complete:t}):this}},animation:function(){return function(e,t){var n=this,r=void 0!==n.length,a=r?n:[n],i=this._private.cy||this,o=!r,s=!o;if(!i.styleEnabled())return this;var l=i.style();if(e=me({},e,t),0===Object.keys(e).length)return new Yr(a[0],e);switch(void 0===e.duration&&(e.duration=400),e.duration){case"slow":e.duration=600;break;case"fast":e.duration=200}if(s&&(e.style=l.getPropsList(e.style||e.css),e.css=void 0),s&&null!=e.renderedPosition){var u=e.renderedPosition,c=i.pan(),d=i.zoom();e.position=jt(u,d,c)}if(o&&null!=e.panBy){var h=e.panBy,f=i.pan();e.pan={x:f.x+h.x,y:f.y+h.y}}var p=e.center||e.centre;if(o&&null!=p){var g=i.getCenterPan(p.eles,e.zoom);null!=g&&(e.pan=g)}if(o&&null!=e.fit){var v=e.fit,y=i.getFitViewport(v.eles||v.boundingBox,v.padding);null!=y&&(e.pan=y.pan,e.zoom=y.zoom)}if(o&&$(e.zoom)){var m=i.getZoomedViewport(e.zoom);null!=m?(m.zoomed&&(e.zoom=m.zoom),m.panned&&(e.pan=m.pan)):e.zoom=null}return new Yr(a[0],e)}},animate:function(){return function(e,t){var n=this,r=void 0!==n.length?n:[n];if(!(this._private.cy||this).styleEnabled())return this;t&&(e=me({},e,t));for(var a=0;a<r.length;a++){var i=r[a],o=i.animated()&&(void 0===e.queue||e.queue);i.animation(e,o?{queue:!0}:void 0).play()}return this}},stop:function(){return function(e,t){var n=this,r=void 0!==n.length?n:[n],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var i=0;i<r.length;i++){for(var o=r[i]._private,s=o.animation.current,l=0;l<s.length;l++){var u=s[l]._private;t&&(u.duration=0)}e&&(o.animation.queue=[]),t||(o.animation.current=[])}return a.notify("draw"),this}}};function Ci(){if(Hr)return Ur;Hr=1;var e=Array.isArray;return Ur=e}function Pi(){if(ta)return ea;ta=1;var e,t=function(){if(Jr)return Qr;Jr=1;var e=Pe()["__core-js_shared__"];return Qr=e}(),n=(e=/[^.]+$/.exec(t&&t.keys&&t.keys.IE_PROTO||""))?"Symbol(src)_1."+e:"";return ea=function(e){return!!n&&n in e}}function Si(){if(ia)return aa;ia=1;var e=function(){if($r)return Zr;$r=1;var e=De(),t=Ce();return Zr=function(n){if(!t(n))return!1;var r=e(n);return"[object Function]"==r||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}}(),t=Pi(),n=Ce(),r=function(){if(ra)return na;ra=1;var e=Function.prototype.toString;return na=function(t){if(null!=t){try{return e.call(t)}catch(n){}try{return t+""}catch(n){}}return""}}(),a=/^\[object .+?Constructor\]$/,i=Function.prototype,o=Object.prototype,s=i.toString,l=o.hasOwnProperty,u=RegExp("^"+s.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return aa=function(i){return!(!n(i)||t(i))&&(e(i)?u:a).test(r(i))}}function Bi(){if(ua)return la;ua=1;var e=Si(),t=(sa||(sa=1,oa=function(e,t){return null==e?void 0:e[t]}),oa);return la=function(n,r){var a=t(n,r);return e(a)?a:void 0},la}function Di(){if(da)return ca;da=1;var e=Bi()(Object,"create");return ca=e}function _i(){if(ka)return Ea;ka=1;var e=function(){if(fa)return ha;fa=1;var e=Di();return ha=function(){this.__data__=e?e(null):{},this.size=0}}(),t=ga?pa:(ga=1,pa=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}),n=function(){if(ya)return va;ya=1;var e=Di(),t=Object.prototype.hasOwnProperty;return va=function(n){var r=this.__data__;if(e){var a=r[n];return"__lodash_hash_undefined__"===a?void 0:a}return t.call(r,n)?r[n]:void 0},va}(),r=function(){if(ba)return ma;ba=1;var e=Di(),t=Object.prototype.hasOwnProperty;return ma=function(n){var r=this.__data__;return e?void 0!==r[n]:t.call(r,n)},ma}(),a=function(){if(wa)return xa;wa=1;var e=Di();return xa=function(t,n){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=e&&void 0===n?"__lodash_hash_undefined__":n,this},xa}();function i(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}return i.prototype.clear=e,i.prototype.delete=t,i.prototype.get=n,i.prototype.has=r,i.prototype.set=a,Ea=i}function Ai(){if(Sa)return Pa;return Sa=1,Pa=function(e,t){return e===t||e!=e&&t!=t}}function Mi(){if(Da)return Ba;Da=1;var e=Ai();return Ba=function(t,n){for(var r=t.length;r--;)if(e(t[r][0],n))return r;return-1},Ba}function Ri(){if(Va)return Oa;Va=1;var e=Ca?Ta:(Ca=1,Ta=function(){this.__data__=[],this.size=0}),t=function(){if(Aa)return _a;Aa=1;var e=Mi(),t=Array.prototype.splice;return _a=function(n){var r=this.__data__,a=e(r,n);return!(a<0||(a==r.length-1?r.pop():t.call(r,a,1),--this.size,0))},_a}(),n=function(){if(Ra)return Ma;Ra=1;var e=Mi();return Ma=function(t){var n=this.__data__,r=e(n,t);return r<0?void 0:n[r][1]},Ma}(),r=function(){if(Na)return Ia;Na=1;var e=Mi();return Ia=function(t){return e(this.__data__,t)>-1}}(),a=function(){if(za)return La;za=1;var e=Mi();return La=function(t,n){var r=this.__data__,a=e(r,t);return a<0?(++this.size,r.push([t,n])):r[a][1]=n,this},La}();function i(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}return i.prototype.clear=e,i.prototype.delete=t,i.prototype.get=n,i.prototype.has=r,i.prototype.set=a,Oa=i}function Ii(){if(qa)return Xa;qa=1;var e=_i(),t=Ri(),n=function(){if(ja)return Fa;ja=1;var e=Bi()(Pe(),"Map");return Fa=e}();return Xa=function(){this.size=0,this.__data__={hash:new e,map:new(n||t),string:new e}}}function Ni(){if(Ha)return Ua;Ha=1;var e=Wa?Ya:(Wa=1,Ya=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e});return Ua=function(t,n){var r=t.__data__;return e(n)?r["string"==typeof n?"string":"hash"]:r.map},Ua}function Li(){if(ri)return ni;ri=1;var e=Ii(),t=function(){if(Ga)return Ka;Ga=1;var e=Ni();return Ka=function(t){var n=e(this,t).delete(t);return this.size-=n?1:0,n}}(),n=function(){if($a)return Za;$a=1;var e=Ni();return Za=function(t){return e(this,t).get(t)}}(),r=function(){if(Ja)return Qa;Ja=1;var e=Ni();return Qa=function(t){return e(this,t).has(t)}}(),a=function(){if(ti)return ei;ti=1;var e=Ni();return ei=function(t,n){var r=e(this,t),a=r.size;return r.set(t,n),this.size+=r.size==a?0:1,this},ei}();function i(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}return i.prototype.clear=e,i.prototype.delete=t,i.prototype.get=n,i.prototype.has=r,i.prototype.set=a,ni=i}function zi(){if(si)return oi;si=1;var e=function(){if(ii)return ai;ii=1;var e=Li();function t(n,r){if("function"!=typeof n||null!=r&&"function"!=typeof r)throw new TypeError("Expected a function");var a=function(){var e=arguments,t=r?r.apply(this,e):e[0],i=a.cache;if(i.has(t))return i.get(t);var o=n.apply(this,e);return a.cache=i.set(t,o)||i,o};return a.cache=new(t.Cache||e),a}return t.Cache=e,ai=t}();return oi=function(t){var n=e(t,function(e){return 500===r.size&&r.clear(),e}),r=n.cache;return n},oi}function Oi(){if(ui)return li;ui=1;var e=zi(),t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,n=/\\(\\)?/g,r=e(function(e){var r=[];return 46===e.charCodeAt(0)&&r.push(""),e.replace(t,function(e,t,a,i){r.push(a?i.replace(n,"$1"):t||e)}),r});return li=r}function Vi(){if(di)return ci;return di=1,ci=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a},ci}function Fi(){if(gi)return pi;gi=1;var e=function(){if(fi)return hi;fi=1;var e=Be(),t=Vi(),n=Ci(),r=_e(),a=e?e.prototype:void 0,i=a?a.toString:void 0;return hi=function e(a){if("string"==typeof a)return a;if(n(a))return t(a,e)+"";if(r(a))return i?i.call(a):"";var o=a+"";return"0"==o&&1/a==-1/0?"-0":o},hi}();return pi=function(t){return null==t?"":e(t)}}function ji(){if(yi)return vi;yi=1;var e=Ci(),t=function(){if(Gr)return Kr;Gr=1;var e=Ci(),t=_e(),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/;return Kr=function(a,i){if(e(a))return!1;var o=typeof a;return!("number"!=o&&"symbol"!=o&&"boolean"!=o&&null!=a&&!t(a))||r.test(a)||!n.test(a)||null!=i&&a in Object(i)},Kr}(),n=Oi(),r=Fi();return vi=function(a,i){return e(a)?a:t(a,i)?[a]:n(r(a))},vi}function Xi(){if(bi)return mi;bi=1;var e=_e();return mi=function(t){if("string"==typeof t||e(t))return t;var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}}var qi,Yi,Wi,Ui,Hi,Ki,Gi,Zi,$i,Qi,Ji,eo,to=function(){if(ki)return Ei;ki=1;var e=function(){if(wi)return xi;wi=1;var e=ji(),t=Xi();return xi=function(n,r){for(var a=0,i=(r=e(r,n)).length;null!=n&&a<i;)n=n[t(r[a++])];return a&&a==i?n:void 0},xi}();return Ei=function(t,n,r){var a=null==t?void 0:e(t,n);return void 0===a?r:a},Ei}(),no=Te(to);function ro(){if(Ui)return Wi;Ui=1;var e=function(){if(Yi)return qi;Yi=1;var e=Bi(),t=function(){try{var t=e(Object,"defineProperty");return t({},"",{}),t}catch(n){}}();return qi=t}();return Wi=function(t,n,r){"__proto__"==n&&e?e(t,n,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[n]=r},Wi}function ao(){if(Qi)return $i;Qi=1;var e=function(){if(Ki)return Hi;Ki=1;var e=ro(),t=Ai(),n=Object.prototype.hasOwnProperty;return Hi=function(r,a,i){var o=r[a];n.call(r,a)&&t(o,i)&&(void 0!==i||a in r)||e(r,a,i)},Hi}(),t=ji(),n=function(){if(Zi)return Gi;Zi=1;var e=/^(?:0|[1-9]\d*)$/;return Gi=function(t,n){var r=typeof t;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&e.test(t))&&t>-1&&t%1==0&&t<n}}(),r=Ce(),a=Xi();return $i=function(i,o,s,l){if(!r(i))return i;for(var u=-1,c=(o=t(o,i)).length,d=c-1,h=i;null!=h&&++u<c;){var f=a(o[u]),p=s;if("__proto__"===f||"constructor"===f||"prototype"===f)return i;if(u!=d){var g=h[f];void 0===(p=l?l(g,f,h):void 0)&&(p=r(g)?g:n(o[u+1])?[]:{})}e(h,f,p),h=h[f]}return i},$i}var io,oo,so,lo,uo=function(){if(eo)return Ji;eo=1;var e=ao();return Ji=function(t,n,r){return null==t?t:e(t,n,r)},Ji}(),co=Te(uo);var ho=function(){if(lo)return so;lo=1;var e=Vi(),t=(oo||(oo=1,io=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}),io),n=Ci(),r=_e(),a=Oi(),i=Xi(),o=Fi();return so=function(s){return n(s)?e(s,i):r(s)?[s]:t(a(o(s)))}}(),fo=Te(ho),po={data:function(e){return e=me({},{field:"data",bindingEvent:"data",allowBinding:!1,allowSetting:!1,allowGetting:!1,settingEvent:"data",settingTriggersEvent:!1,triggerFnName:"trigger",immutableKeys:{},updateStyle:!1,beforeGet:function(e){},beforeSet:function(e,t){},onSet:function(e){},canSet:function(e){return!0}},e),function(t,n){var r=e,a=this,i=void 0!==a.length,o=i?a:[a],l=i?a[0]:a;if(K(t)){var u,c=-1!==t.indexOf(".")&&fo(t);if(r.allowGetting&&void 0===n)return l&&(r.beforeGet(l),u=c&&void 0===l._private[r.field][t]?no(l._private[r.field],c):l._private[r.field][t]),u;if(r.allowSetting&&void 0!==n&&!r.immutableKeys[t]){var d=s({},t,n);r.beforeSet(a,d);for(var h=0,f=o.length;h<f;h++){var p=o[h];r.canSet(p)&&(c&&void 0===l._private[r.field][t]?co(p._private[r.field],c,n):p._private[r.field][t]=n)}r.updateStyle&&a.updateStyle(),r.onSet(a),r.settingTriggersEvent&&a[r.triggerFnName](r.settingEvent)}}else if(r.allowSetting&&$(t)){var g,v,y=t,m=Object.keys(y);r.beforeSet(a,y);for(var b=0;b<m.length;b++){if(v=y[g=m[b]],!r.immutableKeys[g])for(var x=0;x<o.length;x++){var w=o[x];r.canSet(w)&&(w._private[r.field][g]=v)}}r.updateStyle&&a.updateStyle(),r.onSet(a),r.settingTriggersEvent&&a[r.triggerFnName](r.settingEvent)}else if(r.allowBinding&&G(t)){var E=t;a.on(r.bindingEvent,E)}else if(r.allowGetting&&void 0===t){var k;return l&&(r.beforeGet(l),k=l._private[r.field]),k}return a}},removeData:function(e){return e=me({},{field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!1,immutableKeys:{}},e),function(t){var n=e,r=this,a=void 0!==r.length?r:[r];if(K(t)){for(var i=t.split(/\s+/),o=i.length,s=0;s<o;s++){var l=i[s];if(!ie(l))if(!n.immutableKeys[l])for(var u=0,c=a.length;u<c;u++)a[u]._private[n.field][l]=void 0}n.triggerEvent&&r[n.triggerFnName](n.event)}else if(void 0===t){for(var d=0,h=a.length;d<h;d++)for(var f=a[d]._private[n.field],p=Object.keys(f),g=0;g<p.length;g++){var v=p[g];!n.immutableKeys[v]&&(f[v]=void 0)}n.triggerEvent&&r[n.triggerFnName](n.event)}return r}}},go={eventAliasesOn:function(e){var t=e;t.addListener=t.listen=t.bind=t.on,t.unlisten=t.unbind=t.off=t.removeListener,t.trigger=t.emit,t.pon=t.promiseOn=function(e,t){var n=this,r=Array.prototype.slice.call(arguments,0);return new qr(function(e,t){var a=r.concat([function(t){n.off.apply(n,i),e(t)}]),i=a.concat([]);n.on.apply(n,a)})}}},vo={};[Ti,po,go].forEach(function(e){me(vo,e)});var yo={animate:vo.animate(),animation:vo.animation(),animated:vo.animated(),clearQueue:vo.clearQueue(),delay:vo.delay(),delayAnimation:vo.delayAnimation(),stop:vo.stop()},mo={classes:function(e){var t=this;if(void 0===e){var n=[];return t[0]._private.classes.forEach(function(e){return n.push(e)}),n}Z(e)||(e=(e||"").match(/\S+/g)||[]);for(var r=[],a=new vt(e),i=0;i<t.length;i++){for(var o=t[i],s=o._private,l=s.classes,u=!1,c=0;c<e.length;c++){var d=e[c];if(!l.has(d)){u=!0;break}}u||(u=l.size!==e.length),u&&(s.classes=a,r.push(o))}return r.length>0&&this.spawn(r).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){Z(e)||(e=e.match(/\S+/g)||[]);for(var n=this,r=void 0===t,a=[],i=0,o=n.length;i<o;i++)for(var s=n[i],l=s._private.classes,u=!1,c=0;c<e.length;c++){var d=e[c],h=l.has(d),f=!1;t||r&&!h?(l.add(d),f=!0):(!t||r&&h)&&(l.delete(d),f=!0),!u&&f&&(a.push(s),u=!0)}return a.length>0&&this.spawn(a).updateStyle().emit("class"),n},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},t),n}};mo.className=mo.classNames=mo.classes;var bo={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:he,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};bo.variable="(?:[\\w-.]|(?:\\\\"+bo.metaChar+"))+",bo.className="(?:[\\w-]|(?:\\\\"+bo.metaChar+"))+",bo.value=bo.string+"|"+bo.number,bo.id=bo.variable,function(){var e,t,n;for(e=bo.comparatorOp.split("|"),n=0;n<e.length;n++)t=e[n],bo.comparatorOp+="|@"+t;for(e=bo.comparatorOp.split("|"),n=0;n<e.length;n++)(t=e[n]).indexOf("!")>=0||"="!==t&&(bo.comparatorOp+="|\\!"+t)}();var xo=0,wo=1,Eo=2,ko=3,To=4,Co=5,Po=6,So=7,Bo=8,Do=9,_o=10,Ao=11,Mo=12,Ro=13,Io=14,No=15,Lo=16,zo=17,Oo=18,Vo=19,Fo=20,jo=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(e,t){return function(e,t){return-1*ye(e,t)}(e.selector,t.selector)}),Xo=function(){for(var e,t={},n=0;n<jo.length;n++)t[(e=jo[n]).selector]=e.matches;return t}(),qo="("+jo.map(function(e){return e.selector}).join("|")+")",Yo=function(e){return e.replace(new RegExp("\\\\("+bo.metaChar+")","g"),function(e,t){return t})},Wo=function(e,t,n){e[e.length-1]=n},Uo=[{name:"group",query:!0,regex:"("+bo.group+")",populate:function(e,t,n){var r=l(n,1)[0];t.checks.push({type:xo,value:"*"===r?r:r+"s"})}},{name:"state",query:!0,regex:qo,populate:function(e,t,n){var r=l(n,1)[0];t.checks.push({type:So,value:r})}},{name:"id",query:!0,regex:"\\#("+bo.id+")",populate:function(e,t,n){var r=l(n,1)[0];t.checks.push({type:Bo,value:Yo(r)})}},{name:"className",query:!0,regex:"\\.("+bo.className+")",populate:function(e,t,n){var r=l(n,1)[0];t.checks.push({type:Do,value:Yo(r)})}},{name:"dataExists",query:!0,regex:"\\[\\s*("+bo.variable+")\\s*\\]",populate:function(e,t,n){var r=l(n,1)[0];t.checks.push({type:To,field:Yo(r)})}},{name:"dataCompare",query:!0,regex:"\\[\\s*("+bo.variable+")\\s*("+bo.comparatorOp+")\\s*("+bo.value+")\\s*\\]",populate:function(e,t,n){var r=l(n,3),a=r[0],i=r[1],o=r[2];o=null!=new RegExp("^"+bo.string+"$").exec(o)?o.substring(1,o.length-1):parseFloat(o),t.checks.push({type:ko,field:Yo(a),operator:i,value:o})}},{name:"dataBool",query:!0,regex:"\\[\\s*("+bo.boolOp+")\\s*("+bo.variable+")\\s*\\]",populate:function(e,t,n){var r=l(n,2),a=r[0],i=r[1];t.checks.push({type:Co,field:Yo(i),operator:a})}},{name:"metaCompare",query:!0,regex:"\\[\\[\\s*("+bo.meta+")\\s*("+bo.comparatorOp+")\\s*("+bo.number+")\\s*\\]\\]",populate:function(e,t,n){var r=l(n,3),a=r[0],i=r[1],o=r[2];t.checks.push({type:Po,field:Yo(a),operator:i,value:parseFloat(o)})}},{name:"nextQuery",separator:!0,regex:bo.separator,populate:function(e,t){var n=e.currentSubject,r=e.edgeCount,a=e.compoundCount,i=e[e.length-1];return null!=n&&(i.subject=n,e.currentSubject=null),i.edgeCount=r,i.compoundCount=a,e.edgeCount=0,e.compoundCount=0,e[e.length++]={checks:[]}}},{name:"directedEdge",separator:!0,regex:bo.directedEdge,populate:function(e,t){if(null==e.currentSubject){var n={checks:[]},r=t,a={checks:[]};return n.checks.push({type:Ao,source:r,target:a}),Wo(e,0,n),e.edgeCount++,a}var i={checks:[]},o=t,s={checks:[]};return i.checks.push({type:Mo,source:o,target:s}),Wo(e,0,i),e.edgeCount++,s}},{name:"undirectedEdge",separator:!0,regex:bo.undirectedEdge,populate:function(e,t){if(null==e.currentSubject){var n={checks:[]},r=t,a={checks:[]};return n.checks.push({type:_o,nodes:[r,a]}),Wo(e,0,n),e.edgeCount++,a}var i={checks:[]},o=t,s={checks:[]};return i.checks.push({type:Io,node:o,neighbor:s}),Wo(e,0,i),s}},{name:"child",separator:!0,regex:bo.child,populate:function(e,t){if(null==e.currentSubject){var n={checks:[]},r={checks:[]},a=e[e.length-1];return n.checks.push({type:No,parent:a,child:r}),Wo(e,0,n),e.compoundCount++,r}if(e.currentSubject===t){var i={checks:[]},o=e[e.length-1],s={checks:[]},l={checks:[]},u={checks:[]},c={checks:[]};return i.checks.push({type:Vo,left:o,right:s,subject:l}),l.checks=t.checks,t.checks=[{type:Fo}],c.checks.push({type:Fo}),s.checks.push({type:zo,parent:c,child:u}),Wo(e,0,i),e.currentSubject=l,e.compoundCount++,u}var d={checks:[]},h={checks:[]},f=[{type:zo,parent:d,child:h}];return d.checks=t.checks,t.checks=f,e.compoundCount++,h}},{name:"descendant",separator:!0,regex:bo.descendant,populate:function(e,t){if(null==e.currentSubject){var n={checks:[]},r={checks:[]},a=e[e.length-1];return n.checks.push({type:Lo,ancestor:a,descendant:r}),Wo(e,0,n),e.compoundCount++,r}if(e.currentSubject===t){var i={checks:[]},o=e[e.length-1],s={checks:[]},l={checks:[]},u={checks:[]},c={checks:[]};return i.checks.push({type:Vo,left:o,right:s,subject:l}),l.checks=t.checks,t.checks=[{type:Fo}],c.checks.push({type:Fo}),s.checks.push({type:Oo,ancestor:c,descendant:u}),Wo(e,0,i),e.currentSubject=l,e.compoundCount++,u}var d={checks:[]},h={checks:[]},f=[{type:Oo,ancestor:d,descendant:h}];return d.checks=t.checks,t.checks=f,e.compoundCount++,h}},{name:"subject",modifier:!0,regex:bo.subject,populate:function(e,t){if(null!=e.currentSubject&&e.currentSubject!==t)return at("Redefinition of subject in selector `"+e.toString()+"`"),!1;e.currentSubject=t;var n=e[e.length-1].checks[0],r=null==n?null:n.type;r===Ao?n.type=Ro:r===_o&&(n.type=Io,n.node=n.nodes[1],n.neighbor=n.nodes[0],n.nodes=null)}}];Uo.forEach(function(e){return e.regexObj=new RegExp("^"+e.regex)});var Ho=function(e){for(var t,n,r,a=0;a<Uo.length;a++){var i=Uo[a],o=i.name,s=e.match(i.regexObj);if(null!=s){n=s,t=i,r=o;var l=s[0];e=e.substring(l.length);break}}return{expr:t,match:n,name:r,remaining:e}},Ko={parse:function(e){var t=this,n=t.inputText=e,r=t[0]={checks:[]};for(t.length=1,n=function(e){var t=e.match(/^\s+/);if(t){var n=t[0];e=e.substring(n.length)}return e}(n);;){var a=Ho(n);if(null==a.expr)return at("The selector `"+e+"`is invalid"),!1;var i=a.match.slice(1),o=a.expr.populate(t,r,i);if(!1===o)return!1;if(null!=o&&(r=o),(n=a.remaining).match(/^\s*$/))break}var s=t[t.length-1];null!=t.currentSubject&&(s.subject=t.currentSubject),s.edgeCount=t.edgeCount,s.compoundCount=t.compoundCount;for(var l=0;l<t.length;l++){var u=t[l];if(u.compoundCount>0&&u.edgeCount>0)return at("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(u.edgeCount>1)return at("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===u.edgeCount&&at("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return K(t)?'"'+t+'"':e(t)},n=function(e){return" "+e+" "},r=function(r,i){var o=r.type,s=r.value;switch(o){case xo:var l=e(s);return l.substring(0,l.length-1);case ko:var u=r.field,c=r.operator;return"["+u+n(e(c))+t(s)+"]";case Co:var d=r.operator,h=r.field;return"["+e(d)+h+"]";case To:return"["+r.field+"]";case Po:var f=r.operator;return"[["+r.field+n(e(f))+t(s)+"]]";case So:return s;case Bo:return"#"+s;case Do:return"."+s;case zo:case No:return a(r.parent,i)+n(">")+a(r.child,i);case Oo:case Lo:return a(r.ancestor,i)+" "+a(r.descendant,i);case Vo:var p=a(r.left,i),g=a(r.subject,i),v=a(r.right,i);return p+(p.length>0?" ":"")+g+v;case Fo:return""}},a=function(e,t){return e.checks.reduce(function(n,a,i){return n+(t===e&&0===i?"$":"")+r(a,t)},"")},i="",o=0;o<this.length;o++){var s=this[o];i+=a(s,s.subject),this.length>1&&o<this.length-1&&(i+=", ")}return this.toStringCache=i,i}},Go=function(e,t,n){var r,a,i,o=K(e),s=Q(e),l=K(n),u=!1,c=!1,d=!1;switch(t.indexOf("!")>=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),u=!0),(o||l||u)&&(a=o||s?""+e:"",i=""+n),u&&(e=a=a.toLowerCase(),n=i=i.toLowerCase()),t){case"*=":r=a.indexOf(i)>=0;break;case"$=":r=a.indexOf(i,a.length-i.length)>=0;break;case"^=":r=0===a.indexOf(i);break;case"=":r=e===n;break;case">":d=!0,r=e>n;break;case">=":d=!0,r=e>=n;break;case"<":d=!0,r=e<n;break;case"<=":d=!0,r=e<=n;break;default:r=!1}return!c||null==e&&d||(r=!r),r},Zo=function(e,t){return e.data(t)},$o=[],Qo=function(e,t){return e.checks.every(function(e){return $o[e.type](e,t)})};$o[xo]=function(e,t){var n=e.value;return"*"===n||n===t.group()},$o[So]=function(e,t){return function(e,t){return Xo[e](t)}(e.value,t)},$o[Bo]=function(e,t){var n=e.value;return t.id()===n},$o[Do]=function(e,t){var n=e.value;return t.hasClass(n)},$o[Po]=function(e,t){var n=e.field,r=e.operator,a=e.value;return Go(function(e,t){return e[t]()}(t,n),r,a)},$o[ko]=function(e,t){var n=e.field,r=e.operator,a=e.value;return Go(Zo(t,n),r,a)},$o[Co]=function(e,t){var n=e.field,r=e.operator;return function(e,t){switch(t){case"?":return!!e;case"!":return!e;case"^":return void 0===e}}(Zo(t,n),r)},$o[To]=function(e,t){var n=e.field;return e.operator,void 0!==Zo(t,n)},$o[_o]=function(e,t){var n=e.nodes[0],r=e.nodes[1],a=t.source(),i=t.target();return Qo(n,a)&&Qo(r,i)||Qo(r,a)&&Qo(n,i)},$o[Io]=function(e,t){return Qo(e.node,t)&&t.neighborhood().some(function(t){return t.isNode()&&Qo(e.neighbor,t)})},$o[Ao]=function(e,t){return Qo(e.source,t.source())&&Qo(e.target,t.target())},$o[Mo]=function(e,t){return Qo(e.source,t)&&t.outgoers().some(function(t){return t.isNode()&&Qo(e.target,t)})},$o[Ro]=function(e,t){return Qo(e.target,t)&&t.incomers().some(function(t){return t.isNode()&&Qo(e.source,t)})},$o[No]=function(e,t){return Qo(e.child,t)&&Qo(e.parent,t.parent())},$o[zo]=function(e,t){return Qo(e.parent,t)&&t.children().some(function(t){return Qo(e.child,t)})},$o[Lo]=function(e,t){return Qo(e.descendant,t)&&t.ancestors().some(function(t){return Qo(e.ancestor,t)})},$o[Oo]=function(e,t){return Qo(e.ancestor,t)&&t.descendants().some(function(t){return Qo(e.descendant,t)})},$o[Vo]=function(e,t){return Qo(e.subject,t)&&Qo(e.left,t)&&Qo(e.right,t)},$o[Fo]=function(){return!0},$o[wo]=function(e,t){return e.value.has(t)},$o[Eo]=function(e,t){return(0,e.value)(t)};var Jo={matches:function(e){for(var t=0;t<this.length;t++){var n=this[t];if(Qo(n,e))return!0}return!1},filter:function(e){var t=this;if(1===t.length&&1===t[0].checks.length&&t[0].checks[0].type===Bo)return e.getElementById(t[0].checks[0].value).collection();var n=function(e){for(var n=0;n<t.length;n++){var r=t[n];if(Qo(r,e))return!0}return!1};return null==t.text()&&(n=function(){return!0}),e.filter(n)}},es=function(e){this.inputText=e,this.currentSubject=null,this.compoundCount=0,this.edgeCount=0,this.length=0,null==e||K(e)&&e.match(/^\s*$/)||(ee(e)?this.addQuery({checks:[{type:wo,value:e.collection()}]}):G(e)?this.addQuery({checks:[{type:Eo,value:e}]}):K(e)?this.parse(e)||(this.invalid=!0):nt("A selector must be created from a string; found "))},ts=es.prototype;[Ko,Jo].forEach(function(e){return me(ts,e)}),ts.text=function(){return this.inputText},ts.size=function(){return this.length},ts.eq=function(e){return this[e]},ts.sameText=function(e){return!this.invalid&&!e.invalid&&this.text()===e.text()},ts.addQuery=function(e){this[this.length++]=e},ts.selector=ts.toString;var ns={allAre:function(e){var t=new es(e);return this.every(function(e){return t.matches(e)})},is:function(e){var t=new es(e);return this.some(function(e){return t.matches(e)})},some:function(e,t){for(var n=0;n<this.length;n++){if(t?e.apply(t,[this[n],n,this]):e(this[n],n,this))return!0}return!1},every:function(e,t){for(var n=0;n<this.length;n++){if(!(t?e.apply(t,[this[n],n,this]):e(this[n],n,this)))return!1}return!0},same:function(e){if(this===e)return!0;e=this.cy().collection(e);var t=this.length;return t===e.length&&(1===t?this[0]===e[0]:this.every(function(t){return e.hasElementWithId(t.id())}))},anySame:function(e){return e=this.cy().collection(e),this.some(function(t){return e.hasElementWithId(t.id())})},allAreNeighbors:function(e){e=this.cy().collection(e);var t=this.neighborhood();return e.every(function(e){return t.hasElementWithId(e.id())})},contains:function(e){e=this.cy().collection(e);var t=this;return e.every(function(e){return t.hasElementWithId(e.id())})}};ns.allAreNeighbours=ns.allAreNeighbors,ns.has=ns.contains,ns.equal=ns.equals=ns.same;var rs,as,is=function(e,t){return function(n,r,a,i){var o,s=n,l=this;if(null==s?o="":ee(s)&&1===s.length&&(o=s.id()),1===l.length&&o){var u=l[0]._private,c=u.traversalCache=u.traversalCache||{},d=c[t]=c[t]||[],h=We(o),f=d[h];return f||(d[h]=e.call(l,n,r,a,i))}return e.call(l,n,r,a,i)}},os={parent:function(e){var t=[];if(1===this.length){var n=this[0]._private.parent;if(n)return n}for(var r=0;r<this.length;r++){var a=this[r]._private.parent;a&&t.push(a)}return this.spawn(t,!0).filter(e)},parents:function(e){for(var t=[],n=this.parent();n.nonempty();){for(var r=0;r<n.length;r++){var a=n[r];t.push(a)}n=n.parent()}return this.spawn(t,!0).filter(e)},commonAncestors:function(e){for(var t,n=0;n<this.length;n++){var r=this[n].parents();t=(t=t||r).intersect(r)}return t.filter(e)},orphans:function(e){return this.stdFilter(function(e){return e.isOrphan()}).filter(e)},nonorphans:function(e){return this.stdFilter(function(e){return e.isChild()}).filter(e)},children:is(function(e){for(var t=[],n=0;n<this.length;n++)for(var r=this[n]._private.children,a=0;a<r.length;a++)t.push(r[a]);return this.spawn(t,!0).filter(e)},"children"),siblings:function(e){return this.parent().children().not(this).filter(e)},isParent:function(){var e=this[0];if(e)return e.isNode()&&0!==e._private.children.length},isChildless:function(){var e=this[0];if(e)return e.isNode()&&0===e._private.children.length},isChild:function(){var e=this[0];if(e)return e.isNode()&&null!=e._private.parent},isOrphan:function(){var e=this[0];if(e)return e.isNode()&&null==e._private.parent},descendants:function(e){var t=[];return function e(n){for(var r=0;r<n.length;r++){var a=n[r];t.push(a),a.children().nonempty()&&e(a.children())}}(this.children()),this.spawn(t,!0).filter(e)}};function ss(e,t,n,r){for(var a=[],i=new vt,o=e.cy().hasCompoundNodes(),s=0;s<e.length;s++){var l=e[s];n?a.push(l):o&&r(a,i,l)}for(;a.length>0;){var u=a.shift();t(u),i.add(u.id()),o&&r(a,i,u)}return e}function ls(e,t,n){if(n.isParent())for(var r=n._private.children,a=0;a<r.length;a++){var i=r[a];t.has(i.id())||e.push(i)}}function us(e,t,n){if(n.isChild()){var r=n._private.parent;t.has(r.id())||e.push(r)}}function cs(e,t,n){us(e,t,n),ls(e,t,n)}os.forEachDown=function(e){return ss(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],ls)},os.forEachUp=function(e){return ss(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],us)},os.forEachUpAndDown=function(e){return ss(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],cs)},os.ancestors=os.parents,(rs=as={data:vo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:vo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:vo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:vo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:vo.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:vo.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=rs.data,rs.removeAttr=rs.removeData;var ds,hs,fs=as,ps={};function gs(e){return function(t){var n=this;if(void 0===t&&(t=!0),0!==n.length&&n.isNode()&&!n.removed()){for(var r=0,a=n[0],i=a._private.edges,o=0;o<i.length;o++){var s=i[o];!t&&s.isLoop()||(r+=e(a,s))}return r}}}function vs(e,t){return function(n){for(var r,a=this.nodes(),i=0;i<a.length;i++){var o=a[i][e](n);void 0===o||void 0!==r&&!t(o,r)||(r=o)}return r}}me(ps,{degree:gs(function(e,t){return t.source().same(t.target())?2:1}),indegree:gs(function(e,t){return t.target().same(e)?1:0}),outdegree:gs(function(e,t){return t.source().same(e)?1:0})}),me(ps,{minDegree:vs("degree",function(e,t){return e<t}),maxDegree:vs("degree",function(e,t){return e>t}),minIndegree:vs("indegree",function(e,t){return e<t}),maxIndegree:vs("indegree",function(e,t){return e>t}),minOutdegree:vs("outdegree",function(e,t){return e<t}),maxOutdegree:vs("outdegree",function(e,t){return e>t})}),me(ps,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r<n.length;r++)t+=n[r].degree(e);return t}});var ys=function(e,t,n){for(var r=0;r<e.length;r++){var a=e[r];if(!a.locked()){var i=a._private.position,o={x:null!=t.x?t.x-i.x:0,y:null!=t.y?t.y-i.y:0};!a.isParent()||0===o.x&&0===o.y||a.children().shift(o,n),a.dirtyBoundingBoxCache()}}},ms={field:"position",bindingEvent:"position",allowBinding:!0,allowSetting:!0,settingEvent:"position",settingTriggersEvent:!0,triggerFnName:"emitAndNotify",allowGetting:!0,validKeys:["x","y"],beforeGet:function(e){e.updateCompoundBounds()},beforeSet:function(e,t){ys(e,t,!1)},onSet:function(e){e.dirtyCompoundBoundsCache()},canSet:function(e){return!e.locked()}};ds=hs={position:vo.data(ms),silentPosition:vo.data(me({},ms,{allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!1,beforeSet:function(e,t){ys(e,t,!0)},onSet:function(e){e.dirtyCompoundBoundsCache()}})),positions:function(e,t){if($(e))t?this.silentPosition(e):this.position(e);else if(G(e)){var n=e,r=this.cy();r.startBatch();for(var a=0;a<this.length;a++){var i,o=this[a];(i=n(o,a))&&(t?o.silentPosition(i):o.position(i))}r.endBatch()}return this},silentPositions:function(e){return this.positions(e,!0)},shift:function(e,t,n){var r;if($(e)?(r={x:Q(e.x)?e.x:0,y:Q(e.y)?e.y:0},n=t):K(e)&&Q(t)&&((r={x:0,y:0})[e]=t),null!=r){var a=this.cy();a.startBatch();for(var i=0;i<this.length;i++){var o=this[i];if(!(a.hasCompoundNodes()&&o.isChild()&&o.ancestors().anySame(this))){var s=o.position(),l={x:s.x+r.x,y:s.y+r.y};n?o.silentPosition(l):o.position(l)}}a.endBatch()}return this},silentShift:function(e,t){return $(e)?this.shift(e,!0):K(e)&&Q(t)&&this.shift(e,t,!0),this},renderedPosition:function(e,t){var n=this[0],r=this.cy(),a=r.zoom(),i=r.pan(),o=$(e)?e:void 0,s=void 0!==o||void 0!==t&&K(e);if(n&&n.isNode()){if(!s){var l=n.position();return o=Ft(l,a,i),void 0===e?o:o[e]}for(var u=0;u<this.length;u++){var c=this[u];void 0!==t?c.position(e,(t-i[e])/a):void 0!==o&&c.position(jt(o,a,i))}}else if(!s)return;return this},relativePosition:function(e,t){var n=this[0],r=this.cy(),a=$(e)?e:void 0,i=void 0!==a||void 0!==t&&K(e),o=r.hasCompoundNodes();if(n&&n.isNode()){if(!i){var s=n.position(),l=o?n.parent():null,u=l&&l.length>0,c=u;u&&(l=l[0]);var d=c?l.position():{x:0,y:0};return a={x:s.x-d.x,y:s.y-d.y},void 0===e?a:a[e]}for(var h=0;h<this.length;h++){var f=this[h],p=o?f.parent():null,g=p&&p.length>0,v=g;g&&(p=p[0]);var y=v?p.position():{x:0,y:0};void 0!==t?f.position(e,t+y[e]):void 0!==a&&f.position({x:a.x+y.x,y:a.y+y.y})}}else if(!i)return;return this}},ds.modelPosition=ds.point=ds.position,ds.modelPositions=ds.points=ds.positions,ds.renderedPoint=ds.renderedPosition,ds.relativePoint=ds.relativePosition;var bs,xs,ws=hs;bs=xs={},xs.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),a=n.pan(),i=t.x1*r+a.x,o=t.x2*r+a.x,s=t.y1*r+a.y,l=t.y2*r+a.y;return{x1:i,x2:o,y1:s,y2:l,w:o-i,h:l-s}},xs.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp(function(t){if(t.isParent()){var n=t._private;n.compoundBoundsClean=!1,n.bbCache=null,e||t.emitAndNotify("bounds")}}),this):this},xs.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function n(e){if(e.isParent()){var t=e._private,n=e.children(),r="include"===e.pstyle("compound-sizing-wrt-labels").value,a={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},i=n.boundingBox({includeLabels:r,includeOverlays:!1,useCache:!1}),o=t.position;0!==i.w&&0!==i.h||((i={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=o.x-i.w/2,i.x2=o.x+i.w/2,i.y1=o.y-i.h/2,i.y2=o.y+i.h/2);var s=a.width.left.value;"px"===a.width.left.units&&a.width.val>0&&(s=100*s/a.width.val);var l=a.width.right.value;"px"===a.width.right.units&&a.width.val>0&&(l=100*l/a.width.val);var u=a.height.top.value;"px"===a.height.top.units&&a.height.val>0&&(u=100*u/a.height.val);var c=a.height.bottom.value;"px"===a.height.bottom.units&&a.height.val>0&&(c=100*c/a.height.val);var d=y(a.width.val-i.w,s,l),h=d.biasDiff,f=d.biasComplementDiff,p=y(a.height.val-i.h,u,c),g=p.biasDiff,v=p.biasComplementDiff;t.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(i.w,i.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(i.w,a.width.val),o.x=(-h+i.x1+i.x2+f)/2,t.autoHeight=Math.max(i.h,a.height.val),o.y=(-g+i.y1+i.y2+v)/2}function y(e,t,n){var r=0,a=0,i=t+n;return e>0&&i>0&&(r=t/i*e,a=n/i*e),{biasDiff:r,biasComplementDiff:a}}}for(var r=0;r<this.length;r++){var a=this[r],i=a._private;i.compoundBoundsClean&&!e||(n(a),t.batching()||(i.compoundBoundsClean=!0))}return this};var Es=function(e){return e===1/0||e===-1/0?0:e},ks=function(e,t,n,r,a){r-t!==0&&a-n!==0&&null!=t&&null!=n&&null!=r&&null!=a&&(e.x1=t<e.x1?t:e.x1,e.x2=r>e.x2?r:e.x2,e.y1=n<e.y1?n:e.y1,e.y2=a>e.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},Ts=function(e,t){return null==t?e:ks(e,t.x1,t.y1,t.x2,t.y2)},Cs=function(e,t,n){return ht(e,t,n)},Ps=function(e,t,n){if(!t.cy().headless()){var r,a,i=t._private,o=i.rstyle,s=o.arrowWidth/2;if("none"!==t.pstyle(n+"-arrow-shape").value){"source"===n?(r=o.srcX,a=o.srcY):"target"===n?(r=o.tgtX,a=o.tgtY):(r=o.midX,a=o.midY);var l=i.arrowBounds=i.arrowBounds||{},u=l[n]=l[n]||{};u.x1=r-s,u.y1=a-s,u.x2=r+s,u.y2=a+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,tn(u,1),ks(e,u.x1,u.y1,u.x2,u.y2)}}},Ss=function(e,t,n){if(!t.cy().headless()){var r;r=n?n+"-":"";var a=t._private,i=a.rstyle;if(t.pstyle(r+"label").strValue){var o,s,l,u,c=t.pstyle("text-halign"),d=t.pstyle("text-valign"),h=Cs(i,"labelWidth",n),f=Cs(i,"labelHeight",n),p=Cs(i,"labelX",n),g=Cs(i,"labelY",n),v=t.pstyle(r+"text-margin-x").pfValue,y=t.pstyle(r+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle(r+"text-rotation"),x=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue/2,E=t.pstyle("text-background-padding").pfValue,k=f,T=h,C=T/2,P=k/2;if(m)o=p-C,s=p+C,l=g-P,u=g+P;else{switch(c.value){case"left":o=p-T,s=p;break;case"center":o=p-C,s=p+C;break;case"right":o=p,s=p+T}switch(d.value){case"top":l=g-k,u=g;break;case"center":l=g-P,u=g+P;break;case"bottom":l=g,u=g+k}}var S=v-Math.max(x,w)-E-2,B=v+Math.max(x,w)+E+2,D=y-Math.max(x,w)-E-2,_=y+Math.max(x,w)+E+2;o+=S,s+=B,l+=D,u+=_;var A=n||"main",M=a.labelBounds,R=M[A]=M[A]||{};R.x1=o,R.y1=l,R.x2=s,R.y2=u,R.w=s-o,R.h=u-l,R.leftPad=S,R.rightPad=B,R.topPad=D,R.botPad=_;var I=m&&"autorotate"===b.strValue,N=null!=b.pfValue&&0!==b.pfValue;if(I||N){var L=I?Cs(a.rstyle,"labelAngle",n):b.pfValue,z=Math.cos(L),O=Math.sin(L),V=(o+s)/2,F=(l+u)/2;if(!m){switch(c.value){case"left":V=s;break;case"right":V=o}switch(d.value){case"top":F=u;break;case"bottom":F=l}}var j=function(e,t){return{x:(e-=V)*z-(t-=F)*O+V,y:e*O+t*z+F}},X=j(o,l),q=j(o,u),Y=j(s,l),W=j(s,u);o=Math.min(X.x,q.x,Y.x,W.x),s=Math.max(X.x,q.x,Y.x,W.x),l=Math.min(X.y,q.y,Y.y,W.y),u=Math.max(X.y,q.y,Y.y,W.y)}var U=A+"Rot",H=M[U]=M[U]||{};H.x1=o,H.y1=l,H.x2=s,H.y2=u,H.w=s-o,H.h=u-l,ks(e,o,l,s,u),ks(a.labelBounds.all,o,l,s,u)}return e}},Bs=function(e,t){var n,r,a,i,o,s,l,u=e._private.cy,c=u.styleEnabled(),d=u.headless(),h=Qt(),f=e._private,p=e.isNode(),g=e.isEdge(),v=f.rstyle,y=p&&c?e.pstyle("bounds-expansion").pfValue:[0],m=function(e){return"none"!==e.pstyle("display").value},b=!c||m(e)&&(!g||m(e.source())&&m(e.target()));if(b){var x=0;c&&t.includeOverlays&&0!==e.pstyle("overlay-opacity").value&&(x=e.pstyle("overlay-padding").value);var w=0;c&&t.includeUnderlays&&0!==e.pstyle("underlay-opacity").value&&(w=e.pstyle("underlay-padding").value);var E=Math.max(x,w),k=0;if(c&&(k=e.pstyle("width").pfValue/2),p&&t.includeNodes){var T=e.position();o=T.x,s=T.y;var C=e.outerWidth()/2,P=e.outerHeight()/2;ks(h,n=o-C,a=s-P,r=o+C,i=s+P),c&&t.includeOutlines&&function(e,t){if(!t.cy().headless()){var n,r,a,i=t.pstyle("outline-opacity").value,o=t.pstyle("outline-width").value;if(i>0&&o>0){var s=t.pstyle("outline-offset").value,l=t.pstyle("shape").value,u=o+s,c=(e.w+2*u)/e.w,d=(e.h+2*u)/e.h,h=0;["diamond","pentagon","round-triangle"].includes(l)?(c=(e.w+2.4*u)/e.w,h=-u/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(l)?c=(e.w+2.4*u)/e.w:"star"===l?(c=(e.w+2.8*u)/e.w,d=(e.h+2.6*u)/e.h,h=-u/3.8):"triangle"===l?(c=(e.w+2.8*u)/e.w,d=(e.h+2.4*u)/e.h,h=-u/1.4):"vee"===l&&(c=(e.w+4.4*u)/e.w,d=(e.h+3.8*u)/e.h,h=.5*-u);var f=e.h*d-e.h,p=e.w*c-e.w;if(nn(e,[Math.ceil(f/2),Math.ceil(p/2)]),0!==h){var g=(r=0,a=h,{x1:(n=e).x1+r,x2:n.x2+r,y1:n.y1+a,y2:n.y2+a,w:n.w,h:n.h});Jt(e,g)}}}}(h,e)}else if(g&&t.includeEdges)if(c&&!d){var S=e.pstyle("curve-style").strValue;if(n=Math.min(v.srcX,v.midX,v.tgtX),r=Math.max(v.srcX,v.midX,v.tgtX),a=Math.min(v.srcY,v.midY,v.tgtY),i=Math.max(v.srcY,v.midY,v.tgtY),ks(h,n-=k,a-=k,r+=k,i+=k),"haystack"===S){var B=v.haystackPts;if(B&&2===B.length){if(n=B[0].x,a=B[0].y,n>(r=B[1].x)){var D=n;n=r,r=D}if(a>(i=B[1].y)){var _=a;a=i,i=_}ks(h,n-k,a-k,r+k,i+k)}}else if("bezier"===S||"unbundled-bezier"===S||S.endsWith("segments")||S.endsWith("taxi")){var A;switch(S){case"bezier":case"unbundled-bezier":A=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":A=v.linePts}if(null!=A)for(var M=0;M<A.length;M++){var R=A[M];n=R.x-k,r=R.x+k,a=R.y-k,i=R.y+k,ks(h,n,a,r,i)}}}else{var I=e.source().position(),N=e.target().position();if((n=I.x)>(r=N.x)){var L=n;n=r,r=L}if((a=I.y)>(i=N.y)){var z=a;a=i,i=z}ks(h,n-=k,a-=k,r+=k,i+=k)}if(c&&t.includeEdges&&g&&(Ps(h,e,"mid-source"),Ps(h,e,"mid-target"),Ps(h,e,"source"),Ps(h,e,"target")),c)if("yes"===e.pstyle("ghost").value){var O=e.pstyle("ghost-offset-x").pfValue,V=e.pstyle("ghost-offset-y").pfValue;ks(h,h.x1+O,h.y1+V,h.x2+O,h.y2+V)}var F=f.bodyBounds=f.bodyBounds||{};rn(F,h),nn(F,y),tn(F,1),c&&(n=h.x1,r=h.x2,a=h.y1,i=h.y2,ks(h,n-E,a-E,r+E,i+E));var j=f.overlayBounds=f.overlayBounds||{};rn(j,h),nn(j,y),tn(j,1);var X=f.labelBounds=f.labelBounds||{};null!=X.all?((l=X.all).x1=1/0,l.y1=1/0,l.x2=-1/0,l.y2=-1/0,l.w=0,l.h=0):X.all=Qt(),c&&t.includeLabels&&(t.includeMainLabels&&Ss(h,e,null),g&&(t.includeSourceLabels&&Ss(h,e,"source"),t.includeTargetLabels&&Ss(h,e,"target")))}return h.x1=Es(h.x1),h.y1=Es(h.y1),h.x2=Es(h.x2),h.y2=Es(h.y2),h.w=Es(h.x2-h.x1),h.h=Es(h.y2-h.y1),h.w>0&&h.h>0&&b&&(nn(h,y),tn(h,1)),h},Ds=function(e){var t=0,n=function(e){return(e?1:0)<<t++},r=0;return r+=n(e.incudeNodes),r+=n(e.includeEdges),r+=n(e.includeLabels),r+=n(e.includeMainLabels),r+=n(e.includeSourceLabels),r+=n(e.includeTargetLabels),r+=n(e.includeOverlays),r+=n(e.includeOutlines)},_s=function(e){var t=function(e){return Math.round(e)};if(e.isEdge()){var n=e.source().position(),r=e.target().position();return Ye([t(n.x),t(n.y),t(r.x),t(r.y)])}var a=e.position();return Ye([t(a.x),t(a.y)])},As=function(e,t){var n,r=e._private,a=e.isEdge(),i=(null==t?Rs:Ds(t))===Rs;if(null==r.bbCache?(n=Bs(e,Ms),r.bbCache=n,r.bbCachePosKey=_s(e)):n=r.bbCache,!i){var o=e.isNode();n=Qt(),(t.includeNodes&&o||t.includeEdges&&!o)&&(t.includeOverlays?Ts(n,r.overlayBounds):Ts(n,r.bodyBounds)),t.includeLabels&&(t.includeMainLabels&&(!a||t.includeSourceLabels&&t.includeTargetLabels)?Ts(n,r.labelBounds.all):(t.includeMainLabels&&Ts(n,r.labelBounds.mainRot),t.includeSourceLabels&&Ts(n,r.labelBounds.sourceRot),t.includeTargetLabels&&Ts(n,r.labelBounds.targetRot))),n.w=n.x2-n.x1,n.h=n.y2-n.y1}return n},Ms={includeNodes:!0,includeEdges:!0,includeLabels:!0,includeMainLabels:!0,includeSourceLabels:!0,includeTargetLabels:!0,includeOverlays:!0,includeUnderlays:!0,includeOutlines:!0,useCache:!0},Rs=Ds(Ms),Is=ut(Ms);xs.boundingBox=function(e){var t,n=void 0===e||void 0===e.useCache||!0===e.useCache,r=se(function(e){var t=e._private;return null==t.bbCache||t.styleDirty||t.bbCachePosKey!==_s(e)},function(e){return e.id()});if(n&&1===this.length&&!r(this[0]))e=void 0===e?Ms:Is(e),t=As(this[0],e);else{t=Qt();var a=Is(e=e||Ms),i=this,o=i.cy().styleEnabled();this.edges().forEach(r),this.nodes().forEach(r),o&&this.recalculateRenderedStyle(n),this.updateCompoundBounds(!n);for(var s=0;s<i.length;s++){var l=i[s];r(l)&&l.dirtyBoundingBoxCache(),Ts(t,As(l,a))}}return t.x1=Es(t.x1),t.y1=Es(t.y1),t.x2=Es(t.x2),t.y2=Es(t.y2),t.w=Es(t.x2-t.x1),t.h=Es(t.y2-t.y1),t},xs.dirtyBoundingBoxCache=function(){for(var e=0;e<this.length;e++){var t=this[e]._private;t.bbCache=null,t.bbCachePosKey=null,t.bodyBounds=null,t.overlayBounds=null,t.labelBounds.all=null,t.labelBounds.source=null,t.labelBounds.target=null,t.labelBounds.main=null,t.labelBounds.sourceRot=null,t.labelBounds.targetRot=null,t.labelBounds.mainRot=null,t.arrowBounds.source=null,t.arrowBounds.target=null,t.arrowBounds["mid-source"]=null,t.arrowBounds["mid-target"]=null}return this.emitAndNotify("bounds"),this},xs.boundingBoxAt=function(e){var t=this.nodes(),n=this.cy(),r=n.hasCompoundNodes(),a=n.collection();if(r&&(a=t.filter(function(e){return e.isParent()}),t=t.not(a)),$(e)){var i=e;e=function(){return i}}n.startBatch(),t.forEach(function(t,n){return t._private.bbAtOldPos=e(t,n)}).silentPositions(e),r&&(a.dirtyCompoundBoundsCache(),a.dirtyBoundingBoxCache(),a.updateCompoundBounds(!0));var o=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}}(this.boundingBox({useCache:!1}));return t.silentPositions(function(e){return e._private.bbAtOldPos}),r&&(a.dirtyCompoundBoundsCache(),a.dirtyBoundingBoxCache(),a.updateCompoundBounds(!0)),n.endBatch(),o},bs.boundingbox=bs.bb=bs.boundingBox,bs.renderedBoundingbox=bs.renderedBoundingBox;var Ns,Ls,zs=xs;Ns=Ls={};var Os=function(e){e.uppercaseName=de(e.name),e.autoName="auto"+e.uppercaseName,e.labelName="label"+e.uppercaseName,e.outerName="outer"+e.uppercaseName,e.uppercaseOuterName=de(e.outerName),Ns[e.name]=function(){var t=this[0],n=t._private,r=n.cy._private.styleEnabled;if(t){if(r){if(t.isParent())return t.updateCompoundBounds(),n[e.autoName]||0;var a=t.pstyle(e.name);return"label"===a.strValue?(t.recalculateRenderedStyle(),n.rstyle[e.labelName]||0):a.pfValue}return 1}},Ns["outer"+e.uppercaseName]=function(){var t=this[0],n=t._private.cy._private.styleEnabled;if(t){if(n){var r=t[e.name](),a=t.pstyle("border-position").value;return r+("center"===a?t.pstyle("border-width").pfValue:"outside"===a?2*t.pstyle("border-width").pfValue:0)+2*t.padding()}return 1}},Ns["rendered"+e.uppercaseName]=function(){var t=this[0];if(t)return t[e.name]()*this.cy().zoom()},Ns["rendered"+e.uppercaseOuterName]=function(){var t=this[0];if(t)return t[e.outerName]()*this.cy().zoom()}};Os({name:"width"}),Os({name:"height"}),Ls.padding=function(){var e=this[0],t=e._private;return e.isParent()?(e.updateCompoundBounds(),void 0!==t.autoPadding?t.autoPadding:e.pstyle("padding").pfValue):e.pstyle("padding").pfValue},Ls.paddedHeight=function(){var e=this[0];return e.height()+2*e.padding()},Ls.paddedWidth=function(){var e=this[0];return e.width()+2*e.padding()};var Vs=Ls,Fs={controlPoints:{get:function(e){return e.renderer().getControlPoints(e)},mult:!0},segmentPoints:{get:function(e){return e.renderer().getSegmentPoints(e)},mult:!0},sourceEndpoint:{get:function(e){return e.renderer().getSourceEndpoint(e)}},targetEndpoint:{get:function(e){return e.renderer().getTargetEndpoint(e)}},midpoint:{get:function(e){return e.renderer().getEdgeMidpoint(e)}}},js=Object.keys(Fs).reduce(function(e,t){var n=Fs[t],r=function(e){return"rendered"+e[0].toUpperCase()+e.substr(1)}(t);return e[t]=function(){return function(e,t){if(e.isEdge()&&e.takesUpSpace())return t(e)}(this,n.get)},n.mult?e[r]=function(){return function(e,t){if(e.isEdge()&&e.takesUpSpace()){var n=e.cy(),r=n.pan(),a=n.zoom();return t(e).map(function(e){return Ft(e,a,r)})}}(this,n.get)}:e[r]=function(){return function(e,t){if(e.isEdge()&&e.takesUpSpace()){var n=e.cy();return Ft(t(e),n.zoom(),n.pan())}}(this,n.get)},e},{}),Xs=me({},ws,zs,Vs,js),qs=function(e,t){this.recycle(e,t)};function Ys(){return!1}function Ws(){return!0}qs.prototype={instanceString:function(){return"event"},recycle:function(e,t){if(this.isImmediatePropagationStopped=this.isPropagationStopped=this.isDefaultPrevented=Ys,null!=e&&e.preventDefault?(this.type=e.type,this.isDefaultPrevented=e.defaultPrevented?Ws:Ys):null!=e&&e.type?t=e:this.type=e,null!=t&&(this.originalEvent=t.originalEvent,this.type=null!=t.type?t.type:this.type,this.cy=t.cy,this.target=t.target,this.position=t.position,this.renderedPosition=t.renderedPosition,this.namespace=t.namespace,this.layout=t.layout),null!=this.cy&&null!=this.position&&null==this.renderedPosition){var n=this.position,r=this.cy.zoom(),a=this.cy.pan();this.renderedPosition={x:n.x*r+a.x,y:n.y*r+a.y}}this.timeStamp=e&&e.timeStamp||Date.now()},preventDefault:function(){this.isDefaultPrevented=Ws;var e=this.originalEvent;e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){this.isPropagationStopped=Ws;var e=this.originalEvent;e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Ws,this.stopPropagation()},isDefaultPrevented:Ys,isPropagationStopped:Ys,isImmediatePropagationStopped:Ys};var Us=/^([^.]+)(\.(?:[^.]+))?$/,Hs={qualifierCompare:function(e,t){return e===t},eventMatches:function(){return!0},addEventFields:function(){},callbackContext:function(e){return e},beforeEmit:function(){},afterEmit:function(){},bubble:function(){return!1},parent:function(){return null},context:null},Ks=Object.keys(Hs),Gs={};function Zs(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Gs,t=arguments.length>1?arguments[1]:void 0,n=0;n<Ks.length;n++){var r=Ks[n];this[r]=e[r]||Hs[r]}this.context=t||this.context,this.listeners=[],this.emitting=0}var $s=Zs.prototype,Qs=function(e,t,n,r,a,i,o){G(r)&&(a=r,r=null),o&&(i=null==i?o:me({},i,o));for(var s=Z(n)?n:n.split(/\s+/),l=0;l<s.length;l++){var u=s[l];if(!ie(u)){var c=u.match(Us);if(c)if(!1===t(e,u,c[1],c[2]?c[2]:null,r,a,i))break}}},Js=function(e,t){return e.addEventFields(e.context,t),new qs(t.type,t)},el=function(e,t,n){if("event"!==H(n))if($(n))t(e,Js(e,n));else for(var r=Z(n)?n:n.split(/\s+/),a=0;a<r.length;a++){var i=r[a];if(!ie(i)){var o=i.match(Us);if(o){var s=o[1],l=o[2]?o[2]:null;t(e,Js(e,{type:s,namespace:l,target:e.context}))}}}else t(e,n)};$s.on=$s.addListener=function(e,t,n,r,a){return Qs(this,function(e,t,n,r,a,i,o){G(i)&&e.listeners.push({event:t,callback:i,type:n,namespace:r,qualifier:a,conf:o})},e,t,n,r,a),this},$s.one=function(e,t,n,r){return this.on(e,t,n,r,{one:!0})},$s.removeListener=$s.off=function(e,t,n,r){var a=this;0!==this.emitting&&(this.listeners=this.listeners.slice());for(var i=this.listeners,o=function(o){var s=i[o];Qs(a,function(t,n,r,a,l,u){if((s.type===r||"*"===e)&&(!a&&".*"!==s.namespace||s.namespace===a)&&(!l||t.qualifierCompare(s.qualifier,l))&&(!u||s.callback===u))return i.splice(o,1),!1},e,t,n,r)},s=i.length-1;s>=0;s--)o(s);return this},$s.removeAllListeners=function(){return this.removeListener("*")},$s.emit=$s.trigger=function(e,t,n){var r=this.listeners,a=r.length;return this.emitting++,Z(t)||(t=[t]),el(this,function(e,i){null!=n&&(r=[{event:i.event,type:i.type,namespace:i.namespace,callback:n}],a=r.length);for(var o=function(){var n=r[s];if(n.type===i.type&&(!n.namespace||n.namespace===i.namespace||".*"===n.namespace)&&e.eventMatches(e.context,n,i)){var a=[i];null!=t&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];e.push(r)}}(a,t),e.beforeEmit(e.context,n,i),n.conf&&n.conf.one&&(e.listeners=e.listeners.filter(function(e){return e!==n}));var o=e.callbackContext(e.context,n,i),l=n.callback.apply(o,a);e.afterEmit(e.context,n,i),!1===l&&(i.stopPropagation(),i.preventDefault())}},s=0;s<a;s++)o();e.bubble(e.context)&&!i.isPropagationStopped()&&e.parent(e.context).emit(i,t)},e),this.emitting--,this};var tl={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&te(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e.cy(),t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e},beforeEmit:function(e,t){t.conf&&t.conf.once&&t.conf.onceCollection.removeListener(t.event,t.qualifier,t.callback)},bubble:function(){return!0},parent:function(e){return e.isChild()?e.parent():e.cy()}},nl=function(e){return K(e)?new es(e):e},rl={createEmitter:function(){for(var e=0;e<this.length;e++){var t=this[e],n=t._private;n.emitter||(n.emitter=new Zs(tl,t))}return this},emitter:function(){return this._private.emitter},on:function(e,t,n){for(var r=nl(t),a=0;a<this.length;a++){this[a].emitter().on(e,r,n)}return this},removeListener:function(e,t,n){for(var r=nl(t),a=0;a<this.length;a++){this[a].emitter().removeListener(e,r,n)}return this},removeAllListeners:function(){for(var e=0;e<this.length;e++){this[e].emitter().removeAllListeners()}return this},one:function(e,t,n){for(var r=nl(t),a=0;a<this.length;a++){this[a].emitter().one(e,r,n)}return this},once:function(e,t,n){for(var r=nl(t),a=0;a<this.length;a++){this[a].emitter().on(e,r,n,{once:!0,onceCollection:this})}},emit:function(e,t){for(var n=0;n<this.length;n++){this[n].emitter().emit(e,t)}return this},emitAndNotify:function(e,t){if(0!==this.length)return this.cy().notify(e,this),this.emit(e,t),this}};vo.eventAliasesOn(rl);var al={nodes:function(e){return this.filter(function(e){return e.isNode()}).filter(e)},edges:function(e){return this.filter(function(e){return e.isEdge()}).filter(e)},byGroup:function(){for(var e=this.spawn(),t=this.spawn(),n=0;n<this.length;n++){var r=this[n];r.isNode()?e.push(r):t.push(r)}return{nodes:e,edges:t}},filter:function(e,t){if(void 0===e)return this;if(K(e)||ee(e))return new es(e).filter(this);if(G(e)){for(var n=this.spawn(),r=this,a=0;a<r.length;a++){var i=r[a];(t?e.apply(t,[i,a,r]):e(i,a,r))&&n.push(i)}return n}return this.spawn()},not:function(e){if(e){K(e)&&(e=this.filter(e));for(var t=this.spawn(),n=0;n<this.length;n++){var r=this[n];e.has(r)||t.push(r)}return t}return this},absoluteComplement:function(){return this.cy().mutableElements().not(this)},intersect:function(e){if(K(e)){var t=e;return this.filter(t)}for(var n=this.spawn(),r=e,a=this.length<e.length,i=a?this:r,o=a?r:this,s=0;s<i.length;s++){var l=i[s];o.has(l)&&n.push(l)}return n},xor:function(e){var t=this._private.cy;K(e)&&(e=t.$(e));var n=this.spawn(),r=e,a=function(e,t){for(var r=0;r<e.length;r++){var a=e[r],i=a._private.data.id;t.hasElementWithId(i)||n.push(a)}};return a(this,r),a(r,this),n},diff:function(e){var t=this._private.cy;K(e)&&(e=t.$(e));var n=this.spawn(),r=this.spawn(),a=this.spawn(),i=e,o=function(e,t,n){for(var r=0;r<e.length;r++){var i=e[r],o=i._private.data.id;t.hasElementWithId(o)?a.merge(i):n.push(i)}};return o(this,i,n),o(i,this,r),{left:n,right:r,both:a}},add:function(e){var t=this._private.cy;if(!e)return this;if(K(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=this.spawnSelf(),a=0;a<e.length;a++){var i=e[a],o=!this.has(i);o&&r.push(i)}return r},merge:function(e){var t=this._private,n=t.cy;if(!e)return this;if(e&&K(e)){var r=e;e=n.mutableElements().filter(r)}for(var a=t.map,i=0;i<e.length;i++){var o=e[i],s=o._private.data.id;if(!a.has(s)){var l=this.length++;this[l]=o,a.set(s,{ele:o,index:l})}}return this},unmergeAt:function(e){var t=this[e].id(),n=this._private.map;this[e]=void 0,n.delete(t);var r=e===this.length-1;if(this.length>1&&!r){var a=this.length-1,i=this[a],o=i._private.data.id;this[a]=void 0,this[e]=i,n.set(o,{ele:i,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,n=e._private.data.id,r=t.map.get(n);if(!r)return this;var a=r.index;return this.unmergeAt(a),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&K(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=0;r<e.length;r++)this.unmergeOne(e[r]);return this},unmergeBy:function(e){for(var t=this.length-1;t>=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var n=[],r=this,a=0;a<r.length;a++){var i=r[a],o=t?e.apply(t,[i,a,r]):e(i,a,r);n.push(o)}return n},reduce:function(e,t){for(var n=t,r=this,a=0;a<r.length;a++)n=e(n,r[a],a,r);return n},max:function(e,t){for(var n,r=-1/0,a=this,i=0;i<a.length;i++){var o=a[i],s=t?e.apply(t,[o,i,a]):e(o,i,a);s>r&&(r=s,n=o)}return{value:r,ele:n}},min:function(e,t){for(var n,r=1/0,a=this,i=0;i<a.length;i++){var o=a[i],s=t?e.apply(t,[o,i,a]):e(o,i,a);s<r&&(r=s,n=o)}return{value:r,ele:n}}},il=al;il.u=il["|"]=il["+"]=il.union=il.or=il.add,il["\\"]=il["!"]=il["-"]=il.difference=il.relativeComplement=il.subtract=il.not,il.n=il["&"]=il["."]=il.and=il.intersection=il.intersect,il["^"]=il["(+)"]=il["(-)"]=il.symmetricDifference=il.symdiff=il.xor,il.fnFilter=il.filterFn=il.stdFilter=il.filter,il.complement=il.abscomp=il.absoluteComplement;var ol=function(e,t){var n=e.cy().hasCompoundNodes();function r(e){var t=e.pstyle("z-compound-depth");return"auto"===t.value?n?e.zDepth():0:"bottom"===t.value?-1:"top"===t.value?$e:0}var a=r(e)-r(t);if(0!==a)return a;function i(e){return"auto"===e.pstyle("z-index-compare").value&&e.isNode()?1:0}var o=i(e)-i(t);if(0!==o)return o;var s=e.pstyle("z-index").value-t.pstyle("z-index").value;return 0!==s?s:e.poolIndex()-t.poolIndex()},sl={forEach:function(e,t){if(G(e))for(var n=this.length,r=0;r<n;r++){var a=this[r];if(!1===(t?e.apply(t,[a,r,this]):e(a,r,this)))break}return this},toArray:function(){for(var e=[],t=0;t<this.length;t++)e.push(this[t]);return e},slice:function(e,t){var n=[],r=this.length;null==t&&(t=r),null==e&&(e=0),e<0&&(e=r+e),t<0&&(t=r+t);for(var a=e;a>=0&&a<t&&a<r;a++)n.push(this[a]);return this.spawn(n)},size:function(){return this.length},eq:function(e){return this[e]||this.spawn()},first:function(){return this[0]||this.spawn()},last:function(){return this[this.length-1]||this.spawn()},empty:function(){return 0===this.length},nonempty:function(){return!this.empty()},sort:function(e){if(!G(e))return this;var t=this.toArray().sort(e);return this.spawn(t)},sortByZIndex:function(){return this.sort(ol)},zDepth:function(){var e=this[0];if(e){var t=e._private;if("nodes"===t.group){var n=t.data.parent?e.parents().size():0;return e.isParent()?n:$e-1}var r=t.source,a=t.target,i=r.zDepth(),o=a.zDepth();return Math.max(i,o,0)}}};sl.each=sl.forEach;var ll;ll="undefined",("undefined"==typeof Symbol?"undefined":d(Symbol))!=ll&&d(Symbol.iterator)!=ll&&(sl[Symbol.iterator]=function(){var e=this,t={value:void 0,done:!1},n=0,r=this.length;return s({next:function(){return n<r?t.value=e[n++]:(t.value=void 0,t.done=!0),t}},Symbol.iterator,function(){return this})});var ul=ut({nodeDimensionsIncludeLabels:!1}),cl={layoutDimensions:function(e){var t;if(e=ul(e),this.takesUpSpace())if(e.nodeDimensionsIncludeLabels){var n=this.boundingBox();t={w:n.w,h:n.h}}else t={w:this.outerWidth(),h:this.outerHeight()};else t={w:0,h:0};return 0!==t.w&&0!==t.h||(t.w=t.h=1),t},layoutPositions:function(e,t,n){var r=this.nodes().filter(function(e){return!e.isParent()}),a=this.cy(),i=t.eles,o=function(e){return e.id()},s=se(n,o);e.emit({type:"layoutstart",layout:e}),e.animations=[];var l=t.spacingFactor&&1!==t.spacingFactor,u=function(){if(!l)return null;for(var e=Qt(),t=0;t<r.length;t++){var n=r[t],a=s(n,t);en(e,a.x,a.y)}return e}(),c=se(function(e,n){var r=s(e,n);l&&(r=function(e,t,n){var r=t.x1+t.w/2,a=t.y1+t.h/2;return{x:r+(n.x-r)*e,y:a+(n.y-a)*e}}(Math.abs(t.spacingFactor),u,r));return null!=t.transform&&(r=t.transform(e,r)),r},o);if(t.animate){for(var d=0;d<r.length;d++){var h=r[d],f=c(h,d);if(null==t.animateFilter||t.animateFilter(h,d)){var p=h.animation({position:f,duration:t.animationDuration,easing:t.animationEasing});e.animations.push(p)}else h.position(f)}if(t.fit){var g=a.animation({fit:{boundingBox:i.boundingBoxAt(c),padding:t.padding},duration:t.animationDuration,easing:t.animationEasing});e.animations.push(g)}else if(void 0!==t.zoom&&void 0!==t.pan){var v=a.animation({zoom:t.zoom,pan:t.pan,duration:t.animationDuration,easing:t.animationEasing});e.animations.push(v)}e.animations.forEach(function(e){return e.play()}),e.one("layoutready",t.ready),e.emit({type:"layoutready",layout:e}),qr.all(e.animations.map(function(e){return e.promise()})).then(function(){e.one("layoutstop",t.stop),e.emit({type:"layoutstop",layout:e})})}else r.positions(c),t.fit&&a.fit(t.eles,t.padding),null!=t.zoom&&a.zoom(t.zoom),t.pan&&a.pan(t.pan),e.one("layoutready",t.ready),e.emit({type:"layoutready",layout:e}),e.one("layoutstop",t.stop),e.emit({type:"layoutstop",layout:e});return this},layout:function(e){return this.cy().makeLayout(me({},e,{eles:this}))}};function dl(e,t,n){var r,a=n._private,i=a.styleCache=a.styleCache||[];return null!=(r=i[e])?r:r=i[e]=t(n)}function hl(e,t){return e=We(e),function(n){return dl(e,t,n)}}function fl(e,t){e=We(e);var n=function(e){return t.call(e)};return function(){var t=this[0];if(t)return dl(e,n,t)}}cl.createLayout=cl.makeLayout=cl.layout;var pl={recalculateRenderedStyle:function(e){var t=this.cy(),n=t.renderer(),r=t.styleEnabled();return n&&r&&n.recalculateRenderedStyle(this,e),this},dirtyStyleCache:function(){var e,t=this.cy(),n=function(e){return e._private.styleCache=null};t.hasCompoundNodes()?((e=this.spawnSelf().merge(this.descendants()).merge(this.parents())).merge(e.connectedEdges()),e.forEach(n)):this.forEach(function(e){n(e),e.connectedEdges().forEach(n)});return this},updateStyle:function(e){var t=this._private.cy;if(!t.styleEnabled())return this;if(t.batching())return t._private.batchStyleEles.merge(this),this;var n=this;e=!(!e&&void 0!==e),t.hasCompoundNodes()&&(n=this.spawnSelf().merge(this.descendants()).merge(this.parents()));var r=n;return e?r.emitAndNotify("style"):r.emit("style"),n.forEach(function(e){return e._private.styleDirty=!0}),this},cleanStyle:function(){var e=this.cy();if(e.styleEnabled())for(var t=0;t<this.length;t++){var n=this[t];n._private.styleDirty&&(n._private.styleDirty=!1,e.style().apply(n))}},parsedStyle:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this[0],r=n.cy();if(r.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,r.style().apply(n));var a=n._private.style[e];return null!=a?a:t?r.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var n=t.pstyle(e);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=this[0];return n?t.style().getRenderedStyle(n,e):void 0},style:function(e,t){var n=this.cy();if(!n.styleEnabled())return this;var r=!1,a=n.style();if($(e)){var i=e;a.applyBypass(this,i,r),this.emitAndNotify("style")}else if(K(e)){if(void 0===t){var o=this[0];return o?a.getStylePropertyValue(o,e):void 0}a.applyBypass(this,e,t,r),this.emitAndNotify("style")}else if(void 0===e){var s=this[0];return s?a.getRawStyle(s):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=!1,r=t.style(),a=this;if(void 0===e)for(var i=0;i<a.length;i++){var o=a[i];r.removeAllBypasses(o,n)}else{e=e.split(/\s+/);for(var s=0;s<a.length;s++){var l=a[s];r.removeBypasses(l,e,n)}}return this.emitAndNotify("style"),this},show:function(){return this.css("display","element"),this},hide:function(){return this.css("display","none"),this},effectiveOpacity:function(){var e=this.cy();if(!e.styleEnabled())return 1;var t=e.hasCompoundNodes(),n=this[0];if(n){var r=n._private,a=n.pstyle("opacity").value;if(!t)return a;var i=r.data.parent?n.parents():null;if(i)for(var o=0;o<i.length;o++){a*=i[o].pstyle("opacity").value}return a}},transparent:function(){if(!this.cy().styleEnabled())return!1;var e=this[0],t=e.cy().hasCompoundNodes();return e?t?0===e.effectiveOpacity():0===e.pstyle("opacity").value:void 0},backgrounding:function(){return!!this.cy().styleEnabled()&&!!this[0]._private.backgrounding}};function gl(e,t){var n=e._private.data.parent?e.parents():null;if(n)for(var r=0;r<n.length;r++){if(!t(n[r]))return!1}return!0}function vl(e){var t=e.ok,n=e.edgeOkViaNode||e.ok,r=e.parentOk||e.ok;return function(){var e=this.cy();if(!e.styleEnabled())return!0;var a=this[0],i=e.hasCompoundNodes();if(a){var o=a._private;if(!t(a))return!1;if(a.isNode())return!i||gl(a,r);var s=o.source,l=o.target;return n(s)&&(!i||gl(s,n))&&(s===l||n(l)&&(!i||gl(l,n)))}}}var yl=hl("eleTakesUpSpace",function(e){return"element"===e.pstyle("display").value&&0!==e.width()&&(!e.isNode()||0!==e.height())});pl.takesUpSpace=fl("takesUpSpace",vl({ok:yl}));var ml=hl("eleInteractive",function(e){return"yes"===e.pstyle("events").value&&"visible"===e.pstyle("visibility").value&&yl(e)}),bl=hl("parentInteractive",function(e){return"visible"===e.pstyle("visibility").value&&yl(e)});pl.interactive=fl("interactive",vl({ok:ml,parentOk:bl,edgeOkViaNode:yl})),pl.noninteractive=function(){var e=this[0];if(e)return!e.interactive()};var xl=hl("eleVisible",function(e){return"visible"===e.pstyle("visibility").value&&0!==e.pstyle("opacity").pfValue&&yl(e)}),wl=yl;pl.visible=fl("visible",vl({ok:xl,edgeOkViaNode:wl})),pl.hidden=function(){var e=this[0];if(e)return!e.visible()},pl.isBundledBezier=fl("isBundledBezier",function(){return!!this.cy().styleEnabled()&&(!this.removed()&&"bezier"===this.pstyle("curve-style").value&&this.takesUpSpace())}),pl.bypass=pl.css=pl.style,pl.renderedCss=pl.renderedStyle,pl.removeBypass=pl.removeCss=pl.removeStyle,pl.pstyle=pl.parsedStyle;var El={};function kl(e){return function(){var t=arguments,n=[];if(2===t.length){var r=t[0],a=t[1];this.on(e.event,r,a)}else if(1===t.length&&G(t[0])){var i=t[0];this.on(e.event,i)}else if(0===t.length||1===t.length&&Z(t[0])){for(var o=1===t.length?t[0]:null,s=0;s<this.length;s++){var l=this[s],u=!e.ableField||l._private[e.ableField],c=l._private[e.field]!=e.value;if(e.overrideAble){var d=e.overrideAble(l);if(void 0!==d&&(u=d,!d))return this}u&&(l._private[e.field]=e.value,c&&n.push(l))}var h=this.spawn(n);h.updateStyle(),h.emit(e.event),o&&h.emit(o)}return this}}function Tl(e){El[e.field]=function(){var t=this[0];if(t){if(e.overrideField){var n=e.overrideField(t);if(void 0!==n)return n}return t._private[e.field]}},El[e.on]=kl({event:e.on,field:e.field,ableField:e.ableField,overrideAble:e.overrideAble,value:!0}),El[e.off]=kl({event:e.off,field:e.field,ableField:e.ableField,overrideAble:e.overrideAble,value:!1})}Tl({field:"locked",overrideField:function(e){return!!e.cy().autolock()||void 0},on:"lock",off:"unlock"}),Tl({field:"grabbable",overrideField:function(e){return!e.cy().autoungrabify()&&!e.pannable()&&void 0},on:"grabify",off:"ungrabify"}),Tl({field:"selected",ableField:"selectable",overrideAble:function(e){return!e.cy().autounselectify()&&void 0},on:"select",off:"unselect"}),Tl({field:"selectable",overrideField:function(e){return!e.cy().autounselectify()&&void 0},on:"selectify",off:"unselectify"}),El.deselect=El.unselect,El.grabbed=function(){var e=this[0];if(e)return e._private.grabbed},Tl({field:"active",on:"activate",off:"unactivate"}),Tl({field:"pannable",on:"panify",off:"unpanify"}),El.inactive=function(){var e=this[0];if(e)return!e._private.active};var Cl={},Pl=function(e){return function(t){for(var n=[],r=0;r<this.length;r++){var a=this[r];if(a.isNode()){for(var i=!1,o=a.connectedEdges(),s=0;s<o.length;s++){var l=o[s],u=l.source(),c=l.target();if(e.noIncomingEdges&&c===a&&u!==a||e.noOutgoingEdges&&u===a&&c!==a){i=!0;break}}i||n.push(a)}}return this.spawn(n,!0).filter(t)}},Sl=function(e){return function(t){for(var n=[],r=0;r<this.length;r++){var a=this[r];if(a.isNode())for(var i=a.connectedEdges(),o=0;o<i.length;o++){var s=i[o],l=s.source(),u=s.target();e.outgoing&&l===a?(n.push(s),n.push(u)):e.incoming&&u===a&&(n.push(s),n.push(l))}}return this.spawn(n,!0).filter(t)}},Bl=function(e){return function(t){for(var n=this,r=[],a={};;){var i=e.outgoing?n.outgoers():n.incomers();if(0===i.length)break;for(var o=!1,s=0;s<i.length;s++){var l=i[s],u=l.id();a[u]||(a[u]=!0,r.push(l),o=!0)}if(!o)break;n=i}return this.spawn(r,!0).filter(t)}};function Dl(e){return function(t){for(var n=[],r=0;r<this.length;r++){var a=this[r]._private[e.attr];a&&n.push(a)}return this.spawn(n,!0).filter(t)}}function _l(e){return function(t){var n=[],r=this._private.cy,a=e||{};K(t)&&(t=r.$(t));for(var i=0;i<t.length;i++)for(var o=t[i]._private.edges,s=0;s<o.length;s++){var l=o[s],u=l._private.data,c=this.hasElementWithId(u.source)&&t.hasElementWithId(u.target),d=t.hasElementWithId(u.source)&&this.hasElementWithId(u.target);if(c||d){if(a.thisIsSrc||a.thisIsTgt){if(a.thisIsSrc&&!c)continue;if(a.thisIsTgt&&!d)continue}n.push(l)}}return this.spawn(n,!0)}}function Al(e){return e=me({},{codirected:!1},e),function(t){for(var n=[],r=this.edges(),a=e,i=0;i<r.length;i++)for(var o=r[i]._private,s=o.source,l=s._private.data.id,u=o.data.target,c=s._private.edges,d=0;d<c.length;d++){var h=c[d],f=h._private.data,p=f.target,g=f.source,v=p===u&&g===l,y=l===p&&u===g;(a.codirected&&v||!a.codirected&&(v||y))&&n.push(h)}return this.spawn(n,!0).filter(t)}}Cl.clearTraversalCache=function(){for(var e=0;e<this.length;e++)this[e]._private.traversalCache=null},me(Cl,{roots:Pl({noIncomingEdges:!0}),leaves:Pl({noOutgoingEdges:!0}),outgoers:is(Sl({outgoing:!0}),"outgoers"),successors:Bl({outgoing:!0}),incomers:is(Sl({incoming:!0}),"incomers"),predecessors:Bl({})}),me(Cl,{neighborhood:is(function(e){for(var t=[],n=this.nodes(),r=0;r<n.length;r++)for(var a=n[r],i=a.connectedEdges(),o=0;o<i.length;o++){var s=i[o],l=s.source(),u=s.target(),c=a===l?u:l;c.length>0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,!0).filter(e)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),Cl.neighbourhood=Cl.neighborhood,Cl.closedNeighbourhood=Cl.closedNeighborhood,Cl.openNeighbourhood=Cl.openNeighborhood,me(Cl,{source:is(function(e){var t,n=this[0];return n&&(t=n._private.source||n.cy().collection()),t&&e?t.filter(e):t},"source"),target:is(function(e){var t,n=this[0];return n&&(t=n._private.target||n.cy().collection()),t&&e?t.filter(e):t},"target"),sources:Dl({attr:"source"}),targets:Dl({attr:"target"})}),me(Cl,{edgesWith:is(_l(),"edgesWith"),edgesTo:is(_l({thisIsSrc:!0}),"edgesTo")}),me(Cl,{connectedEdges:is(function(e){for(var t=[],n=0;n<this.length;n++){var r=this[n];if(r.isNode())for(var a=r._private.edges,i=0;i<a.length;i++){var o=a[i];t.push(o)}}return this.spawn(t,!0).filter(e)},"connectedEdges"),connectedNodes:is(function(e){for(var t=[],n=0;n<this.length;n++){var r=this[n];r.isEdge()&&(t.push(r.source()[0]),t.push(r.target()[0]))}return this.spawn(t,!0).filter(e)},"connectedNodes"),parallelEdges:is(Al(),"parallelEdges"),codirectedEdges:is(Al({codirected:!0}),"codirectedEdges")}),me(Cl,{components:function(e){var t=this,n=t.cy(),r=n.collection(),a=null==e?t.nodes():e.nodes(),i=[];null!=e&&a.empty()&&(a=e.sources());var o=function(e,t){r.merge(e),a.unmerge(e),t.merge(e)};if(a.empty())return t.spawn();var s=function(){var e=n.collection();i.push(e);var r=a[0];o(r,e),t.bfs({directed:!1,roots:r,visit:function(t){return o(t,e)}}),e.forEach(function(n){n.connectedEdges().forEach(function(n){t.has(n)&&e.has(n.source())&&e.has(n.target())&&e.merge(n)})})};do{s()}while(a.length>0);return i},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),Cl.componentsOf=Cl.components;var Ml=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(void 0!==e){var a=new pt,i=!1;if(t){if(t.length>0&&$(t[0])&&!te(t[0])){i=!0;for(var o=[],s=new vt,l=0,u=t.length;l<u;l++){var c=t[l];null==c.data&&(c.data={});var d=c.data;if(null==d.id)d.id=ot();else if(e.hasElementWithId(d.id)||s.has(d.id))continue;var h=new yt(e,c,!1);o.push(h),s.add(d.id)}t=o}}else t=[];this.length=0;for(var f=0,p=t.length;f<p;f++){var g=t[f][0];if(null!=g){var v=g._private.data.id;n&&a.has(v)||(n&&a.set(v,{index:this.length,ele:g}),this[this.length]=g,this.length++)}}this._private={eles:this,cy:e,get map(){return null==this.lazyMap&&this.rebuildMap(),this.lazyMap},set map(e){this.lazyMap=e},rebuildMap:function(){for(var e=this.lazyMap=new pt,t=this.eles,n=0;n<t.length;n++){var r=t[n];e.set(r.id(),{index:n,ele:r})}}},n&&(this._private.map=a),i&&!r&&this.restore()}else nt("A collection must have a reference to the core")},Rl=yt.prototype=Ml.prototype=Object.create(Array.prototype);Rl.instanceString=function(){return"collection"},Rl.spawn=function(e,t){return new Ml(this.cy(),e,t)},Rl.spawnSelf=function(){return this.spawn(this)},Rl.cy=function(){return this._private.cy},Rl.renderer=function(){return this._private.cy.renderer()},Rl.element=function(){return this[0]},Rl.collection=function(){return ne(this)?this:new Ml(this._private.cy,[this])},Rl.unique=function(){return new Ml(this._private.cy,this,!0)},Rl.hasElementWithId=function(e){return e=""+e,this._private.map.has(e)},Rl.getElementById=function(e){e=""+e;var t=this._private.cy,n=this._private.map.get(e);return n?n.ele:new Ml(t)},Rl.$id=Rl.getElementById,Rl.poolIndex=function(){var e=this._private.cy._private.elements,t=this[0]._private.data.id;return e._private.map.get(t).index},Rl.indexOf=function(e){var t=e[0]._private.data.id;return this._private.map.get(t).index},Rl.indexOfId=function(e){return e=""+e,this._private.map.get(e).index},Rl.json=function(e){var t=this.element(),n=this.cy();if(null==t&&e)return this;if(null!=t){var r=t._private;if($(e)){if(n.startBatch(),e.data){t.data(e.data);var a=r.data;if(t.isEdge()){var i=!1,o={},s=e.data.source,l=e.data.target;null!=s&&s!=a.source&&(o.source=""+s,i=!0),null!=l&&l!=a.target&&(o.target=""+l,i=!0),i&&(t=t.move(o))}else{var u="parent"in e.data,c=e.data.parent;!u||null==c&&null==a.parent||c==a.parent||(void 0===c&&(c=null),null!=c&&(c=""+c),t=t.move({parent:c}))}}e.position&&t.position(e.position);var d=function(n,a,i){var o=e[n];null!=o&&o!==r[n]&&(o?t[a]():t[i]())};return d("removed","remove","restore"),d("selected","select","unselect"),d("selectable","selectify","unselectify"),d("locked","lock","unlock"),d("grabbable","grabify","ungrabify"),d("pannable","panify","unpanify"),null!=e.classes&&t.classes(e.classes),n.endBatch(),this}if(void 0===e){var h={data:it(r.data),position:it(r.position),group:r.group,removed:r.removed,selected:r.selected,selectable:r.selectable,locked:r.locked,grabbable:r.grabbable,pannable:r.pannable,classes:null};h.classes="";var f=0;return r.classes.forEach(function(e){return h.classes+=0===f++?e:" "+e}),h}}},Rl.jsons=function(){for(var e=[],t=0;t<this.length;t++){var n=this[t].json();e.push(n)}return e},Rl.clone=function(){for(var e=this.cy(),t=[],n=0;n<this.length;n++){var r=this[n].json(),a=new yt(e,r,!1);t.push(a)}return new Ml(e,t)},Rl.copy=Rl.clone,Rl.restore=function(){for(var e,t,n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=this,i=a.cy(),o=i._private,s=[],l=[],u=0,c=a.length;u<c;u++){var d=a[u];r&&!d.removed()||(d.isNode()?s.push(d):l.push(d))}e=s.concat(l);var h=function(){e.splice(t,1),t--};for(t=0;t<e.length;t++){var f=e[t],p=f._private,g=p.data;if(f.clearTraversalCache(),r||p.removed)if(void 0===g.id)g.id=ot();else if(Q(g.id))g.id=""+g.id;else{if(ie(g.id)||!K(g.id)){nt("Can not create element with invalid string ID `"+g.id+"`"),h();continue}if(i.hasElementWithId(g.id)){nt("Can not create second element with ID `"+g.id+"`"),h();continue}}else;var v=g.id;if(f.isNode()){var y=p.position;null==y.x&&(y.x=0),null==y.y&&(y.y=0)}if(f.isEdge()){for(var m=f,b=["source","target"],x=b.length,w=!1,E=0;E<x;E++){var k=b[E],T=g[k];Q(T)&&(T=g[k]=""+g[k]),null==T||""===T?(nt("Can not create edge `"+v+"` with unspecified "+k),w=!0):i.hasElementWithId(T)||(nt("Can not create edge `"+v+"` with nonexistant "+k+" `"+T+"`"),w=!0)}if(w){h();continue}var C=i.getElementById(g.source),P=i.getElementById(g.target);C.same(P)?C._private.edges.push(m):(C._private.edges.push(m),P._private.edges.push(m)),m._private.source=C,m._private.target=P}p.map=new pt,p.map.set(v,{ele:f,index:0}),p.removed=!1,r&&i.addToPool(f)}for(var S=0;S<s.length;S++){var B=s[S],D=B._private.data;Q(D.parent)&&(D.parent=""+D.parent);var _=D.parent;if(null!=_||B._private.parent){var A=B._private.parent?i.collection().merge(B._private.parent):i.getElementById(_);if(A.empty())D.parent=void 0;else if(A[0].removed())at("Node added with missing parent, reference to parent removed"),D.parent=void 0,B._private.parent=null;else{for(var M=!1,R=A;!R.empty();){if(B.same(R)){M=!0,D.parent=void 0;break}R=R.parent()}M||(A[0]._private.children.push(B),B._private.parent=A[0],o.hasCompoundNodes=!0)}}}if(e.length>0){for(var I=e.length===a.length?a:new Ml(i,e),N=0;N<I.length;N++){var L=I[N];L.isNode()||(L.parallelEdges().clearTraversalCache(),L.source().clearTraversalCache(),L.target().clearTraversalCache())}(o.hasCompoundNodes?i.collection().merge(I).merge(I.connectedNodes()).merge(I.parent()):I).dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(n),n?I.emitAndNotify("add"):r&&I.emit("add")}return a},Rl.removed=function(){var e=this[0];return e&&e._private.removed},Rl.inside=function(){var e=this[0];return e&&!e._private.removed},Rl.remove=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=[],a={},i=n._private.cy;function o(e){var n=a[e.id()];t&&e.removed()||n||(a[e.id()]=!0,e.isNode()?(r.push(e),function(e){for(var t=e._private.edges,n=0;n<t.length;n++)o(t[n])}(e),function(e){for(var t=e._private.children,n=0;n<t.length;n++)o(t[n])}(e)):r.unshift(e))}for(var s=0,l=n.length;s<l;s++){o(n[s])}function u(e,t){var n=e._private.edges;ct(n,t),e.clearTraversalCache()}function c(e){e.clearTraversalCache()}var d=[];function h(e,t){t=t[0];var n=(e=e[0])._private.children,r=e.id();ct(n,t),t._private.parent=null,d.ids[r]||(d.ids[r]=!0,d.push(e))}d.ids={},n.dirtyCompoundBoundsCache(),t&&i.removeFromPool(r);for(var f=0;f<r.length;f++){var p=r[f];if(p.isEdge()){var g=p.source()[0],v=p.target()[0];u(g,p),u(v,p);for(var y=p.parallelEdges(),m=0;m<y.length;m++){var b=y[m];c(b),b.isBundledBezier()&&b.dirtyBoundingBoxCache()}}else{var x=p.parent();0!==x.length&&h(x,p)}t&&(p._private.removed=!0)}var w=i._private.elements;i._private.hasCompoundNodes=!1;for(var E=0;E<w.length;E++){if(w[E].isParent()){i._private.hasCompoundNodes=!0;break}}var k=new Ml(this.cy(),r);k.size()>0&&(e?k.emitAndNotify("remove"):t&&k.emit("remove"));for(var T=0;T<d.length;T++){var C=d[T];t&&C.removed()||C.updateStyle()}return k},Rl.move=function(e){var t=this._private.cy,n=this,r=!1,a=!1,i=function(e){return null==e?e:""+e};if(void 0!==e.source||void 0!==e.target){var o=i(e.source),s=i(e.target),l=null!=o&&t.hasElementWithId(o),u=null!=s&&t.hasElementWithId(s);(l||u)&&(t.batch(function(){n.remove(r,a),n.emitAndNotify("moveout");for(var e=0;e<n.length;e++){var t=n[e],i=t._private.data;t.isEdge()&&(l&&(i.source=o),u&&(i.target=s))}n.restore(r,a)}),n.emitAndNotify("move"))}else if(void 0!==e.parent){var c=i(e.parent);if(null===c||t.hasElementWithId(c)){var d=null===c?void 0:c;t.batch(function(){var e=n.remove(r,a);e.emitAndNotify("moveout");for(var t=0;t<n.length;t++){var i=n[t],o=i._private.data;i.isNode()&&(o.parent=d)}e.restore(r,a)}),n.emitAndNotify("move")}}return this},[Lr,yo,mo,ns,os,fs,ps,Xs,rl,al,{isNode:function(){return"nodes"===this.group()},isEdge:function(){return"edges"===this.group()},isLoop:function(){return this.isEdge()&&this.source()[0]===this.target()[0]},isSimple:function(){return this.isEdge()&&this.source()[0]!==this.target()[0]},group:function(){var e=this[0];if(e)return e._private.group}},sl,cl,pl,El,Cl].forEach(function(e){me(Rl,e)});var Il={add:function(e){var t,n=this;if(ee(e)){var r=e;if(r._private.cy===n)t=r.restore();else{for(var a=[],i=0;i<r.length;i++){var o=r[i];a.push(o.json())}t=new Ml(n,a)}}else if(Z(e)){t=new Ml(n,e)}else if($(e)&&(Z(e.nodes)||Z(e.edges))){for(var s=e,l=[],u=["nodes","edges"],c=0,d=u.length;c<d;c++){var h=u[c],f=s[h];if(Z(f))for(var p=0,g=f.length;p<g;p++){var v=me({group:h},f[p]);l.push(v)}}t=new Ml(n,l)}else{t=new yt(n,e).collection()}return t},remove:function(e){if(ee(e));else if(K(e)){var t=e;e=this.$(t)}return e.remove()}};function Nl(e,t,n,r){var a=.1,i="undefined"!=typeof Float32Array;if(4!==arguments.length)return!1;for(var o=0;o<4;++o)if("number"!=typeof arguments[o]||isNaN(arguments[o])||!isFinite(arguments[o]))return!1;e=Math.min(e,1),n=Math.min(n,1),e=Math.max(e,0),n=Math.max(n,0);var s=i?new Float32Array(11):new Array(11);function l(e,t){return 1-3*t+3*e}function u(e,t){return 3*t-6*e}function c(e){return 3*e}function d(e,t,n){return((l(t,n)*e+u(t,n))*e+c(t))*e}function h(e,t,n){return 3*l(t,n)*e*e+2*u(t,n)*e+c(t)}function f(t){for(var r=0,i=1;10!==i&&s[i]<=t;++i)r+=a;--i;var o=r+(t-s[i])/(s[i+1]-s[i])*a,l=h(o,e,n);return l>=.001?function(t,r){for(var a=0;a<4;++a){var i=h(r,e,n);if(0===i)return r;r-=(d(r,e,n)-t)/i}return r}(t,o):0===l?o:function(t,r,a){var i,o,s=0;do{(i=d(o=r+(a-r)/2,e,n)-t)>0?a=o:r=o}while(Math.abs(i)>1e-7&&++s<10);return o}(t,r,r+a)}var p=!1;function g(){p=!0,e===t&&n===r||function(){for(var t=0;t<11;++t)s[t]=d(t*a,e,n)}()}var v=function(a){return p||g(),e===t&&n===r?a:0===a?0:1===a?1:d(f(a),t,r)};v.getControlPoints=function(){return[{x:e,y:t},{x:n,y:r}]};var y="generateBezier("+[e,t,n,r]+")";return v.toString=function(){return y},v}var Ll=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,n,r){var a={x:t.x+r.dx*n,v:t.v+r.dv*n,tension:t.tension,friction:t.friction};return{dx:a.v,dv:e(a)}}function n(n,r){var a={dx:n.v,dv:e(n)},i=t(n,.5*r,a),o=t(n,.5*r,i),s=t(n,r,o),l=1/6*(a.dx+2*(i.dx+o.dx)+s.dx),u=1/6*(a.dv+2*(i.dv+o.dv)+s.dv);return n.x=n.x+l*r,n.v=n.v+u*r,n}return function e(t,r,a){var i,o,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,d=1e-4;for(t=parseFloat(t)||500,r=parseFloat(r)||20,a=a||null,l.tension=t,l.friction=r,o=(i=null!==a)?(c=e(t,r))/a*.016:.016;s=n(s||l,o),u.push(1+s.x),c+=16,Math.abs(s.x)>d&&Math.abs(s.v)>d;);return i?function(e){return u[e*(u.length-1)|0]}:c}}(),zl=function(e,t,n,r){var a=Nl(e,t,n,r);return function(e,t,n){return e+(t-e)*a(n)}},Ol={linear:function(e,t,n){return e+(t-e)*n},ease:zl(.25,.1,.25,1),"ease-in":zl(.42,0,1,1),"ease-out":zl(0,0,.58,1),"ease-in-out":zl(.42,0,.58,1),"ease-in-sine":zl(.47,0,.745,.715),"ease-out-sine":zl(.39,.575,.565,1),"ease-in-out-sine":zl(.445,.05,.55,.95),"ease-in-quad":zl(.55,.085,.68,.53),"ease-out-quad":zl(.25,.46,.45,.94),"ease-in-out-quad":zl(.455,.03,.515,.955),"ease-in-cubic":zl(.55,.055,.675,.19),"ease-out-cubic":zl(.215,.61,.355,1),"ease-in-out-cubic":zl(.645,.045,.355,1),"ease-in-quart":zl(.895,.03,.685,.22),"ease-out-quart":zl(.165,.84,.44,1),"ease-in-out-quart":zl(.77,0,.175,1),"ease-in-quint":zl(.755,.05,.855,.06),"ease-out-quint":zl(.23,1,.32,1),"ease-in-out-quint":zl(.86,0,.07,1),"ease-in-expo":zl(.95,.05,.795,.035),"ease-out-expo":zl(.19,1,.22,1),"ease-in-out-expo":zl(1,0,0,1),"ease-in-circ":zl(.6,.04,.98,.335),"ease-out-circ":zl(.075,.82,.165,1),"ease-in-out-circ":zl(.785,.135,.15,.86),spring:function(e,t,n){if(0===n)return Ol.linear;var r=Ll(e,t,n);return function(e,t,n){return e+(t-e)*r(n)}},"cubic-bezier":zl};function Vl(e,t,n,r,a){if(1===r)return n;if(t===n)return n;var i=a(t,n,r);return null==e||((e.roundValue||e.color)&&(i=Math.round(i)),void 0!==e.min&&(i=Math.max(i,e.min)),void 0!==e.max&&(i=Math.min(i,e.max))),i}function Fl(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function jl(e,t,n,r,a){var i=null!=a?a.type:null;n<0?n=0:n>1&&(n=1);var o=Fl(e,a),s=Fl(t,a);if(Q(o)&&Q(s))return Vl(i,o,s,n,r);if(Z(o)&&Z(s)){for(var l=[],u=0;u<s.length;u++){var c=o[u],d=s[u];if(null!=c&&null!=d){var h=Vl(i,c,d,n,r);l.push(h)}else l.push(d)}return l}}function Xl(e,t,n,r){var a=!r,i=e._private,o=t._private,s=o.easing,l=o.startTime,u=(r?e:e.cy()).style();if(!o.easingImpl)if(null==s)o.easingImpl=Ol.linear;else{var c,d,h;if(K(s))c=u.parse("transition-timing-function",s).value;else c=s;K(c)?(d=c,h=[]):(d=c[1],h=c.slice(2).map(function(e){return+e})),h.length>0?("spring"===d&&h.push(o.duration),o.easingImpl=Ol[d].apply(null,h)):o.easingImpl=Ol[d]}var f,p=o.easingImpl;if(f=0===o.duration?1:(n-l)/o.duration,o.applying&&(f=o.progress),f<0?f=0:f>1&&(f=1),null==o.delay){var g=o.startPosition,v=o.position;if(v&&a&&!e.locked()){var y={};ql(g.x,v.x)&&(y.x=jl(g.x,v.x,f,p)),ql(g.y,v.y)&&(y.y=jl(g.y,v.y,f,p)),e.position(y)}var m=o.startPan,b=o.pan,x=i.pan,w=null!=b&&r;w&&(ql(m.x,b.x)&&(x.x=jl(m.x,b.x,f,p)),ql(m.y,b.y)&&(x.y=jl(m.y,b.y,f,p)),e.emit("pan"));var E=o.startZoom,k=o.zoom,T=null!=k&&r;T&&(ql(E,k)&&(i.zoom=$t(i.minZoom,jl(E,k,f,p),i.maxZoom)),e.emit("zoom")),(w||T)&&e.emit("viewport");var C=o.style;if(C&&C.length>0&&a){for(var P=0;P<C.length;P++){var S=C[P],B=S.name,D=S,_=o.startStyle[B],A=jl(_,D,f,p,u.properties[_.name]);u.overrideBypass(e,B,A)}e.emit("style")}}return o.progress=f,f}function ql(e,t){return null!=e&&null!=t&&(!(!Q(e)||!Q(t))||!(!e||!t))}function Yl(e,t,n,r){var a=t._private;a.started=!0,a.startTime=n-a.progress*a.duration}function Wl(e,t){var n=t._private.aniEles,r=[];function a(t,n){var a=t._private,i=a.animation.current,o=a.animation.queue,s=!1;if(0===i.length){var l=o.shift();l&&i.push(l)}for(var u=function(e){for(var t=e.length-1;t>=0;t--){(0,e[t])()}e.splice(0,e.length)},c=i.length-1;c>=0;c--){var d=i[c],h=d._private;h.stopped?(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.frames)):(h.playing||h.applying)&&(h.playing&&h.applying&&(h.applying=!1),h.started||Yl(0,d,e),Xl(t,d,e,n),h.applying&&(h.applying=!1),u(h.frames),null!=h.step&&h.step(e),d.completed()&&(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.completes)),s=!0)}return n||0!==i.length||0!==o.length||r.push(t),s}for(var i=!1,o=0;o<n.length;o++){var s=a(n[o]);i=i||s}var l=a(t,!0);(i||l)&&(n.length>0?t.notify("draw",n):t.notify("draw")),n.unmerge(r),t.emit("step")}var Ul={animate:vo.animate(),animation:vo.animation(),animated:vo.animated(),clearQueue:vo.clearQueue(),delay:vo.delay(),delayAnimation:vo.delayAnimation(),stop:vo.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender(function(t,n){Wl(n,e)},t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&Ne(function(n){Wl(n,e),t()})}()}}},Hl={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&te(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e}},Kl=function(e){return K(e)?new es(e):e},Gl={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new Zs(Hl,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,n){return this.emitter().on(e,Kl(t),n),this},removeListener:function(e,t,n){return this.emitter().removeListener(e,Kl(t),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,n){return this.emitter().one(e,Kl(t),n),this},once:function(e,t,n){return this.emitter().one(e,Kl(t),n),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};vo.eventAliasesOn(Gl);var Zl={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};Zl.jpeg=Zl.jpg;var $l={layout:function(e){var t=this;if(null!=e)if(null!=e.name){var n=e.name,r=t.extension("layout",n);if(null!=r){var a;a=K(e.eles)?t.$(e.eles):null!=e.eles?e.eles:t.$();var i=new r(me({},e,{cy:t,eles:a}));return i}nt("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?")}else nt("A `name` must be specified to make a layout");else nt("Layout options must be specified to make a layout")}};$l.createLayout=$l.makeLayout=$l.layout;var Ql={notify:function(e,t){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var r=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();null!=t&&r.merge(t)}else if(n.notificationsEnabled){var a=this.renderer();!this.destroyed()&&a&&a.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var r=e.batchNotifications[n];r.empty()?t.notify(n):t.notify(n,r)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch(function(){for(var n=Object.keys(e),r=0;r<n.length;r++){var a=n[r],i=e[a];t.getElementById(a).data(i)}})}},Jl=ut({hideEdgesOnViewport:!1,textureOnViewport:!1,motionBlur:!1,motionBlurOpacity:.05,pixelRatio:void 0,desktopTapThreshold:4,touchTapThreshold:8,wheelSensitivity:1,debug:!1,showFps:!1,webgl:!1,webglDebug:!1,webglDebugShowAtlases:!1,webglTexSize:2048,webglTexRows:36,webglTexRowsNodes:18,webglBatchSize:2048,webglTexPerBatch:14,webglBgColor:[255,255,255]}),eu={renderTo:function(e,t,n,r){return this._private.renderer.renderTo(e,t,n,r),this},renderer:function(){return this._private.renderer},forceRender:function(){return this.notify("draw"),this},resize:function(){return this.invalidateSize(),this.emitAndNotify("resize"),this},initRenderer:function(e){var t=this,n=t.extension("renderer",e.name);if(null!=n){void 0!==e.wheelSensitivity&&at("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.");var r=Jl(e);r.cy=t,t._private.renderer=new n(r),this.notify("init")}else nt("Can not initialise: No such renderer `".concat(e.name,"` found. Did you forget to import it and `cytoscape.use()` it?"))},destroyRenderer:function(){var e=this;e.notify("destroy");var t=e.container();if(t)for(t._cyreg=null;t.childNodes.length>0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};eu.invalidateDimensions=eu.resize;var tu={collection:function(e,t){return K(e)?this.$(e):ee(e)?e.collection():Z(e)?(t||(t={}),new Ml(this,e,t.unique,t.removed)):new Ml(this)},nodes:function(e){var t=this.$(function(e){return e.isNode()});return e?t.filter(e):t},edges:function(e){var t=this.$(function(e){return e.isEdge()});return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};tu.elements=tu.filter=tu.$;var nu={},ru="t";nu.apply=function(e){for(var t=this,n=t._private.cy.collection(),r=0;r<e.length;r++){var a=e[r],i=t.getContextMeta(a);if(!i.empty){var o=t.getContextStyle(i),s=t.applyContextStyle(i,o,a);a._private.appliedInitStyle?t.updateTransitions(a,s.diffProps):a._private.appliedInitStyle=!0,t.updateStyleHints(a)&&n.push(a)}}return n},nu.getPropertiesDiff=function(e,t){var n=this,r=n._private.propDiffs=n._private.propDiffs||{},a=e+"-"+t,i=r[a];if(i)return i;for(var o=[],s={},l=0;l<n.length;l++){var u=n[l],c=e[l]===ru,d=t[l]===ru,h=c!==d,f=u.mappedProperties.length>0;if(h||d&&f){var p=void 0;h&&f||h?p=u.properties:f&&(p=u.mappedProperties);for(var g=0;g<p.length;g++){for(var v=p[g],y=v.name,m=!1,b=l+1;b<n.length;b++){var x=n[b];if(t[b]===ru&&(m=null!=x.properties[v.name]))break}s[y]||m||(s[y]=!0,o.push(y))}}}return r[a]=o,o},nu.getContextMeta=function(e){for(var t,n=this,r="",a=e._private.styleCxtKey||"",i=0;i<n.length;i++){var o=n[i];r+=o.selector&&o.selector.matches(e)?ru:"f"}return t=n.getPropertiesDiff(a,r),e._private.styleCxtKey=r,{key:r,diffPropNames:t,empty:0===t.length}},nu.getContextStyle=function(e){var t=e.key,n=this._private.contextStyles=this._private.contextStyles||{};if(n[t])return n[t];for(var r={_private:{key:t}},a=0;a<this.length;a++){var i=this[a];if(t[a]===ru)for(var o=0;o<i.properties.length;o++){var s=i.properties[o];r[s.name]=s}}return n[t]=r,r},nu.applyContextStyle=function(e,t,n){for(var r=e.diffPropNames,a={},i=this.types,o=0;o<r.length;o++){var s=r[o],l=t[s],u=n.pstyle(s);if(!l){if(!u)continue;l=u.bypass?{name:s,deleteBypassed:!0}:{name:s,delete:!0}}if(u!==l){if(l.mapped===i.fn&&null!=u&&null!=u.mapping&&u.mapping.value===l.value){var c=u.mapping;if((c.fnValue=l.value(n))===c.prevFnValue)continue}var d=a[s]={prev:u};this.applyParsedProperty(n,l),d.next=n.pstyle(s),d.next&&d.next.bypass&&(d.next=d.next.bypassed)}}return{diffProps:a}},nu.updateStyleHints=function(e){var t=e._private,n=this,r=n.propertyGroupNames,a=n.propertyGroupKeys,i=function(e,t,r){return n.getPropertiesHash(e,t,r)},o=t.styleKey;if(e.removed())return!1;var s="nodes"===t.group,l=e._private.style;r=Object.keys(l);for(var u=0;u<a.length;u++){var c=a[u];t.styleKeys[c]=[ze,Oe]}for(var d=function(e,n){return t.styleKeys[n][0]=Fe(e,t.styleKeys[n][0])},h=function(e,n){return t.styleKeys[n][1]=je(e,t.styleKeys[n][1])},f=function(e,t){d(e,t),h(e,t)},p=function(e,t){for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);d(r,t),h(r,t)}},g=function(e){return-128<e&&e<128&&Math.floor(e)!==e?2e9-(1024*e|0):e},v=0;v<r.length;v++){var y=r[v],m=l[y];if(null!=m){var b=this.properties[y],x=b.type,w=b.groupKey,E=void 0;null!=b.hashOverride?E=b.hashOverride(e,m):null!=m.pfValue&&(E=m.pfValue);var k=null==b.enums?m.value:null,T=null!=E,C=T||null!=k,P=m.units;if(x.number&&C&&!x.multiple)f(g(T?E:k),w),T||null==P||p(P,w);else p(m.strValue,w)}}for(var S,B,D=[ze,Oe],_=0;_<a.length;_++){var A=a[_],M=t.styleKeys[A];D[0]=Fe(M[0],D[0]),D[1]=je(M[1],D[1])}t.styleKey=(S=D[0],B=D[1],2097152*S+B);var R=t.styleKeys;t.labelDimsKey=Xe(R.labelDimensions);var I=i(e,["label"],R.labelDimensions);if(t.labelKey=Xe(I),t.labelStyleKey=Xe(qe(R.commonLabel,I)),!s){var N=i(e,["source-label"],R.labelDimensions);t.sourceLabelKey=Xe(N),t.sourceLabelStyleKey=Xe(qe(R.commonLabel,N));var L=i(e,["target-label"],R.labelDimensions);t.targetLabelKey=Xe(L),t.targetLabelStyleKey=Xe(qe(R.commonLabel,L))}if(s){var z=t.styleKeys,O=z.nodeBody,V=z.nodeBorder,F=z.nodeOutline,j=z.backgroundImage,X=z.compound,q=z.pie,Y=z.stripe,W=[O,V,F,j,X,q,Y].filter(function(e){return null!=e}).reduce(qe,[ze,Oe]);t.nodeKey=Xe(W),t.hasPie=null!=q&&q[0]!==ze&&q[1]!==Oe,t.hasStripe=null!=Y&&Y[0]!==ze&&Y[1]!==Oe}return o!==t.styleKey},nu.clearStyleHints=function(e){var t=e._private;t.styleCxtKey="",t.styleKeys={},t.styleKey=null,t.labelKey=null,t.labelStyleKey=null,t.sourceLabelKey=null,t.sourceLabelStyleKey=null,t.targetLabelKey=null,t.targetLabelStyleKey=null,t.nodeKey=null,t.hasPie=null,t.hasStripe=null},nu.applyParsedProperty=function(e,t){var n,r=this,a=t,i=e._private.style,o=r.types,s=r.properties[a.name].type,l=a.bypass,u=i[a.name],c=u&&u.bypass,d=e._private,h="mapping",f=function(e){return null==e?null:null!=e.pfValue?e.pfValue:e.value},p=function(){var t=f(u),n=f(a);r.checkTriggers(e,a.name,t,n)};if("curve-style"===t.name&&e.isEdge()&&("bezier"!==t.value&&e.isLoop()||"haystack"===t.value&&(e.source().isParent()||e.target().isParent()))&&(a=t=this.parse(t.name,"bezier",l)),a.delete)return i[a.name]=void 0,p(),!0;if(a.deleteBypassed)return u?!!u.bypass&&(u.bypassed=void 0,p(),!0):(p(),!0);if(a.deleteBypass)return u?!!u.bypass&&(i[a.name]=u.bypassed,p(),!0):(p(),!0);var g=function(){at("Do not assign mappings to elements without corresponding data (i.e. ele `"+e.id()+"` has no mapping for property `"+a.name+"` with data field `"+a.field+"`); try a `["+a.field+"]` selector to limit scope to elements with `"+a.field+"` defined")};switch(a.mapped){case o.mapData:for(var v,y=a.field.split("."),m=d.data,b=0;b<y.length&&m;b++){m=m[y[b]]}if(null==m)return g(),!1;if(!Q(m))return at("Do not use continuous mappers without specifying numeric data (i.e. `"+a.field+": "+m+"` for `"+e.id()+"` is non-numeric)"),!1;var x=a.fieldMax-a.fieldMin;if((v=0===x?0:(m-a.fieldMin)/x)<0?v=0:v>1&&(v=1),s.color){var w=a.valueMin[0],E=a.valueMax[0],k=a.valueMin[1],T=a.valueMax[1],C=a.valueMin[2],P=a.valueMax[2],S=null==a.valueMin[3]?1:a.valueMin[3],B=null==a.valueMax[3]?1:a.valueMax[3],D=[Math.round(w+(E-w)*v),Math.round(k+(T-k)*v),Math.round(C+(P-C)*v),Math.round(S+(B-S)*v)];n={bypass:a.bypass,name:a.name,value:D,strValue:"rgb("+D[0]+", "+D[1]+", "+D[2]+")"}}else{if(!s.number)return!1;var _=a.valueMin+(a.valueMax-a.valueMin)*v;n=this.parse(a.name,_,a.bypass,h)}if(!n)return g(),!1;n.mapping=a,a=n;break;case o.data:for(var A=a.field.split("."),M=d.data,R=0;R<A.length&&M;R++){M=M[A[R]]}if(null!=M&&(n=this.parse(a.name,M,a.bypass,h)),!n)return g(),!1;n.mapping=a,a=n;break;case o.fn:var I=a.value,N=null!=a.fnValue?a.fnValue:I(e);if(a.prevFnValue=N,null==N)return at("Custom function mappers may not return null (i.e. `"+a.name+"` for ele `"+e.id()+"` is null)"),!1;if(!(n=this.parse(a.name,N,a.bypass,h)))return at("Custom function mappers may not return invalid values for the property type (i.e. `"+a.name+"` for ele `"+e.id()+"` is invalid)"),!1;n.mapping=it(a),a=n;break;case void 0:break;default:return!1}return l?(a.bypassed=c?u.bypassed:u,i[a.name]=a):c?u.bypassed=a:i[a.name]=a,p(),!0},nu.cleanElements=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(this.clearStyleHints(r),r.dirtyCompoundBoundsCache(),r.dirtyBoundingBoxCache(),t)for(var a=r._private.style,i=Object.keys(a),o=0;o<i.length;o++){var s=i[o],l=a[s];null!=l&&(l.bypass?l.bypassed=null:a[s]=null)}else r._private.style={}}},nu.update=function(){this._private.cy.mutableElements().updateStyle()},nu.updateTransitions=function(e,t){var n=this,r=e._private,a=e.pstyle("transition-property").value,i=e.pstyle("transition-duration").pfValue,o=e.pstyle("transition-delay").pfValue;if(a.length>0&&i>0){for(var s={},l=!1,u=0;u<a.length;u++){var c=a[u],d=e.pstyle(c),h=t[c];if(h){var f=h.prev,p=null!=h.next?h.next:d,g=!1,v=void 0,y=1e-6;f&&(Q(f.pfValue)&&Q(p.pfValue)?(g=p.pfValue-f.pfValue,v=f.pfValue+y*g):Q(f.value)&&Q(p.value)?(g=p.value-f.value,v=f.value+y*g):Z(f.value)&&Z(p.value)&&(g=f.value[0]!==p.value[0]||f.value[1]!==p.value[1]||f.value[2]!==p.value[2],v=f.strValue),g&&(s[c]=p.strValue,this.applyBypass(e,c,v),l=!0))}}if(!l)return;r.transitioning=!0,new qr(function(t){o>0?e.delayAnimation(o).play().promise().then(t):t()}).then(function(){return e.animation({style:s,duration:i,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){n.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1})}else r.transitioning&&(this.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1)},nu.checkTrigger=function(e,t,n,r,a,i){var o=this.properties[t],s=a(o);e.removed()||null!=s&&s(n,r,e)&&i(o)},nu.checkZOrderTrigger=function(e,t,n,r){var a=this;this.checkTrigger(e,t,n,r,function(e){return e.triggersZOrder},function(){a._private.cy.notify("zorder",e)})},nu.checkBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBounds},function(t){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()})},nu.checkConnectedEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBoundsOfConnectedEdges},function(t){e.connectedEdges().forEach(function(e){e.dirtyBoundingBoxCache()})})},nu.checkParallelEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBoundsOfParallelEdges},function(t){e.parallelEdges().forEach(function(e){e.dirtyBoundingBoxCache()})})},nu.checkTriggers=function(e,t,n,r){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,n,r),this.checkBoundsTrigger(e,t,n,r),this.checkConnectedEdgesBoundsTrigger(e,t,n,r),this.checkParallelEdgesBoundsTrigger(e,t,n,r)};var au={applyBypass:function(e,t,n,r){var a=[];if("*"===t||"**"===t){if(void 0!==n)for(var i=0;i<this.properties.length;i++){var o=this.properties[i].name,s=this.parse(o,n,!0);s&&a.push(s)}}else if(K(t)){var l=this.parse(t,n,!0);l&&a.push(l)}else{if(!$(t))return!1;var u=t;r=n;for(var c=Object.keys(u),d=0;d<c.length;d++){var h=c[d],f=u[h];if(void 0===f&&(f=u[ue(h)]),void 0!==f){var p=this.parse(h,f,!0);p&&a.push(p)}}}if(0===a.length)return!1;for(var g=!1,v=0;v<e.length;v++){for(var y=e[v],m={},b=void 0,x=0;x<a.length;x++){var w=a[x];if(r){var E=y.pstyle(w.name);b=m[w.name]={prev:E}}g=this.applyParsedProperty(y,it(w))||g,r&&(b.next=y.pstyle(w.name))}g&&this.updateStyleHints(y),r&&this.updateTransitions(y,m,true)}return g},overrideBypass:function(e,t,n){t=le(t);for(var r=0;r<e.length;r++){var a=e[r],i=a._private.style[t],o=this.properties[t].type,s=o.color,l=o.mutiple,u=i?null!=i.pfValue?i.pfValue:i.value:null;i&&i.bypass?(i.value=n,null!=i.pfValue&&(i.pfValue=n),i.strValue=s?"rgb("+n.join(",")+")":l?n.join(" "):""+n,this.updateStyleHints(a)):this.applyBypass(a,t,n),this.checkTriggers(a,t,u,n)}},removeAllBypasses:function(e,t){return this.removeBypasses(e,this.propertyNames,t)},removeBypasses:function(e,t,n){for(var r=0;r<e.length;r++){for(var a=e[r],i={},o=0;o<t.length;o++){var s=t[o],l=this.properties[s],u=a.pstyle(l.name);if(u&&u.bypass){var c=this.parse(s,"",!0),d=i[l.name]={prev:u};this.applyParsedProperty(a,c),d.next=a.pstyle(l.name)}}this.updateStyleHints(a),n&&this.updateTransitions(a,i,true)}}},iu={getEmSizeInPixels:function(){var e=this.containerCss("font-size");return null!=e?parseFloat(e):1},containerCss:function(e){var t=this._private.cy,n=t.container(),r=t.window();if(r&&n&&r.getComputedStyle)return r.getComputedStyle(n).getPropertyValue(e)}},ou={getRenderedStyle:function(e,t){return t?this.getStylePropertyValue(e,t,!0):this.getRawStyle(e,!0)},getRawStyle:function(e,t){var n=this;if(e=e[0]){for(var r={},a=0;a<n.properties.length;a++){var i=n.properties[a],o=n.getStylePropertyValue(e,i.name,t);null!=o&&(r[i.name]=o,r[ue(i.name)]=o)}return r}},getIndexedStyle:function(e,t,n,r){var a=e.pstyle(t)[n][r];return null!=a?a:e.cy().style().getDefaultProperty(t)[n][0]},getStylePropertyValue:function(e,t,n){if(e=e[0]){var r=this.properties[t];r.alias&&(r=r.pointsTo);var a=r.type,i=e.pstyle(r.name);if(i){var o=i.value,s=i.units,l=i.strValue;if(n&&a.number&&null!=o&&Q(o)){var u=e.cy().zoom(),c=function(e){return e*u},d=function(e,t){return c(e)+t},h=Z(o);return(h?s.every(function(e){return null!=e}):null!=s)?h?o.map(function(e,t){return d(e,s[t])}).join(" "):d(o,s):h?o.map(function(e){return K(e)?e:""+c(e)}).join(" "):""+c(o)}if(null!=l)return l}return null}},getAnimationStartStyle:function(e,t){for(var n={},r=0;r<t.length;r++){var a=t[r].name,i=e.pstyle(a);void 0!==i&&(i=$(i)?this.parse(a,i.strValue):this.parse(a,i)),i&&(n[a]=i)}return n},getPropsList:function(e){var t=[],n=e,r=this.properties;if(n)for(var a=Object.keys(n),i=0;i<a.length;i++){var o=a[i],s=n[o],l=r[o]||r[le(o)],u=this.parse(l.name,s);u&&t.push(u)}return t},getNonDefaultPropertiesHash:function(e,t,n){var r,a,i,o,s,l,u=n.slice();for(s=0;s<t.length;s++)if(r=t[s],null!=(a=e.pstyle(r,!1)))if(null!=a.pfValue)u[0]=Fe(o,u[0]),u[1]=je(o,u[1]);else for(i=a.strValue,l=0;l<i.length;l++)o=i.charCodeAt(l),u[0]=Fe(o,u[0]),u[1]=je(o,u[1]);return u}};ou.getPropertiesHash=ou.getNonDefaultPropertiesHash;var su={appendFromJson:function(e){for(var t=this,n=0;n<e.length;n++){var r=e[n],a=r.selector,i=r.style||r.css,o=Object.keys(i);t.selector(a);for(var s=0;s<o.length;s++){var l=o[s],u=i[l];t.css(l,u)}}return t},fromJson:function(e){var t=this;return t.resetToDefault(),t.appendFromJson(e),t},json:function(){for(var e=[],t=this.defaultLength;t<this.length;t++){for(var n=this[t],r=n.selector,a=n.properties,i={},o=0;o<a.length;o++){var s=a[o];i[s.name]=s.strValue}e.push({selector:r?r.toString():"core",style:i})}return e}},lu={appendFromString:function(e){var t,n,r,a=this,i=""+e;function o(){i=i.length>t.length?i.substr(t.length):""}function s(){n=n.length>r.length?n.substr(r.length):""}for(i=i.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(i.match(/^\s*$/))break;var l=i.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!l){at("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+i);break}t=l[0];var u=l[1];if("core"!==u)if(new es(u).invalid){at("Skipping parsing of block: Invalid selector found in string stylesheet: "+u),o();continue}var c=l[2],d=!1;n=c;for(var h=[];;){if(n.match(/^\s*$/))break;var f=n.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!f){at("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+c),d=!0;break}r=f[0];var p=f[1],g=f[2];if(this.properties[p])a.parse(p,g)?(h.push({name:p,val:g}),s()):(at("Skipping property: Invalid property definition in: "+r),s());else at("Skipping property: Invalid property name in: "+r),s()}if(d){o();break}a.selector(u);for(var v=0;v<h.length;v++){var y=h[v];a.css(y.name,y.val)}o()}return a},fromString:function(e){var t=this;return t.resetToDefault(),t.appendFromString(e),t}},uu={};!function(){var e=he,t=pe,n=ve,r=function(e){return"^"+e+"\\s*\\(\\s*([\\w\\.]+)\\s*\\)$"},a=function(r){var a=e+"|\\w+|"+t+"|"+n+"|\\#[0-9a-fA-F]{3}|\\#[0-9a-fA-F]{6}";return"^"+r+"\\s*\\(([\\w\\.]+)\\s*\\,\\s*("+e+")\\s*\\,\\s*("+e+")\\s*,\\s*("+a+")\\s*\\,\\s*("+a+")\\)$"},i=["^url\\s*\\(\\s*['\"]?(.+?)['\"]?\\s*\\)$","^(none)$","^(.+)$"];uu.types={time:{number:!0,min:0,units:"s|ms",implicitUnits:"ms"},percent:{number:!0,min:0,max:100,units:"%",implicitUnits:"%"},percentages:{number:!0,min:0,max:100,units:"%",implicitUnits:"%",multiple:!0},zeroOneNumber:{number:!0,min:0,max:1,unitless:!0},zeroOneNumbers:{number:!0,min:0,max:1,unitless:!0,multiple:!0},nOneOneNumber:{number:!0,min:-1,max:1,unitless:!0},nonNegativeInt:{number:!0,min:0,integer:!0,unitless:!0},nonNegativeNumber:{number:!0,min:0,unitless:!0},position:{enums:["parent","origin"]},nodeSize:{number:!0,min:0,enums:["label"]},number:{number:!0,unitless:!0},numbers:{number:!0,unitless:!0,multiple:!0},positiveNumber:{number:!0,unitless:!0,min:0,strictMin:!0},size:{number:!0,min:0},bidirectionalSize:{number:!0},bidirectionalSizeMaybePercent:{number:!0,allowPercent:!0},bidirectionalSizes:{number:!0,multiple:!0},sizeMaybePercent:{number:!0,min:0,allowPercent:!0},axisDirection:{enums:["horizontal","leftward","rightward","vertical","upward","downward","auto"]},axisDirectionExplicit:{enums:["leftward","rightward","upward","downward"]},axisDirectionPrimary:{enums:["horizontal","vertical"]},paddingRelativeTo:{enums:["width","height","average","min","max"]},bgWH:{number:!0,min:0,allowPercent:!0,enums:["auto"],multiple:!0},bgPos:{number:!0,allowPercent:!0,multiple:!0},bgRelativeTo:{enums:["inner","include-padding"],multiple:!0},bgRepeat:{enums:["repeat","repeat-x","repeat-y","no-repeat"],multiple:!0},bgFit:{enums:["none","contain","cover"],multiple:!0},bgCrossOrigin:{enums:["anonymous","use-credentials","null"],multiple:!0},bgClip:{enums:["none","node"],multiple:!0},bgContainment:{enums:["inside","over"],multiple:!0},color:{color:!0},colors:{color:!0,multiple:!0},fill:{enums:["solid","linear-gradient","radial-gradient"]},bool:{enums:["yes","no"]},bools:{enums:["yes","no"],multiple:!0},lineStyle:{enums:["solid","dotted","dashed"]},lineCap:{enums:["butt","round","square"]},linePosition:{enums:["center","inside","outside"]},lineJoin:{enums:["round","bevel","miter"]},borderStyle:{enums:["solid","dotted","dashed","double"]},curveStyle:{enums:["bezier","unbundled-bezier","haystack","segments","straight","straight-triangle","taxi","round-segments","round-taxi"]},radiusType:{enums:["arc-radius","influence-radius"],multiple:!0},fontFamily:{regex:'^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$'},fontStyle:{enums:["italic","normal","oblique"]},fontWeight:{enums:["normal","bold","bolder","lighter","100","200","300","400","500","600","800","900",100,200,300,400,500,600,700,800,900]},textDecoration:{enums:["none","underline","overline","line-through"]},textTransform:{enums:["none","uppercase","lowercase"]},textWrap:{enums:["none","wrap","ellipsis"]},textOverflowWrap:{enums:["whitespace","anywhere"]},textBackgroundShape:{enums:["rectangle","roundrectangle","round-rectangle"]},nodeShape:{enums:["rectangle","roundrectangle","round-rectangle","cutrectangle","cut-rectangle","bottomroundrectangle","bottom-round-rectangle","barrel","ellipse","triangle","round-triangle","square","pentagon","round-pentagon","hexagon","round-hexagon","concavehexagon","concave-hexagon","heptagon","round-heptagon","octagon","round-octagon","tag","round-tag","star","diamond","round-diamond","vee","rhomboid","right-rhomboid","polygon"]},overlayShape:{enums:["roundrectangle","round-rectangle","ellipse"]},cornerRadius:{number:!0,min:0,units:"px|em",implicitUnits:"px",enums:["auto"]},compoundIncludeLabels:{enums:["include","exclude"]},arrowShape:{enums:["tee","triangle","triangle-tee","circle-triangle","triangle-cross","triangle-backcurve","vee","square","circle","diamond","chevron","none"]},arrowFill:{enums:["filled","hollow"]},arrowWidth:{number:!0,units:"%|px|em",implicitUnits:"px",enums:["match-line"]},display:{enums:["element","none"]},visibility:{enums:["hidden","visible"]},zCompoundDepth:{enums:["bottom","orphan","auto","top"]},zIndexCompare:{enums:["auto","manual"]},valign:{enums:["top","center","bottom"]},halign:{enums:["left","center","right"]},justification:{enums:["left","center","right","auto"]},text:{string:!0},data:{mapping:!0,regex:r("data")},layoutData:{mapping:!0,regex:r("layoutData")},scratch:{mapping:!0,regex:r("scratch")},mapData:{mapping:!0,regex:a("mapData")},mapLayoutData:{mapping:!0,regex:a("mapLayoutData")},mapScratch:{mapping:!0,regex:a("mapScratch")},fn:{mapping:!0,fn:!0},url:{regexes:i,singleRegexMatchValue:!0},urls:{regexes:i,singleRegexMatchValue:!0,multiple:!0},propList:{propList:!0},angle:{number:!0,units:"deg|rad",implicitUnits:"rad"},textRotation:{number:!0,units:"deg|rad",implicitUnits:"rad",enums:["none","autorotate"]},polygonPointList:{number:!0,multiple:!0,evenMultiple:!0,min:-1,max:1,unitless:!0},edgeDistances:{enums:["intersection","node-position","endpoints"]},edgeEndpoint:{number:!0,multiple:!0,units:"%|px|em|deg|rad",implicitUnits:"px",enums:["inside-to-node","outside-to-node","outside-to-node-or-label","outside-to-line","outside-to-line-or-label"],singleEnum:!0,validate:function(e,t){switch(e.length){case 2:return"deg"!==t[0]&&"rad"!==t[0]&&"deg"!==t[1]&&"rad"!==t[1];case 1:return K(e[0])||"deg"===t[0]||"rad"===t[0];default:return!1}}},easing:{regexes:["^(spring)\\s*\\(\\s*("+e+")\\s*,\\s*("+e+")\\s*\\)$","^(cubic-bezier)\\s*\\(\\s*("+e+")\\s*,\\s*("+e+")\\s*,\\s*("+e+")\\s*,\\s*("+e+")\\s*\\)$"],enums:["linear","ease","ease-in","ease-out","ease-in-out","ease-in-sine","ease-out-sine","ease-in-out-sine","ease-in-quad","ease-out-quad","ease-in-out-quad","ease-in-cubic","ease-out-cubic","ease-in-out-cubic","ease-in-quart","ease-out-quart","ease-in-out-quart","ease-in-quint","ease-out-quint","ease-in-out-quint","ease-in-expo","ease-out-expo","ease-in-out-expo","ease-in-circ","ease-out-circ","ease-in-out-circ"]},gradientDirection:{enums:["to-bottom","to-top","to-left","to-right","to-bottom-right","to-bottom-left","to-top-right","to-top-left","to-right-bottom","to-left-bottom","to-right-top","to-left-top"]},boundsExpansion:{number:!0,multiple:!0,min:0,validate:function(e){var t=e.length;return 1===t||2===t||4===t}}};var o={zeroNonZero:function(e,t){return(null==e||null==t)&&e!==t||(0==e&&0!=t||0!=e&&0==t)},any:function(e,t){return e!=t},emptyNonEmpty:function(e,t){var n=ie(e),r=ie(t);return n&&!r||!n&&r}},s=uu.types,l=[{name:"label",type:s.text,triggersBounds:o.any,triggersZOrder:o.emptyNonEmpty},{name:"text-rotation",type:s.textRotation,triggersBounds:o.any},{name:"text-margin-x",type:s.bidirectionalSize,triggersBounds:o.any},{name:"text-margin-y",type:s.bidirectionalSize,triggersBounds:o.any}],u=[{name:"source-label",type:s.text,triggersBounds:o.any},{name:"source-text-rotation",type:s.textRotation,triggersBounds:o.any},{name:"source-text-margin-x",type:s.bidirectionalSize,triggersBounds:o.any},{name:"source-text-margin-y",type:s.bidirectionalSize,triggersBounds:o.any},{name:"source-text-offset",type:s.size,triggersBounds:o.any}],c=[{name:"target-label",type:s.text,triggersBounds:o.any},{name:"target-text-rotation",type:s.textRotation,triggersBounds:o.any},{name:"target-text-margin-x",type:s.bidirectionalSize,triggersBounds:o.any},{name:"target-text-margin-y",type:s.bidirectionalSize,triggersBounds:o.any},{name:"target-text-offset",type:s.size,triggersBounds:o.any}],d=[{name:"font-family",type:s.fontFamily,triggersBounds:o.any},{name:"font-style",type:s.fontStyle,triggersBounds:o.any},{name:"font-weight",type:s.fontWeight,triggersBounds:o.any},{name:"font-size",type:s.size,triggersBounds:o.any},{name:"text-transform",type:s.textTransform,triggersBounds:o.any},{name:"text-wrap",type:s.textWrap,triggersBounds:o.any},{name:"text-overflow-wrap",type:s.textOverflowWrap,triggersBounds:o.any},{name:"text-max-width",type:s.size,triggersBounds:o.any},{name:"text-outline-width",type:s.size,triggersBounds:o.any},{name:"line-height",type:s.positiveNumber,triggersBounds:o.any}],h=[{name:"text-valign",type:s.valign,triggersBounds:o.any},{name:"text-halign",type:s.halign,triggersBounds:o.any},{name:"color",type:s.color},{name:"text-outline-color",type:s.color},{name:"text-outline-opacity",type:s.zeroOneNumber},{name:"text-background-color",type:s.color},{name:"text-background-opacity",type:s.zeroOneNumber},{name:"text-background-padding",type:s.size,triggersBounds:o.any},{name:"text-border-opacity",type:s.zeroOneNumber},{name:"text-border-color",type:s.color},{name:"text-border-width",type:s.size,triggersBounds:o.any},{name:"text-border-style",type:s.borderStyle,triggersBounds:o.any},{name:"text-background-shape",type:s.textBackgroundShape,triggersBounds:o.any},{name:"text-justification",type:s.justification},{name:"box-select-labels",type:s.bool,triggersBounds:o.any}],f=[{name:"events",type:s.bool,triggersZOrder:o.any},{name:"text-events",type:s.bool,triggersZOrder:o.any}],p=[{name:"display",type:s.display,triggersZOrder:o.any,triggersBounds:o.any,triggersBoundsOfConnectedEdges:o.any,triggersBoundsOfParallelEdges:function(e,t,n){return e!==t&&"bezier"===n.pstyle("curve-style").value}},{name:"visibility",type:s.visibility,triggersZOrder:o.any},{name:"opacity",type:s.zeroOneNumber,triggersZOrder:o.zeroNonZero},{name:"text-opacity",type:s.zeroOneNumber},{name:"min-zoomed-font-size",type:s.size},{name:"z-compound-depth",type:s.zCompoundDepth,triggersZOrder:o.any},{name:"z-index-compare",type:s.zIndexCompare,triggersZOrder:o.any},{name:"z-index",type:s.number,triggersZOrder:o.any}],g=[{name:"overlay-padding",type:s.size,triggersBounds:o.any},{name:"overlay-color",type:s.color},{name:"overlay-opacity",type:s.zeroOneNumber,triggersBounds:o.zeroNonZero},{name:"overlay-shape",type:s.overlayShape,triggersBounds:o.any},{name:"overlay-corner-radius",type:s.cornerRadius}],v=[{name:"underlay-padding",type:s.size,triggersBounds:o.any},{name:"underlay-color",type:s.color},{name:"underlay-opacity",type:s.zeroOneNumber,triggersBounds:o.zeroNonZero},{name:"underlay-shape",type:s.overlayShape,triggersBounds:o.any},{name:"underlay-corner-radius",type:s.cornerRadius}],y=[{name:"transition-property",type:s.propList},{name:"transition-duration",type:s.time},{name:"transition-delay",type:s.time},{name:"transition-timing-function",type:s.easing}],m=function(e,t){return"label"===t.value?-e.poolIndex():t.pfValue},b=[{name:"height",type:s.nodeSize,triggersBounds:o.any,hashOverride:m},{name:"width",type:s.nodeSize,triggersBounds:o.any,hashOverride:m},{name:"shape",type:s.nodeShape,triggersBounds:o.any},{name:"shape-polygon-points",type:s.polygonPointList,triggersBounds:o.any},{name:"corner-radius",type:s.cornerRadius},{name:"background-color",type:s.color},{name:"background-fill",type:s.fill},{name:"background-opacity",type:s.zeroOneNumber},{name:"background-blacken",type:s.nOneOneNumber},{name:"background-gradient-stop-colors",type:s.colors},{name:"background-gradient-stop-positions",type:s.percentages},{name:"background-gradient-direction",type:s.gradientDirection},{name:"padding",type:s.sizeMaybePercent,triggersBounds:o.any},{name:"padding-relative-to",type:s.paddingRelativeTo,triggersBounds:o.any},{name:"bounds-expansion",type:s.boundsExpansion,triggersBounds:o.any}],x=[{name:"border-color",type:s.color},{name:"border-opacity",type:s.zeroOneNumber},{name:"border-width",type:s.size,triggersBounds:o.any},{name:"border-style",type:s.borderStyle},{name:"border-cap",type:s.lineCap},{name:"border-join",type:s.lineJoin},{name:"border-dash-pattern",type:s.numbers},{name:"border-dash-offset",type:s.number},{name:"border-position",type:s.linePosition}],w=[{name:"outline-color",type:s.color},{name:"outline-opacity",type:s.zeroOneNumber},{name:"outline-width",type:s.size,triggersBounds:o.any},{name:"outline-style",type:s.borderStyle},{name:"outline-offset",type:s.size,triggersBounds:o.any}],E=[{name:"background-image",type:s.urls},{name:"background-image-crossorigin",type:s.bgCrossOrigin},{name:"background-image-opacity",type:s.zeroOneNumbers},{name:"background-image-containment",type:s.bgContainment},{name:"background-image-smoothing",type:s.bools},{name:"background-position-x",type:s.bgPos},{name:"background-position-y",type:s.bgPos},{name:"background-width-relative-to",type:s.bgRelativeTo},{name:"background-height-relative-to",type:s.bgRelativeTo},{name:"background-repeat",type:s.bgRepeat},{name:"background-fit",type:s.bgFit},{name:"background-clip",type:s.bgClip},{name:"background-width",type:s.bgWH},{name:"background-height",type:s.bgWH},{name:"background-offset-x",type:s.bgPos},{name:"background-offset-y",type:s.bgPos}],k=[{name:"position",type:s.position,triggersBounds:o.any},{name:"compound-sizing-wrt-labels",type:s.compoundIncludeLabels,triggersBounds:o.any},{name:"min-width",type:s.size,triggersBounds:o.any},{name:"min-width-bias-left",type:s.sizeMaybePercent,triggersBounds:o.any},{name:"min-width-bias-right",type:s.sizeMaybePercent,triggersBounds:o.any},{name:"min-height",type:s.size,triggersBounds:o.any},{name:"min-height-bias-top",type:s.sizeMaybePercent,triggersBounds:o.any},{name:"min-height-bias-bottom",type:s.sizeMaybePercent,triggersBounds:o.any}],T=[{name:"line-style",type:s.lineStyle},{name:"line-color",type:s.color},{name:"line-fill",type:s.fill},{name:"line-cap",type:s.lineCap},{name:"line-opacity",type:s.zeroOneNumber},{name:"line-dash-pattern",type:s.numbers},{name:"line-dash-offset",type:s.number},{name:"line-outline-width",type:s.size},{name:"line-outline-color",type:s.color},{name:"line-gradient-stop-colors",type:s.colors},{name:"line-gradient-stop-positions",type:s.percentages},{name:"curve-style",type:s.curveStyle,triggersBounds:o.any,triggersBoundsOfParallelEdges:function(e,t){return e!==t&&("bezier"===e||"bezier"===t)}},{name:"haystack-radius",type:s.zeroOneNumber,triggersBounds:o.any},{name:"source-endpoint",type:s.edgeEndpoint,triggersBounds:o.any},{name:"target-endpoint",type:s.edgeEndpoint,triggersBounds:o.any},{name:"control-point-step-size",type:s.size,triggersBounds:o.any},{name:"control-point-distances",type:s.bidirectionalSizes,triggersBounds:o.any},{name:"control-point-weights",type:s.numbers,triggersBounds:o.any},{name:"segment-distances",type:s.bidirectionalSizes,triggersBounds:o.any},{name:"segment-weights",type:s.numbers,triggersBounds:o.any},{name:"segment-radii",type:s.numbers,triggersBounds:o.any},{name:"radius-type",type:s.radiusType,triggersBounds:o.any},{name:"taxi-turn",type:s.bidirectionalSizeMaybePercent,triggersBounds:o.any},{name:"taxi-turn-min-distance",type:s.size,triggersBounds:o.any},{name:"taxi-direction",type:s.axisDirection,triggersBounds:o.any},{name:"taxi-radius",type:s.number,triggersBounds:o.any},{name:"edge-distances",type:s.edgeDistances,triggersBounds:o.any},{name:"arrow-scale",type:s.positiveNumber,triggersBounds:o.any},{name:"loop-direction",type:s.angle,triggersBounds:o.any},{name:"loop-sweep",type:s.angle,triggersBounds:o.any},{name:"source-distance-from-node",type:s.size,triggersBounds:o.any},{name:"target-distance-from-node",type:s.size,triggersBounds:o.any}],C=[{name:"ghost",type:s.bool,triggersBounds:o.any},{name:"ghost-offset-x",type:s.bidirectionalSize,triggersBounds:o.any},{name:"ghost-offset-y",type:s.bidirectionalSize,triggersBounds:o.any},{name:"ghost-opacity",type:s.zeroOneNumber}],P=[{name:"selection-box-color",type:s.color},{name:"selection-box-opacity",type:s.zeroOneNumber},{name:"selection-box-border-color",type:s.color},{name:"selection-box-border-width",type:s.size},{name:"active-bg-color",type:s.color},{name:"active-bg-opacity",type:s.zeroOneNumber},{name:"active-bg-size",type:s.size},{name:"outside-texture-bg-color",type:s.color},{name:"outside-texture-bg-opacity",type:s.zeroOneNumber}],S=[];uu.pieBackgroundN=16,S.push({name:"pie-size",type:s.sizeMaybePercent}),S.push({name:"pie-hole",type:s.sizeMaybePercent}),S.push({name:"pie-start-angle",type:s.angle});for(var B=1;B<=uu.pieBackgroundN;B++)S.push({name:"pie-"+B+"-background-color",type:s.color}),S.push({name:"pie-"+B+"-background-size",type:s.percent}),S.push({name:"pie-"+B+"-background-opacity",type:s.zeroOneNumber});var D=[];uu.stripeBackgroundN=16,D.push({name:"stripe-size",type:s.sizeMaybePercent}),D.push({name:"stripe-direction",type:s.axisDirectionPrimary});for(var _=1;_<=uu.stripeBackgroundN;_++)D.push({name:"stripe-"+_+"-background-color",type:s.color}),D.push({name:"stripe-"+_+"-background-size",type:s.percent}),D.push({name:"stripe-"+_+"-background-opacity",type:s.zeroOneNumber});var A=[],M=uu.arrowPrefixes=["source","mid-source","target","mid-target"];[{name:"arrow-shape",type:s.arrowShape,triggersBounds:o.any},{name:"arrow-color",type:s.color},{name:"arrow-fill",type:s.arrowFill},{name:"arrow-width",type:s.arrowWidth}].forEach(function(e){M.forEach(function(t){var n=t+"-"+e.name,r=e.type,a=e.triggersBounds;A.push({name:n,type:r,triggersBounds:a})})},{});var R=uu.properties=[].concat(f,y,p,g,v,C,h,d,l,u,c,b,x,w,E,S,D,k,T,A,P),I=uu.propertyGroups={behavior:f,transition:y,visibility:p,overlay:g,underlay:v,ghost:C,commonLabel:h,labelDimensions:d,mainLabel:l,sourceLabel:u,targetLabel:c,nodeBody:b,nodeBorder:x,nodeOutline:w,backgroundImage:E,pie:S,stripe:D,compound:k,edgeLine:T,edgeArrow:A,core:P},N=uu.propertyGroupNames={};(uu.propertyGroupKeys=Object.keys(I)).forEach(function(e){N[e]=I[e].map(function(e){return e.name}),I[e].forEach(function(t){return t.groupKey=e})});var L=uu.aliases=[{name:"content",pointsTo:"label"},{name:"control-point-distance",pointsTo:"control-point-distances"},{name:"control-point-weight",pointsTo:"control-point-weights"},{name:"segment-distance",pointsTo:"segment-distances"},{name:"segment-weight",pointsTo:"segment-weights"},{name:"segment-radius",pointsTo:"segment-radii"},{name:"edge-text-rotation",pointsTo:"text-rotation"},{name:"padding-left",pointsTo:"padding"},{name:"padding-right",pointsTo:"padding"},{name:"padding-top",pointsTo:"padding"},{name:"padding-bottom",pointsTo:"padding"}];uu.propertyNames=R.map(function(e){return e.name});for(var z=0;z<R.length;z++){var O=R[z];R[O.name]=O}for(var V=0;V<L.length;V++){var F=L[V],j=R[F.pointsTo],X={name:F.name,alias:!0,pointsTo:j};R.push(X),R[F.name]=X}}(),uu.getDefaultProperty=function(e){return this.getDefaultProperties()[e]},uu.getDefaultProperties=function(){var e=this._private;if(null!=e.defaultProperties)return e.defaultProperties;for(var t=me({"selection-box-color":"#ddd","selection-box-opacity":.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"active-bg-color":"black","active-bg-opacity":.15,"active-bg-size":30,"outside-texture-bg-color":"#000","outside-texture-bg-opacity":.125,events:"yes","text-events":"no","text-valign":"top","text-halign":"center","text-justification":"auto","line-height":1,color:"#000","text-outline-color":"#000","text-outline-width":0,"text-outline-opacity":1,"text-opacity":1,"text-decoration":"none","text-transform":"none","text-wrap":"none","text-overflow-wrap":"whitespace","text-max-width":9999,"text-background-color":"#000","text-background-opacity":0,"text-background-shape":"rectangle","text-background-padding":0,"text-border-opacity":0,"text-border-width":0,"text-border-style":"solid","text-border-color":"#000","font-family":"Helvetica Neue, Helvetica, sans-serif","font-style":"normal","font-weight":"normal","font-size":16,"min-zoomed-font-size":0,"text-rotation":"none","source-text-rotation":"none","target-text-rotation":"none",visibility:"visible",display:"element",opacity:1,"z-compound-depth":"auto","z-index-compare":"auto","z-index":0,label:"","text-margin-x":0,"text-margin-y":0,"source-label":"","source-text-offset":0,"source-text-margin-x":0,"source-text-margin-y":0,"target-label":"","target-text-offset":0,"target-text-margin-x":0,"target-text-margin-y":0,"overlay-opacity":0,"overlay-color":"#000","overlay-padding":10,"overlay-shape":"round-rectangle","overlay-corner-radius":"auto","underlay-opacity":0,"underlay-color":"#000","underlay-padding":10,"underlay-shape":"round-rectangle","underlay-corner-radius":"auto","transition-property":"none","transition-duration":0,"transition-delay":0,"transition-timing-function":"linear","box-select-labels":"no","background-blacken":0,"background-color":"#999","background-fill":"solid","background-opacity":1,"background-image":"none","background-image-crossorigin":"anonymous","background-image-opacity":1,"background-image-containment":"inside","background-image-smoothing":"yes","background-position-x":"50%","background-position-y":"50%","background-offset-x":0,"background-offset-y":0,"background-width-relative-to":"include-padding","background-height-relative-to":"include-padding","background-repeat":"no-repeat","background-fit":"none","background-clip":"node","background-width":"auto","background-height":"auto","border-color":"#000","border-opacity":1,"border-width":0,"border-style":"solid","border-dash-pattern":[4,2],"border-dash-offset":0,"border-cap":"butt","border-join":"miter","border-position":"center","outline-color":"#999","outline-opacity":1,"outline-width":0,"outline-offset":0,"outline-style":"solid",height:30,width:30,shape:"ellipse","shape-polygon-points":"-1, -1, 1, -1, 1, 1, -1, 1","corner-radius":"auto","bounds-expansion":0,"background-gradient-direction":"to-bottom","background-gradient-stop-colors":"#999","background-gradient-stop-positions":"0%",ghost:"no","ghost-offset-y":0,"ghost-offset-x":0,"ghost-opacity":0,padding:0,"padding-relative-to":"width",position:"origin","compound-sizing-wrt-labels":"include","min-width":0,"min-width-bias-left":0,"min-width-bias-right":0,"min-height":0,"min-height-bias-top":0,"min-height-bias-bottom":0},{"pie-size":"100%","pie-hole":0,"pie-start-angle":"0deg"},[{name:"pie-{{i}}-background-color",value:"black"},{name:"pie-{{i}}-background-size",value:"0%"},{name:"pie-{{i}}-background-opacity",value:1}].reduce(function(e,t){for(var n=1;n<=uu.pieBackgroundN;n++){var r=t.name.replace("{{i}}",n),a=t.value;e[r]=a}return e},{}),{"stripe-size":"100%","stripe-direction":"horizontal"},[{name:"stripe-{{i}}-background-color",value:"black"},{name:"stripe-{{i}}-background-size",value:"0%"},{name:"stripe-{{i}}-background-opacity",value:1}].reduce(function(e,t){for(var n=1;n<=uu.stripeBackgroundN;n++){var r=t.name.replace("{{i}}",n),a=t.value;e[r]=a}return e},{}),{"line-style":"solid","line-color":"#999","line-fill":"solid","line-cap":"butt","line-opacity":1,"line-outline-width":0,"line-outline-color":"#000","line-gradient-stop-colors":"#999","line-gradient-stop-positions":"0%","control-point-step-size":40,"control-point-weights":.5,"segment-weights":.5,"segment-distances":20,"segment-radii":15,"radius-type":"arc-radius","taxi-turn":"50%","taxi-radius":15,"taxi-turn-min-distance":10,"taxi-direction":"auto","edge-distances":"intersection","curve-style":"haystack","haystack-radius":0,"arrow-scale":1,"loop-direction":"-45deg","loop-sweep":"-90deg","source-distance-from-node":0,"target-distance-from-node":0,"source-endpoint":"outside-to-node","target-endpoint":"outside-to-node","line-dash-pattern":[6,3],"line-dash-offset":0},[{name:"arrow-shape",value:"none"},{name:"arrow-color",value:"#999"},{name:"arrow-fill",value:"filled"},{name:"arrow-width",value:1}].reduce(function(e,t){return uu.arrowPrefixes.forEach(function(n){var r=n+"-"+t.name,a=t.value;e[r]=a}),e},{})),n={},r=0;r<this.properties.length;r++){var a=this.properties[r];if(!a.pointsTo){var i=a.name,o=t[i],s=this.parse(i,o);n[i]=s}}return e.defaultProperties=n,e.defaultProperties},uu.addDefaultStylesheet=function(){this.selector(":parent").css({shape:"rectangle",padding:10,"background-color":"#eee","border-color":"#ccc","border-width":1}).selector("edge").css({width:3}).selector(":loop").css({"curve-style":"bezier"}).selector("edge:compound").css({"curve-style":"bezier","source-endpoint":"outside-to-line","target-endpoint":"outside-to-line"}).selector(":selected").css({"background-color":"#0169D9","line-color":"#0169D9","source-arrow-color":"#0169D9","target-arrow-color":"#0169D9","mid-source-arrow-color":"#0169D9","mid-target-arrow-color":"#0169D9"}).selector(":parent:selected").css({"background-color":"#CCE1F9","border-color":"#aec8e5"}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":.25}),this.defaultLength=this.length};var cu={parse:function(e,t,n,r){var a=this;if(G(t))return a.parseImplWarn(e,t,n,r);var i,o=Ue(e,""+t,n?"t":"f","mapping"===r||!0===r||!1===r||null==r?"dontcare":r),s=a.propCache=a.propCache||[];return(i=s[o])||(i=s[o]=a.parseImplWarn(e,t,n,r)),(n||"mapping"===r)&&(i=it(i))&&(i.value=it(i.value)),i},parseImplWarn:function(e,t,n,r){var a=this.parseImpl(e,t,n,r);return a||null==t||at("The style property `".concat(e,": ").concat(t,"` is invalid")),!a||"width"!==a.name&&"height"!==a.name||"label"!==t||at("The style value of `label` is deprecated for `"+a.name+"`"),a}};cu.parseImpl=function(e,t,n,r){var a=this;e=le(e);var i=a.properties[e],o=t,s=a.types;if(!i)return null;if(void 0===t)return null;i.alias&&(i=i.pointsTo,e=i.name);var l=K(t);l&&(t=t.trim());var u,c,d=i.type;if(!d)return null;if(n&&(""===t||null===t))return{name:e,value:t,bypass:!0,deleteBypass:!0};if(G(t))return{name:e,value:t,strValue:"fn",mapped:s.fn,bypass:n};if(!l||r||t.length<7||"a"!==t[1]);else{if(t.length>=7&&"d"===t[0]&&(u=new RegExp(s.data.regex).exec(t))){if(n)return!1;var h=s.data;return{name:e,value:u,strValue:""+t,mapped:h,field:u[1],bypass:n}}if(t.length>=10&&"m"===t[0]&&(c=new RegExp(s.mapData.regex).exec(t))){if(n)return!1;if(d.multiple)return!1;var f=s.mapData;if(!d.color&&!d.number)return!1;var p=this.parse(e,c[4]);if(!p||p.mapped)return!1;var g=this.parse(e,c[5]);if(!g||g.mapped)return!1;if(p.pfValue===g.pfValue||p.strValue===g.strValue)return at("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+p.strValue+"`"),this.parse(e,p.strValue);if(d.color){var v=p.value,y=g.value;if(!(v[0]!==y[0]||v[1]!==y[1]||v[2]!==y[2]||v[3]!==y[3]&&(null!=v[3]&&1!==v[3]||null!=y[3]&&1!==y[3])))return!1}return{name:e,value:c,strValue:""+t,mapped:f,field:c[1],fieldMin:parseFloat(c[2]),fieldMax:parseFloat(c[3]),valueMin:p.value,valueMax:g.value,bypass:n}}}if(d.multiple&&"multiple"!==r){var m;if(m=l?t.split(/\s+/):Z(t)?t:[t],d.evenMultiple&&m.length%2!=0)return null;for(var b=[],x=[],w=[],E="",k=!1,T=0;T<m.length;T++){var C=a.parse(e,m[T],n,"multiple");k=k||K(C.value),b.push(C.value),w.push(null!=C.pfValue?C.pfValue:C.value),x.push(C.units),E+=(T>0?" ":"")+C.strValue}return d.validate&&!d.validate(b,x)?null:d.singleEnum&&k?1===b.length&&K(b[0])?{name:e,value:b[0],strValue:b[0],bypass:n}:null:{name:e,value:b,pfValue:w,strValue:E,bypass:n,units:x}}var P,S,B=function(){for(var r=0;r<d.enums.length;r++){if(d.enums[r]===t)return{name:e,value:t,strValue:""+t,bypass:n}}return null};if(d.number){var D,_="px";if(d.units&&(D=d.units),d.implicitUnits&&(_=d.implicitUnits),!d.unitless)if(l){var A="px|em"+(d.allowPercent?"|\\%":"");D&&(A=D);var M=t.match("^("+he+")("+A+")?$");M&&(t=M[1],D=M[2]||_)}else D&&!d.implicitUnits||(D=_);if(t=parseFloat(t),isNaN(t)&&void 0===d.enums)return null;if(isNaN(t)&&void 0!==d.enums)return t=o,B();if(d.integer&&(!Q(S=t)||Math.floor(S)!==S))return null;if(void 0!==d.min&&(t<d.min||d.strictMin&&t===d.min)||void 0!==d.max&&(t>d.max||d.strictMax&&t===d.max))return null;var R={name:e,value:t,strValue:""+t+(D||""),units:D,bypass:n};return d.unitless||"px"!==D&&"em"!==D?R.pfValue=t:R.pfValue="px"!==D&&D?this.getEmSizeInPixels()*t:t,"ms"!==D&&"s"!==D||(R.pfValue="ms"===D?t:1e3*t),"deg"!==D&&"rad"!==D||(R.pfValue="rad"===D?t:(P=t,Math.PI*P/180)),"%"===D&&(R.pfValue=t/100),R}if(d.propList){var I=[],N=""+t;if("none"===N);else{for(var L=N.split(/\s*,\s*|\s+/),z=0;z<L.length;z++){var O=L[z].trim();a.properties[O]?I.push(O):at("`"+O+"` is not a valid property name")}if(0===I.length)return null}return{name:e,value:I,strValue:0===I.length?"none":I.join(" "),bypass:n}}if(d.color){var V=be(t);return V?{name:e,value:V,pfValue:V,strValue:"rgb("+V[0]+","+V[1]+","+V[2]+")",bypass:n}:null}if(d.regex||d.regexes){if(d.enums){var F=B();if(F)return F}for(var j=d.regexes?d.regexes:[d.regex],X=0;X<j.length;X++){var q=new RegExp(j[X]).exec(t);if(q)return{name:e,value:d.singleRegexMatchValue?q[1]:q,strValue:""+t,bypass:n}}return null}return d.string?{name:e,value:""+t,strValue:""+t,bypass:n}:d.enums?B():null};var du=function(e){if(!(this instanceof du))return new du(e);re(e)?(this._private={cy:e,coreStyle:{}},this.length=0,this.resetToDefault()):nt("A style must have a core reference")},hu=du.prototype;hu.instanceString=function(){return"style"},hu.clear=function(){for(var e=this._private,t=e.cy.elements(),n=0;n<this.length;n++)this[n]=void 0;return this.length=0,e.contextStyles={},e.propDiffs={},this.cleanElements(t,!0),t.forEach(function(e){var t=e[0]._private;t.styleDirty=!0,t.appliedInitStyle=!1}),this},hu.resetToDefault=function(){return this.clear(),this.addDefaultStylesheet(),this},hu.core=function(e){return this._private.coreStyle[e]||this.getDefaultProperty(e)},hu.selector=function(e){var t="core"===e?null:new es(e),n=this.length++;return this[n]={selector:t,properties:[],mappedProperties:[],index:n},this},hu.css=function(){var e=arguments;if(1===e.length)for(var t=e[0],n=0;n<this.properties.length;n++){var r=this.properties[n],a=t[r.name];void 0===a&&(a=t[ue(r.name)]),void 0!==a&&this.cssRule(r.name,a)}else 2===e.length&&this.cssRule(e[0],e[1]);return this},hu.style=hu.css,hu.cssRule=function(e,t){var n=this.parse(e,t);if(n){var r=this.length-1;this[r].properties.push(n),this[r].properties[n.name]=n,n.name.match(/pie-(\d+)-background-size/)&&n.value&&(this._private.hasPie=!0),n.name.match(/stripe-(\d+)-background-size/)&&n.value&&(this._private.hasStripe=!0),n.mapped&&this[r].mappedProperties.push(n),!this[r].selector&&(this._private.coreStyle[n.name]=n)}return this},hu.append=function(e){return ae(e)?e.appendToStyle(this):Z(e)?this.appendFromJson(e):K(e)&&this.appendFromString(e),this},du.fromJson=function(e,t){var n=new du(e);return n.fromJson(t),n},du.fromString=function(e,t){return new du(e).fromString(t)},[nu,au,iu,ou,su,lu,uu,cu].forEach(function(e){me(hu,e)}),du.types=hu.types,du.properties=hu.properties,du.propertyGroups=hu.propertyGroups,du.propertyGroupNames=hu.propertyGroupNames,du.propertyGroupKeys=hu.propertyGroupKeys;var fu={style:function(e){e&&this.setStyle(e).update();return this._private.style},setStyle:function(e){var t=this._private;return ae(e)?t.style=e.generateStyle(this):Z(e)?t.style=du.fromJson(this,e):K(e)?t.style=du.fromString(this,e):t.style=du(this),t.style},updateStyle:function(){this.mutableElements().updateStyle()}},pu={autolock:function(e){return void 0===e?this._private.autolock:(this._private.autolock=!!e,this)},autoungrabify:function(e){return void 0===e?this._private.autoungrabify:(this._private.autoungrabify=!!e,this)},autounselectify:function(e){return void 0===e?this._private.autounselectify:(this._private.autounselectify=!!e,this)},selectionType:function(e){var t=this._private;return null==t.selectionType&&(t.selectionType="single"),void 0===e?t.selectionType:("additive"!==e&&"single"!==e||(t.selectionType=e),this)},panningEnabled:function(e){return void 0===e?this._private.panningEnabled:(this._private.panningEnabled=!!e,this)},userPanningEnabled:function(e){return void 0===e?this._private.userPanningEnabled:(this._private.userPanningEnabled=!!e,this)},zoomingEnabled:function(e){return void 0===e?this._private.zoomingEnabled:(this._private.zoomingEnabled=!!e,this)},userZoomingEnabled:function(e){return void 0===e?this._private.userZoomingEnabled:(this._private.userZoomingEnabled=!!e,this)},boxSelectionEnabled:function(e){return void 0===e?this._private.boxSelectionEnabled:(this._private.boxSelectionEnabled=!!e,this)},pan:function(){var e,t,n,r,a,i=arguments,o=this._private.pan;switch(i.length){case 0:return o;case 1:if(K(i[0]))return o[e=i[0]];if($(i[0])){if(!this._private.panningEnabled)return this;r=(n=i[0]).x,a=n.y,Q(r)&&(o.x=r),Q(a)&&(o.y=a),this.emit("pan viewport")}break;case 2:if(!this._private.panningEnabled)return this;t=i[1],"x"!==(e=i[0])&&"y"!==e||!Q(t)||(o[e]=t),this.emit("pan viewport")}return this.notify("viewport"),this},panBy:function(e,t){var n,r,a,i,o,s=arguments,l=this._private.pan;if(!this._private.panningEnabled)return this;switch(s.length){case 1:$(e)&&(i=(a=s[0]).x,o=a.y,Q(i)&&(l.x+=i),Q(o)&&(l.y+=o),this.emit("pan viewport"));break;case 2:r=t,"x"!==(n=e)&&"y"!==n||!Q(r)||(l[n]+=r),this.emit("pan viewport")}return this.notify("viewport"),this},gc:function(){this.notify("gc")},fit:function(e,t){var n=this.getFitViewport(e,t);if(n){var r=this._private;r.zoom=n.zoom,r.pan=n.pan,this.emit("pan zoom viewport"),this.notify("viewport")}return this},getFitViewport:function(e,t){if(Q(e)&&void 0===t&&(t=e,e=void 0),this._private.panningEnabled&&this._private.zoomingEnabled){var n,r;if(K(e)){var a=e;e=this.$(a)}else if($(r=e)&&Q(r.x1)&&Q(r.x2)&&Q(r.y1)&&Q(r.y2)){var i=e;(n={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2}).w=n.x2-n.x1,n.h=n.y2-n.y1}else ee(e)||(e=this.mutableElements());if(!ee(e)||!e.empty()){n=n||e.boundingBox();var o,s=this.width(),l=this.height();if(t=Q(t)?t:0,!isNaN(s)&&!isNaN(l)&&s>0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:o=(o=(o=Math.min((s-2*t)/n.w,(l-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:o)<this._private.minZoom?this._private.minZoom:o,pan:{x:(s-o*(n.x1+n.x2))/2,y:(l-o*(n.y1+n.y2))/2}}}}},zoomRange:function(e,t){var n=this._private;if(null==t){var r=e;e=r.min,t=r.max}return Q(e)&&Q(t)&&e<=t?(n.minZoom=e,n.maxZoom=t):Q(e)&&void 0===t&&e<=n.maxZoom?n.minZoom=e:Q(t)&&void 0===e&&t>=n.minZoom&&(n.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,n,r=this._private,a=r.pan,i=r.zoom,o=!1;if(r.zoomingEnabled||(o=!0),Q(e)?n=e:$(e)&&(n=e.level,null!=e.position?t=Ft(e.position,i,a):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||r.panningEnabled||(o=!0)),n=(n=n>r.maxZoom?r.maxZoom:n)<r.minZoom?r.minZoom:n,o||!Q(n)||n===i||null!=t&&(!Q(t.x)||!Q(t.y)))return null;if(null!=t){var s=a,l=i,u=n;return{zoomed:!0,panned:!0,zoom:u,pan:{x:-u/l*(t.x-s.x)+t.x,y:-u/l*(t.y-s.y)+t.y}}}return{zoomed:!0,panned:!1,zoom:n,pan:a}},zoom:function(e){if(void 0===e)return this._private.zoom;var t=this.getZoomedViewport(e),n=this._private;return null!=t&&t.zoomed?(n.zoom=t.zoom,t.panned&&(n.pan.x=t.pan.x,n.pan.y=t.pan.y),this.emit("zoom"+(t.panned?" pan":"")+" viewport"),this.notify("viewport"),this):this},viewport:function(e){var t=this._private,n=!0,r=!0,a=[],i=!1,o=!1;if(!e)return this;if(Q(e.zoom)||(n=!1),$(e.pan)||(r=!1),!n&&!r)return this;if(n){var s=e.zoom;s<t.minZoom||s>t.maxZoom||!t.zoomingEnabled?i=!0:(t.zoom=s,a.push("zoom"))}if(r&&(!i||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;Q(l.x)&&(t.pan.x=l.x,o=!1),Q(l.y)&&(t.pan.y=l.y,o=!1),o||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(K(e)){var n=e;e=this.mutableElements().filter(n)}else ee(e)||(e=this.mutableElements());if(0!==e.length){var r=e.boundingBox(),a=this.width(),i=this.height();return{x:(a-(t=void 0===t?this._private.zoom:t)*(r.x1+r.x2))/2,y:(i-t*(r.y1+r.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container,a=this;return n.sizeCache=n.sizeCache||(r?(e=a.window().getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},multiClickDebounceTime:function(e){return e?(this._private.multiClickDebounceTime=e,this):this._private.multiClickDebounceTime}};pu.centre=pu.center,pu.autolockNodes=pu.autolock,pu.autoungrabifyNodes=pu.autoungrabify;var gu={data:vo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:vo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:vo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:vo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};gu.attr=gu.data,gu.removeAttr=gu.removeData;var vu=function(e){var t=this,n=(e=me({},e)).container;n&&!J(n)&&J(n[0])&&(n=n[0]);var r=n?n._cyreg:null;(r=r||{})&&r.cy&&(r.cy.destroy(),r={});var a=r.readies=r.readies||[];n&&(n._cyreg=r),r.cy=t;var i=void 0!==f&&void 0!==n&&!e.headless,o=e;o.layout=me({name:i?"grid":"null"},o.layout),o.renderer=me({name:i?"canvas":"null"},o.renderer);var s=function(e,t,n){return void 0!==t?t:void 0!==n?n:e},l=this._private={container:n,ready:!1,options:o,elements:new Ml(this),listeners:[],aniEles:new Ml(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?i:o.styleEnabled,zoom:Q(o.zoom)?o.zoom:1,pan:{x:$(o.pan)&&Q(o.pan.x)?o.pan.x:0,y:$(o.pan)&&Q(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:s(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});l.styleEnabled&&t.setStyle([]);var u=me({},o,o.renderer);t.initRenderer(u);!function(e,t){if(e.some(oe))return qr.all(e).then(t);t(e)}([o.style,o.elements],function(e){var n=e[0],i=e[1];l.styleEnabled&&t.style().append(n),function(e,n,r){t.notifications(!1);var a=t.mutableElements();a.length>0&&a.remove(),null!=e&&($(e)||Z(e))&&t.add(e),t.one("layoutready",function(e){t.notifications(!0),t.emit(e),t.one("load",n),t.emitAndNotify("load")}).one("layoutstop",function(){t.one("done",r),t.emit("done")});var i=me({},t._private.options.layout);i.eles=t.elements(),t.layout(i).run()}(i,function(){t.startAnimationLoop(),l.ready=!0,G(o.ready)&&t.on("ready",o.ready);for(var e=0;e<a.length;e++){var n=a[e];t.on("ready",n)}r&&(r.readies=[]),t.emit("ready")},o.done)})},yu=vu.prototype;me(yu,{instanceString:function(){return"core"},isReady:function(){return this._private.ready},destroyed:function(){return this._private.destroyed},ready:function(e){return this.isReady()?this.emitter().emit("ready",[],e):this.on("ready",e),this},destroy:function(){var e=this;if(!e.destroyed())return e.stopAnimationLoop(),e.destroyRenderer(),this.emit("destroy"),e._private.destroyed=!0,e},hasElementWithId:function(e){return this._private.elements.hasElementWithId(e)},getElementById:function(e){return this._private.elements.getElementById(e)},hasCompoundNodes:function(){return this._private.hasCompoundNodes},headless:function(){return this._private.renderer.isHeadless()},styleEnabled:function(){return this._private.styleEnabled},addToPool:function(e){return this._private.elements.merge(e),this},removeFromPool:function(e){return this._private.elements.unmerge(e),this},container:function(){return this._private.container||null},window:function(){if(null==this._private.container)return f;var e=this._private.container.ownerDocument;return void 0===e||null==e?f:e.defaultView||f},mount:function(e){if(null!=e){var t=this,n=t._private,r=n.options;return!J(e)&&J(e[0])&&(e=e[0]),t.stopAnimationLoop(),t.destroyRenderer(),n.container=e,n.styleEnabled=!0,t.invalidateSize(),t.initRenderer(me({},r,r.renderer,{name:"null"===r.renderer.name?"canvas":r.renderer.name})),t.startAnimationLoop(),t.style(r.style),t.emit("mount"),t}},unmount:function(){var e=this;return e.stopAnimationLoop(),e.destroyRenderer(),e.initRenderer({name:"null"}),e.emit("unmount"),e},options:function(){return it(this._private.options)},json:function(e){var t=this,n=t._private,r=t.mutableElements();if($(e)){if(t.startBatch(),e.elements){var a={},i=function(e,n){for(var r=[],i=[],o=0;o<e.length;o++){var s=e[o];if(s.data.id){var l=""+s.data.id,u=t.getElementById(l);a[l]=!0,0!==u.length?i.push({ele:u,json:s}):n?(s.group=n,r.push(s)):r.push(s)}else at("cy.json() cannot handle elements without an ID attribute")}t.add(r);for(var c=0;c<i.length;c++){var d=i[c],h=d.ele,f=d.json;h.json(f)}};if(Z(e.elements))i(e.elements);else for(var o=["nodes","edges"],s=0;s<o.length;s++){var l=o[s],u=e.elements[l];Z(u)&&i(u,l)}var c=t.collection();r.filter(function(e){return!a[e.id()]}).forEach(function(e){e.isParent()?c.merge(e):e.remove()}),c.forEach(function(e){return e.children().move({parent:null})}),c.forEach(function(e){return function(e){return t.getElementById(e.id())}(e).remove()})}e.style&&t.style(e.style),null!=e.zoom&&e.zoom!==n.zoom&&t.zoom(e.zoom),e.pan&&(e.pan.x===n.pan.x&&e.pan.y===n.pan.y||t.pan(e.pan)),e.data&&t.data(e.data);for(var d=["minZoom","maxZoom","zoomingEnabled","userZoomingEnabled","panningEnabled","userPanningEnabled","boxSelectionEnabled","autolock","autoungrabify","autounselectify","multiClickDebounceTime"],h=0;h<d.length;h++){var f=d[h];null!=e[f]&&t[f](e[f])}return t.endBatch(),this}var p={};!!e?p.elements=this.elements().map(function(e){return e.json()}):(p.elements={},r.forEach(function(e){var t=e.group();p.elements[t]||(p.elements[t]=[]),p.elements[t].push(e.json())})),this._private.styleEnabled&&(p.style=t.style().json()),p.data=it(t.data());var g=n.options;return p.zoomingEnabled=n.zoomingEnabled,p.userZoomingEnabled=n.userZoomingEnabled,p.zoom=n.zoom,p.minZoom=n.minZoom,p.maxZoom=n.maxZoom,p.panningEnabled=n.panningEnabled,p.userPanningEnabled=n.userPanningEnabled,p.pan=it(n.pan),p.boxSelectionEnabled=n.boxSelectionEnabled,p.renderer=it(g.renderer),p.hideEdgesOnViewport=g.hideEdgesOnViewport,p.textureOnViewport=g.textureOnViewport,p.wheelSensitivity=g.wheelSensitivity,p.motionBlur=g.motionBlur,p.multiClickDebounceTime=g.multiClickDebounceTime,p}}),yu.$id=yu.getElementById,[Il,Ul,Gl,Zl,$l,Ql,eu,tu,fu,pu,gu].forEach(function(e){me(yu,e)});var mu={fit:!0,directed:!1,padding:30,circle:!1,grid:!1,spacingFactor:1.75,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,roots:void 0,depthSort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}},bu={maximal:!1,acyclic:!1},xu=function(e){return e.scratch("breadthfirst")},wu=function(e,t){return e.scratch("breadthfirst",t)};function Eu(e){this.options=me({},mu,bu,e)}Eu.prototype.run=function(){var e,t=this.options,n=t.cy,r=t.eles,a=r.nodes().filter(function(e){return e.isChildless()}),i=r,o=t.directed,s=t.acyclic||t.maximal||t.maximalAdjustments>0,l=!!t.boundingBox,u=n.extent(),c=Qt(l?t.boundingBox:{x1:u.x1,y1:u.y1,w:u.w,h:u.h});if(ee(t.roots))e=t.roots;else if(Z(t.roots)){for(var d=[],h=0;h<t.roots.length;h++){var f=t.roots[h],p=n.getElementById(f);d.push(p)}e=n.collection(d)}else if(K(t.roots))e=n.$(t.roots);else if(o)e=a.roots();else{var g=r.components();e=n.collection();for(var v=function(){var t=g[y],n=t.maxDegree(!1),r=t.filter(function(e){return e.degree(!1)===n});e=e.add(r)},y=0;y<g.length;y++)v()}var m=[],b={},x=function(e,t){null==m[t]&&(m[t]=[]);var n=m[t].length;m[t].push(e),wu(e,{index:n,depth:t})};i.bfs({roots:e,directed:t.directed,visit:function(e,t,n,r,a){var i=e[0],o=i.id();i.isChildless()&&x(i,a),b[o]=!0}});for(var w=[],E=0;E<a.length;E++){var k=a[E];b[k.id()]||w.push(k)}var T=function(e){for(var t=m[e],n=0;n<t.length;n++){var r=t[n];null!=r?wu(r,{depth:e,index:n}):(t.splice(n,1),n--)}},C=function(e,n){for(var a=xu(e),i=e.incomers().filter(function(e){return e.isNode()&&r.has(e)}),o=-1,s=e.id(),l=0;l<i.length;l++){var u=i[l],c=xu(u);o=Math.max(o,c.depth)}if(a.depth<=o){if(!t.acyclic&&n[s])return null;var d=o+1;return function(e,t){var n=xu(e),r=n.depth,a=n.index;m[r][a]=null,e.isChildless()&&x(e,t)}(e,d),n[s]=d,!0}return!1};if(o&&s){var P=[],S={},B=function(e){return P.push(e)},D=function(){return P.shift()};for(a.forEach(function(e){return P.push(e)});P.length>0;){var _=D(),A=C(_,S);if(A)_.outgoers().filter(function(e){return e.isNode()&&r.has(e)}).forEach(B);else if(null===A){at("Detected double maximal shift for node `"+_.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var M=0;if(t.avoidOverlap)for(var R=0;R<a.length;R++){var I=a[R].layoutDimensions(t),N=I.w,L=I.h;M=Math.max(M,N,L)}var z={},O=function(e){if(z[e.id()])return z[e.id()];for(var t=xu(e).depth,n=e.neighborhood(),r=0,i=0,o=0;o<n.length;o++){var s=n[o];if(!s.isEdge()&&!s.isParent()&&a.has(s)){var l=xu(s);if(null!=l){var u=l.index,c=l.depth;if(null!=u&&null!=c){var d=m[c].length;c<t&&(r+=u/d,i++)}}}}return r/=i=Math.max(1,i),0===i&&(r=0),z[e.id()]=r,r},V=function(e,t){var n=O(e)-O(t);return 0===n?ye(e.id(),t.id()):n};void 0!==t.depthSort&&(V=t.depthSort);for(var F=m.length,j=0;j<F;j++)m[j].sort(V),T(j);for(var X=[],q=0;q<w.length;q++)X.push(w[q]);X.length&&(m.unshift(X),F=m.length,function(){for(var e=0;e<F;e++)T(e)}());for(var Y=0,W=0;W<F;W++)Y=Math.max(m[W].length,Y);var U=c.x1+c.w/2,H=c.y1+c.h/2,G=a.reduce(function(e,n){return r=n.boundingBox({includeLabels:t.nodeDimensionsIncludeLabels}),{w:-1===e.w?r.w:(e.w+r.w)/2,h:-1===e.h?r.h:(e.h+r.h)/2};var r},{w:-1,h:-1}),$=Math.max(1===F?0:l?(c.h-2*t.padding-G.h)/(F-1):(c.h-2*t.padding-G.h)/(F+1),M),Q=m.reduce(function(e,t){return Math.max(e,t.length)},0);return r.nodes().layoutPositions(this,t,function(e){var n=xu(e),r=n.depth,a=n.index;if(t.circle){var i=Math.min(c.w/2/F,c.h/2/F),o=(i=Math.max(i,M))*r+i-(F>0&&m[0].length<=3?i/2:0),s=2*Math.PI/m[r].length*a;return 0===r&&1===m[0].length&&(o=1),{x:U+o*Math.cos(s),y:H+o*Math.sin(s)}}var u=m[r].length,d=Math.max(1===u?0:l?(c.w-2*t.padding-G.w)/((t.grid?Q:u)-1):(c.w-2*t.padding-G.w)/((t.grid?Q:u)+1),M);return{x:U+(a+1-(u+1)/2)*d,y:H+(r+1-(F+1)/2)*$}}),this};var ku={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Tu(e){this.options=me({},ku,e)}Tu.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,i=r.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));for(var o,s=Qt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l=s.x1+s.w/2,u=s.y1+s.h/2,c=(void 0===t.sweep?2*Math.PI-2*Math.PI/i.length:t.sweep)/Math.max(1,i.length-1),d=0,h=0;h<i.length;h++){var f=i[h].layoutDimensions(t),p=f.w,g=f.h;d=Math.max(d,p,g)}if(o=Q(t.radius)?t.radius:i.length<=1?0:Math.min(s.h,s.w)/2-d,i.length>1&&t.avoidOverlap){d*=1.75;var v=Math.cos(c)-Math.cos(0),y=Math.sin(c)-Math.sin(0),m=Math.sqrt(d*d/(v*v+y*y));o=Math.max(m,o)}return r.nodes().layoutPositions(this,t,function(e,n){var r=t.startAngle+n*c*(a?1:-1),i=o*Math.cos(r),s=o*Math.sin(r);return{x:l+i,y:u+s}}),this};var Cu,Pu={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Su(e){this.options=me({},Pu,e)}Su.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,a=t.eles,i=a.nodes().not(":parent"),o=Qt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,l=o.y1+o.h/2,u=[],c=0,d=0;d<i.length;d++){var h,f=i[d];h=t.concentric(f),u.push({value:h,node:f}),f._private.scratch.concentric=h}i.updateStyle();for(var p=0;p<i.length;p++){var g=i[p].layoutDimensions(t);c=Math.max(c,g.w,g.h)}u.sort(function(e,t){return t.value-e.value});for(var v=t.levelWidth(i),y=[[]],m=y[0],b=0;b<u.length;b++){var x=u[b];if(m.length>0)Math.abs(m[0].value-x.value)>=v&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var E=y.length>0&&y[0].length>1,k=(Math.min(o.w,o.h)/2-w)/(y.length+E?1:0);w=Math.min(w,k)}for(var T=0,C=0;C<y.length;C++){var P=y[C],S=void 0===t.sweep?2*Math.PI-2*Math.PI/P.length:t.sweep,B=P.dTheta=S/Math.max(1,P.length-1);if(P.length>1&&t.avoidOverlap){var D=Math.cos(B)-Math.cos(0),_=Math.sin(B)-Math.sin(0),A=Math.sqrt(w*w/(D*D+_*_));T=Math.max(A,T)}P.r=T,T+=w}if(t.equidistant){for(var M=0,R=0,I=0;I<y.length;I++){var N=y[I].r-R;M=Math.max(M,N)}R=0;for(var L=0;L<y.length;L++){var z=y[L];0===L&&(R=z.r),z.r=R,R+=M}}for(var O={},V=0;V<y.length;V++)for(var F=y[V],j=F.dTheta,X=F.r,q=0;q<F.length;q++){var Y=F[q],W=t.startAngle+(n?1:-1)*j*q,U={x:s+X*Math.cos(W),y:l+X*Math.sin(W)};O[Y.node.id()]=U}return a.nodes().layoutPositions(this,t,function(e){var t=e.id();return O[t]}),this};var Bu={ready:function(){},stop:function(){},animate:!0,animationEasing:void 0,animationDuration:void 0,animateFilter:function(e,t){return!0},animationThreshold:250,refresh:20,fit:!0,padding:30,boundingBox:void 0,nodeDimensionsIncludeLabels:!1,randomize:!1,componentSpacing:40,nodeRepulsion:function(e){return 2048},nodeOverlap:4,idealEdgeLength:function(e){return 32},edgeElasticity:function(e){return 32},nestingFactor:1.2,gravity:1,numIter:1e3,initialTemp:1e3,coolingFactor:.99,minTemp:1};function Du(e){this.options=me({},Bu,e),this.options.layout=this;var t=this.options.eles.nodes(),n=this.options.eles.edges().filter(function(e){var n=e.source().data("id"),r=e.target().data("id"),a=t.some(function(e){return e.data("id")===n}),i=t.some(function(e){return e.data("id")===r});return!a||!i});this.options.eles=this.options.eles.not(n)}Du.prototype.run=function(){var e=this.options,t=e.cy,n=this;n.stopped=!1,!0!==e.animate&&!1!==e.animate||n.emit({type:"layoutstart",layout:n}),Cu=!0===e.debug;var r=_u(t,n,e);Cu&&undefined(r),e.randomize&&Ru(r);var a=Le(),i=function(){Nu(r,t,e),!0===e.fit&&t.fit(e.padding)},o=function(t){return!(n.stopped||t>=e.numIter)&&(Lu(r,e),r.temperature=r.temperature*e.coolingFactor,!(r.temperature<e.minTemp))},s=function(){if(!0===e.animate||!1===e.animate)i(),n.one("layoutstop",e.stop),n.emit({type:"layoutstop",layout:n});else{var t=e.eles.nodes(),a=Iu(r,e,t);t.layoutPositions(n,e,a)}},l=0,u=!0;if(!0===e.animate){var c=function(){for(var t=0;u&&t<e.refresh;)u=o(l),l++,t++;u?(Le()-a>=e.animationThreshold&&i(),Ne(c)):(Ku(r,e),s())};c()}else{for(;u;)u=o(l),l++;Ku(r,e),s()}return this},Du.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},Du.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var _u=function(e,t,n){for(var r=n.eles.edges(),a=n.eles.nodes(),i=Qt(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:i.w,clientHeight:i.h,boundingBox:i},s=n.eles.components(),l={},u=0;u<s.length;u++)for(var c=s[u],d=0;d<c.length;d++){l[c[d].id()]=u}for(u=0;u<o.nodeSize;u++){var h=(y=a[u]).layoutDimensions(n);(R={}).isLocked=y.locked(),R.id=y.data("id"),R.parentId=y.data("parent"),R.cmptId=l[y.id()],R.children=[],R.positionX=y.position("x"),R.positionY=y.position("y"),R.offsetX=0,R.offsetY=0,R.height=h.w,R.width=h.h,R.maxX=R.positionX+R.width/2,R.minX=R.positionX-R.width/2,R.maxY=R.positionY+R.height/2,R.minY=R.positionY-R.height/2,R.padLeft=parseFloat(y.style("padding")),R.padRight=parseFloat(y.style("padding")),R.padTop=parseFloat(y.style("padding")),R.padBottom=parseFloat(y.style("padding")),R.nodeRepulsion=G(n.nodeRepulsion)?n.nodeRepulsion(y):n.nodeRepulsion,o.layoutNodes.push(R),o.idToIndex[R.id]=u}var f=[],p=0,g=-1,v=[];for(u=0;u<o.nodeSize;u++){var y,m=(y=o.layoutNodes[u]).parentId;null!=m?o.layoutNodes[o.idToIndex[m]].children.push(y.id):(f[++g]=y.id,v.push(y.id))}for(o.graphSet.push(v);p<=g;){var b=f[p++],x=o.idToIndex[b],w=o.layoutNodes[x].children;if(w.length>0){o.graphSet.push(w);for(u=0;u<w.length;u++)f[++g]=w[u]}}for(u=0;u<o.graphSet.length;u++){var E=o.graphSet[u];for(d=0;d<E.length;d++){var k=o.idToIndex[E[d]];o.indexToGraph[k]=u}}for(u=0;u<o.edgeSize;u++){var T=r[u],C={};C.id=T.data("id"),C.sourceId=T.data("source"),C.targetId=T.data("target");var P=G(n.idealEdgeLength)?n.idealEdgeLength(T):n.idealEdgeLength,S=G(n.edgeElasticity)?n.edgeElasticity(T):n.edgeElasticity,B=o.idToIndex[C.sourceId],D=o.idToIndex[C.targetId];if(o.indexToGraph[B]!=o.indexToGraph[D]){for(var _=Au(C.sourceId,C.targetId,o),A=o.graphSet[_],M=0,R=o.layoutNodes[B];-1===A.indexOf(R.id);)R=o.layoutNodes[o.idToIndex[R.parentId]],M++;for(R=o.layoutNodes[D];-1===A.indexOf(R.id);)R=o.layoutNodes[o.idToIndex[R.parentId]],M++;P*=M*n.nestingFactor}C.idealLength=P,C.elasticity=S,o.layoutEdges.push(C)}return o},Au=function(e,t,n){var r=Mu(e,t,0,n);return 2>r.count?0:r.graph},Mu=function(e,t,n,r){var a=r.graphSet[n];if(-1<a.indexOf(e)&&-1<a.indexOf(t))return{count:2,graph:n};for(var i=0,o=0;o<a.length;o++){var s=a[o],l=r.idToIndex[s],u=r.layoutNodes[l].children;if(0!==u.length){var c=r.indexToGraph[r.idToIndex[u[0]]],d=Mu(e,t,c,r);if(0!==d.count){if(1!==d.count)return d;if(2===++i)break}}}return{count:i,graph:n}},Ru=function(e,t){for(var n=e.clientWidth,r=e.clientHeight,a=0;a<e.nodeSize;a++){var i=e.layoutNodes[a];0!==i.children.length||i.isLocked||(i.positionX=Math.random()*n,i.positionY=Math.random()*r)}},Iu=function(e,t,n){var r=e.boundingBox,a={x1:1/0,x2:-1/0,y1:1/0,y2:-1/0};return t.boundingBox&&(n.forEach(function(t){var n=e.layoutNodes[e.idToIndex[t.data("id")]];a.x1=Math.min(a.x1,n.positionX),a.x2=Math.max(a.x2,n.positionX),a.y1=Math.min(a.y1,n.positionY),a.y2=Math.max(a.y2,n.positionY)}),a.w=a.x2-a.x1,a.h=a.y2-a.y1),function(n,i){var o=e.layoutNodes[e.idToIndex[n.data("id")]];if(t.boundingBox){var s=(o.positionX-a.x1)/a.w,l=(o.positionY-a.y1)/a.h;return{x:r.x1+s*r.w,y:r.y1+l*r.h}}return{x:o.positionX,y:o.positionY}}},Nu=function(e,t,n){var r=n.layout,a=n.eles.nodes(),i=Iu(e,n,a);a.positions(i),!0!==e.ready&&(e.ready=!0,r.one("layoutready",n.ready),r.emit({type:"layoutready",layout:this}))},Lu=function(e,t,n){zu(e,t),Xu(e),qu(e,t),Yu(e),Wu(e)},zu=function(e,t){for(var n=0;n<e.graphSet.length;n++)for(var r=e.graphSet[n],a=r.length,i=0;i<a;i++)for(var o=e.layoutNodes[e.idToIndex[r[i]]],s=i+1;s<a;s++){var l=e.layoutNodes[e.idToIndex[r[s]]];Vu(o,l,e,t)}},Ou=function(e){return 2*e*Math.random()-1},Vu=function(e,t,n,r){if(e.cmptId===t.cmptId||n.isCompound){var a=t.positionX-e.positionX,i=t.positionY-e.positionY;0===a&&0===i&&(a=Ou(1),i=Ou(1));var o=Fu(e,t,a,i);if(o>0)var s=(u=r.nodeOverlap*o)*a/(g=Math.sqrt(a*a+i*i)),l=u*i/g;else{var u,c=ju(e,a,i),d=ju(t,-1*a,-1*i),h=d.x-c.x,f=d.y-c.y,p=h*h+f*f,g=Math.sqrt(p);s=(u=(e.nodeRepulsion+t.nodeRepulsion)/p)*h/g,l=u*f/g}e.isLocked||(e.offsetX-=s,e.offsetY-=l),t.isLocked||(t.offsetX+=s,t.offsetY+=l)}},Fu=function(e,t,n,r){if(n>0)var a=e.maxX-t.minX;else a=t.maxX-e.minX;if(r>0)var i=e.maxY-t.minY;else i=t.maxY-e.minY;return a>=0&&i>=0?Math.sqrt(a*a+i*i):0},ju=function(e,t,n){var r=e.positionX,a=e.positionY,i=e.height||1,o=e.width||1,s=n/t,l=i/o,u={};return 0===t&&0<n||0===t&&0>n?(u.x=r,u.y=a+i/2,u):0<t&&-1*l<=s&&s<=l?(u.x=r+o/2,u.y=a+o*n/2/t,u):0>t&&-1*l<=s&&s<=l?(u.x=r-o/2,u.y=a-o*n/2/t,u):0<n&&(s<=-1*l||s>=l)?(u.x=r+i*t/2/n,u.y=a+i/2,u):0>n&&(s<=-1*l||s>=l)?(u.x=r-i*t/2/n,u.y=a-i/2,u):u},Xu=function(e,t){for(var n=0;n<e.edgeSize;n++){var r=e.layoutEdges[n],a=e.idToIndex[r.sourceId],i=e.layoutNodes[a],o=e.idToIndex[r.targetId],s=e.layoutNodes[o],l=s.positionX-i.positionX,u=s.positionY-i.positionY;if(0!==l||0!==u){var c=ju(i,l,u),d=ju(s,-1*l,-1*u),h=d.x-c.x,f=d.y-c.y,p=Math.sqrt(h*h+f*f),g=Math.pow(r.idealLength-p,2)/r.elasticity;if(0!==p)var v=g*h/p,y=g*f/p;else v=0,y=0;i.isLocked||(i.offsetX+=v,i.offsetY+=y),s.isLocked||(s.offsetX-=v,s.offsetY-=y)}}},qu=function(e,t){if(0!==t.gravity)for(var n=0;n<e.graphSet.length;n++){var r=e.graphSet[n],a=r.length;if(0===n)var i=e.clientHeight/2,o=e.clientWidth/2;else{var s=e.layoutNodes[e.idToIndex[r[0]]],l=e.layoutNodes[e.idToIndex[s.parentId]];i=l.positionX,o=l.positionY}for(var u=0;u<a;u++){var c=e.layoutNodes[e.idToIndex[r[u]]];if(!c.isLocked){var d=i-c.positionX,h=o-c.positionY,f=Math.sqrt(d*d+h*h);if(f>1){var p=t.gravity*d/f,g=t.gravity*h/f;c.offsetX+=p,c.offsetY+=g}}}}},Yu=function(e,t){var n=[],r=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;r<=a;){var i=n[r++],o=e.idToIndex[i],s=e.layoutNodes[o],l=s.children;if(0<l.length&&!s.isLocked){for(var u=s.offsetX,c=s.offsetY,d=0;d<l.length;d++){var h=e.layoutNodes[e.idToIndex[l[d]]];h.offsetX+=u,h.offsetY+=c,n[++a]=l[d]}s.offsetX=0,s.offsetY=0}}},Wu=function(e,t){for(var n=0;n<e.nodeSize;n++){0<(a=e.layoutNodes[n]).children.length&&(a.maxX=void 0,a.minX=void 0,a.maxY=void 0,a.minY=void 0)}for(n=0;n<e.nodeSize;n++){if(!(0<(a=e.layoutNodes[n]).children.length||a.isLocked)){var r=Uu(a.offsetX,a.offsetY,e.temperature);a.positionX+=r.x,a.positionY+=r.y,a.offsetX=0,a.offsetY=0,a.minX=a.positionX-a.width,a.maxX=a.positionX+a.width,a.minY=a.positionY-a.height,a.maxY=a.positionY+a.height,Hu(a,e)}}for(n=0;n<e.nodeSize;n++){var a;0<(a=e.layoutNodes[n]).children.length&&!a.isLocked&&(a.positionX=(a.maxX+a.minX)/2,a.positionY=(a.maxY+a.minY)/2,a.width=a.maxX-a.minX,a.height=a.maxY-a.minY)}},Uu=function(e,t,n){var r=Math.sqrt(e*e+t*t);if(r>n)var a={x:n*e/r,y:n*t/r};else a={x:e,y:t};return a},Hu=function(e,t){var n=e.parentId;if(null!=n){var r=t.layoutNodes[t.idToIndex[n]],a=!1;return(null==r.maxX||e.maxX+r.padRight>r.maxX)&&(r.maxX=e.maxX+r.padRight,a=!0),(null==r.minX||e.minX-r.padLeft<r.minX)&&(r.minX=e.minX-r.padLeft,a=!0),(null==r.maxY||e.maxY+r.padBottom>r.maxY)&&(r.maxY=e.maxY+r.padBottom,a=!0),(null==r.minY||e.minY-r.padTop<r.minY)&&(r.minY=e.minY-r.padTop,a=!0),a?Hu(r,t):void 0}},Ku=function(e,t){for(var n=e.layoutNodes,r=[],a=0;a<n.length;a++){var i=n[a],o=i.cmptId;(r[o]=r[o]||[]).push(i)}var s=0;for(a=0;a<r.length;a++){if(g=r[a]){g.x1=1/0,g.x2=-1/0,g.y1=1/0,g.y2=-1/0;for(var l=0;l<g.length;l++){var u=g[l];g.x1=Math.min(g.x1,u.positionX-u.width/2),g.x2=Math.max(g.x2,u.positionX+u.width/2),g.y1=Math.min(g.y1,u.positionY-u.height/2),g.y2=Math.max(g.y2,u.positionY+u.height/2)}g.w=g.x2-g.x1,g.h=g.y2-g.y1,s+=g.w*g.h}}r.sort(function(e,t){return t.w*t.h-e.w*e.h});var c=0,d=0,h=0,f=0,p=Math.sqrt(s)*e.clientWidth/e.clientHeight;for(a=0;a<r.length;a++){var g;if(g=r[a]){for(l=0;l<g.length;l++){(u=g[l]).isLocked||(u.positionX+=c-g.x1,u.positionY+=d-g.y1)}c+=g.w+t.componentSpacing,h+=g.w+t.componentSpacing,f=Math.max(f,g.h),h>p&&(d+=f+t.componentSpacing,c=0,h=0,f=0)}}},Gu={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Zu(e){this.options=me({},Gu,e)}Zu.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=r.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));var i=Qt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===i.h||0===i.w)r.nodes().layoutPositions(this,t,function(e){return{x:i.x1,y:i.y1}});else{var o=a.size(),s=Math.sqrt(o*i.h/i.w),l=Math.round(s),u=Math.round(i.w/i.h*s),c=function(e){if(null==e)return Math.min(l,u);Math.min(l,u)==l?l=e:u=e},d=function(e){if(null==e)return Math.max(l,u);Math.max(l,u)==l?l=e:u=e},h=t.rows,f=null!=t.cols?t.cols:t.columns;if(null!=h&&null!=f)l=h,u=f;else if(null!=h&&null==f)l=h,u=Math.ceil(o/l);else if(null==h&&null!=f)u=f,l=Math.ceil(o/u);else if(u*l>o){var p=c(),g=d();(p-1)*g>=o?c(p-1):(g-1)*p>=o&&d(g-1)}else for(;u*l<o;){var v=c(),y=d();(y+1)*v>=o?d(y+1):c(v+1)}var m=i.w/u,b=i.h/l;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x<a.length;x++){var w=a[x],E=w._private.position;null!=E.x&&null!=E.y||(E.x=0,E.y=0);var k=w.layoutDimensions(t),T=t.avoidOverlapPadding,C=k.w+T,P=k.h+T;m=Math.max(m,C),b=Math.max(b,P)}for(var S={},B=function(e,t){return!!S["c-"+e+"-"+t]},D=function(e,t){S["c-"+e+"-"+t]=!0},_=0,A=0,M=function(){++A>=u&&(A=0,_++)},R={},I=0;I<a.length;I++){var N=a[I],L=t.position(N);if(L&&(void 0!==L.row||void 0!==L.col)){var z={row:L.row,col:L.col};if(void 0===z.col)for(z.col=0;B(z.row,z.col);)z.col++;else if(void 0===z.row)for(z.row=0;B(z.row,z.col);)z.row++;R[N.id()]=z,D(z.row,z.col)}}a.layoutPositions(this,t,function(e,t){var n,r;if(e.locked()||e.isParent())return!1;var a=R[e.id()];if(a)n=a.col*m+m/2+i.x1,r=a.row*b+b/2+i.y1;else{for(;B(_,A);)M();n=A*m+m/2+i.x1,r=_*b+b/2+i.y1,D(_,A),M()}return{x:n,y:r}})}return this};var $u={ready:function(){},stop:function(){}};function Qu(e){this.options=me({},$u,e)}Qu.prototype.run=function(){var e=this.options,t=e.eles,n=this;return e.cy,n.emit("layoutstart"),t.nodes().positions(function(){return{x:0,y:0}}),n.one("layoutready",e.ready),n.emit("layoutready"),n.one("layoutstop",e.stop),n.emit("layoutstop"),this},Qu.prototype.stop=function(){return this};var Ju={positions:void 0,zoom:void 0,pan:void 0,fit:!0,padding:30,spacingFactor:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function ec(e){this.options=me({},Ju,e)}ec.prototype.run=function(){var e=this.options,t=e.eles.nodes(),n=G(e.positions);return t.layoutPositions(this,e,function(t,r){var a=function(t){if(null==e.positions)return function(e){return{x:e.x,y:e.y}}(t.position());if(n)return e.positions(t);var r=e.positions[t._private.data.id];return null==r?null:r}(t);return!t.locked()&&null!=a&&a}),this};var tc={fit:!0,padding:30,boundingBox:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function nc(e){this.options=me({},tc,e)}nc.prototype.run=function(){var e=this.options,t=e.cy,n=e.eles,r=Qt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()});return n.nodes().layoutPositions(this,e,function(e,t){return{x:r.x1+Math.round(Math.random()*r.w),y:r.y1+Math.round(Math.random()*r.h)}}),this};var rc=[{name:"breadthfirst",impl:Eu},{name:"circle",impl:Tu},{name:"concentric",impl:Su},{name:"cose",impl:Du},{name:"grid",impl:Zu},{name:"null",impl:Qu},{name:"preset",impl:ec},{name:"random",impl:nc}];function ac(e){this.options=e,this.notifications=0}var ic=function(){},oc=function(){throw new Error("A headless instance can not render images")};ac.prototype={recalculateRenderedStyle:ic,notify:function(){this.notifications++},init:ic,isHeadless:function(){return!0},png:oc,jpg:oc};var sc={arrowShapeWidth:.3,registerArrowShapes:function(){var e=this.arrowShapes={},t=this,n=function(e,t,n,r,a,i,o){var s=a.x-n/2-o,l=a.x+n/2+o,u=a.y-n/2-o,c=a.y+n/2+o;return s<=e&&e<=l&&u<=t&&t<=c},r=function(e,t,n,r,a){var i=e*Math.cos(r)-t*Math.sin(r),o=(e*Math.sin(r)+t*Math.cos(r))*n;return{x:i*n+a.x,y:o+a.y}},a=function(e,t,n,a){for(var i=[],o=0;o<e.length;o+=2){var s=e[o],l=e[o+1];i.push(r(s,l,t,n,a))}return i},i=function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];t.push(r.x,r.y)}return t},o=function(e){return e.pstyle("width").pfValue*e.pstyle("arrow-scale").pfValue*2},s=function(r,s){K(s)&&(s=e[s]),e[r]=me({name:r,points:[-.15,-.3,.15,-.3,.15,.3,-.15,.3],collide:function(e,t,n,r,o,s){var l=i(a(this.points,n+2*s,r,o));return pn(e,t,l)},roughCollide:n,draw:function(e,n,r,i){var o=a(this.points,n,r,i);t.arrowShapeImpl("polygon")(e,o)},spacing:function(e){return 0},gap:o},s)};s("none",{collide:Je,roughCollide:Je,draw:tt,spacing:et,gap:et}),s("triangle",{points:[-.15,-.3,0,0,.15,-.3]}),s("arrow","triangle"),s("triangle-backcurve",{points:e.triangle.points,controlPoint:[0,-.15],roughCollide:n,draw:function(e,n,i,o,s){var l=a(this.points,n,i,o),u=this.controlPoint,c=r(u[0],u[1],n,i,o);t.arrowShapeImpl(this.name)(e,l,c)},gap:function(e){return.8*o(e)}}),s("triangle-tee",{points:[0,0,.15,-.3,-.15,-.3,0,0],pointsTee:[-.15,-.4,-.15,-.5,.15,-.5,.15,-.4],collide:function(e,t,n,r,o,s,l){var u=i(a(this.points,n+2*l,r,o)),c=i(a(this.pointsTee,n+2*l,r,o));return pn(e,t,u)||pn(e,t,c)},draw:function(e,n,r,i,o){var s=a(this.points,n,r,i),l=a(this.pointsTee,n,r,i);t.arrowShapeImpl(this.name)(e,s,l)}}),s("circle-triangle",{radius:.15,pointsTr:[0,-.15,.15,-.45,-.15,-.45,0,-.15],collide:function(e,t,n,r,o,s,l){var u=o,c=Math.pow(u.x-e,2)+Math.pow(u.y-t,2)<=Math.pow((n+2*l)*this.radius,2),d=i(a(this.points,n+2*l,r,o));return pn(e,t,d)||c},draw:function(e,n,r,i,o){var s=a(this.pointsTr,n,r,i);t.arrowShapeImpl(this.name)(e,s,i.x,i.y,this.radius*n)},spacing:function(e){return t.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.radius}}),s("triangle-cross",{points:[0,0,.15,-.3,-.15,-.3,0,0],baseCrossLinePts:[-.15,-.4,-.15,-.4,.15,-.4,.15,-.4],crossLinePts:function(e,t){var n=this.baseCrossLinePts.slice(),r=t/e;return n[3]=n[3]-r,n[5]=n[5]-r,n},collide:function(e,t,n,r,o,s,l){var u=i(a(this.points,n+2*l,r,o)),c=i(a(this.crossLinePts(n,s),n+2*l,r,o));return pn(e,t,u)||pn(e,t,c)},draw:function(e,n,r,i,o){var s=a(this.points,n,r,i),l=a(this.crossLinePts(n,o),n,r,i);t.arrowShapeImpl(this.name)(e,s,l)}}),s("vee",{points:[-.15,-.3,0,0,.15,-.3,0,-.15],gap:function(e){return.525*o(e)}}),s("circle",{radius:.15,collide:function(e,t,n,r,a,i,o){var s=a;return Math.pow(s.x-e,2)+Math.pow(s.y-t,2)<=Math.pow((n+2*o)*this.radius,2)},draw:function(e,n,r,a,i){t.arrowShapeImpl(this.name)(e,a.x,a.y,this.radius*n)},spacing:function(e){return t.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.radius}}),s("tee",{points:[-.15,0,-.15,-.1,.15,-.1,.15,0],spacing:function(e){return 1},gap:function(e){return 1}}),s("square",{points:[-.15,0,.15,0,.15,-.3,-.15,-.3]}),s("diamond",{points:[-.15,-.15,0,-.3,.15,-.15,0,0],gap:function(e){return e.pstyle("width").pfValue*e.pstyle("arrow-scale").value}}),s("chevron",{points:[0,0,-.15,-.15,-.1,-.2,0,-.1,.1,-.2,.15,-.15],gap:function(e){return.95*e.pstyle("width").pfValue*e.pstyle("arrow-scale").value}})}},lc={projectIntoViewport:function(e,t){var n=this.cy,r=this.findContainerClientCoords(),a=r[0],i=r[1],o=r[4],s=n.pan(),l=n.zoom();return[((e-a)/o-s.x)/l,((t-i)/o-s.y)/l]},findContainerClientCoords:function(){if(this.containerBB)return this.containerBB;var e=this.container,t=e.getBoundingClientRect(),n=this.cy.window().getComputedStyle(e),r=function(e){return parseFloat(n.getPropertyValue(e))},a=r("padding-left"),i=r("padding-right"),o=r("padding-top"),s=r("padding-bottom"),l=r("border-left-width"),u=r("border-right-width"),c=r("border-top-width"),d=(r("border-bottom-width"),e.clientWidth),h=e.clientHeight,f=a+i,p=o+s,g=l+u,v=t.width/(d+g),y=d-f,m=h-p,b=t.left+a+l,x=t.top+o+c;return this.containerBB=[b,x,y,m,v]},invalidateContainerClientCoordsCache:function(){this.containerBB=null},findNearestElement:function(e,t,n,r){return this.findNearestElements(e,t,n,r)[0]},findNearestElements:function(e,t,n,r){var a,i,o=this,s=this,l=s.getCachedZSortedEles(),u=[],c=s.cy.zoom(),d=s.cy.hasCompoundNodes(),h=(r?24:8)/c,f=(r?8:2)/c,p=(r?8:2)/c,g=1/0;function v(e,t){if(e.isNode()){if(i)return;i=e,u.push(e)}if(e.isEdge()&&(null==t||t<g))if(a){if(a.pstyle("z-compound-depth").value===e.pstyle("z-compound-depth").value&&a.pstyle("z-compound-depth").value===e.pstyle("z-compound-depth").value)for(var n=0;n<u.length;n++)if(u[n].isEdge()){u[n]=e,a=e,g=null!=t?t:g;break}}else u.push(e),a=e,g=null!=t?t:g}function y(n){var r=n.outerWidth()+2*f,a=n.outerHeight()+2*f,i=r/2,l=a/2,u=n.position(),c="auto"===n.pstyle("corner-radius").value?"auto":n.pstyle("corner-radius").pfValue,d=n._private.rscratch;if(u.x-i<=e&&e<=u.x+i&&u.y-l<=t&&t<=u.y+l&&s.nodeShapes[o.getNodeShape(n)].checkPoint(e,t,0,r,a,u.x,u.y,c,d))return v(n,0),!0}function m(n){var r,a=n._private,i=a.rscratch,l=n.pstyle("width").pfValue,c=n.pstyle("arrow-scale").value,f=l/2+h,p=f*f,g=2*f,m=a.source,b=a.target;if("segments"===i.edgeType||"straight"===i.edgeType||"haystack"===i.edgeType){for(var x=i.allpts,w=0;w+3<x.length;w+=2)if(cn(e,t,x[w],x[w+1],x[w+2],x[w+3],g)&&p>(r=fn(e,t,x[w],x[w+1],x[w+2],x[w+3])))return v(n,r),!0}else if("bezier"===i.edgeType||"multibezier"===i.edgeType||"self"===i.edgeType||"compound"===i.edgeType)for(x=i.allpts,w=0;w+5<i.allpts.length;w+=4)if(dn(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5],g)&&p>(r=hn(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5])))return v(n,r),!0;m=m||a.source,b=b||a.target;var E=o.getArrowWidth(l,c),k=[{name:"source",x:i.arrowStartX,y:i.arrowStartY,angle:i.srcArrowAngle},{name:"target",x:i.arrowEndX,y:i.arrowEndY,angle:i.tgtArrowAngle},{name:"mid-source",x:i.midX,y:i.midY,angle:i.midsrcArrowAngle},{name:"mid-target",x:i.midX,y:i.midY,angle:i.midtgtArrowAngle}];for(w=0;w<k.length;w++){var T=k[w],C=s.arrowShapes[n.pstyle(T.name+"-arrow-shape").value],P=n.pstyle("width").pfValue;if(C.roughCollide(e,t,E,T.angle,{x:T.x,y:T.y},P,h)&&C.collide(e,t,E,T.angle,{x:T.x,y:T.y},P,h))return v(n),!0}d&&u.length>0&&(y(m),y(b))}function b(e,t,n){return ht(e,t,n)}function x(n,r){var a,i=n._private,o=p;a=r?r+"-":"",n.boundingBox();var s=i.labelBounds[r||"main"],l=n.pstyle(a+"label").value;if("yes"===n.pstyle("text-events").strValue&&l){var u=b(i.rscratch,"labelX",r),c=b(i.rscratch,"labelY",r),d=b(i.rscratch,"labelAngle",r),h=n.pstyle(a+"text-margin-x").pfValue,f=n.pstyle(a+"text-margin-y").pfValue,g=s.x1-o-h,y=s.x2+o-h,m=s.y1-o-f,x=s.y2+o-f;if(d){var w=Math.cos(d),E=Math.sin(d),k=function(e,t){return{x:(e-=u)*w-(t-=c)*E+u,y:e*E+t*w+c}},T=k(g,m),C=k(g,x),P=k(y,m),S=k(y,x),B=[T.x+h,T.y+f,P.x+h,P.y+f,S.x+h,S.y+f,C.x+h,C.y+f];if(pn(e,t,B))return v(n),!0}else if(on(s,e,t))return v(n),!0}}n&&(l=l.interactive);for(var w=l.length-1;w>=0;w--){var E=l[w];E.isNode()?y(E)||x(E):m(E)||x(E)||x(E,"source")||x(E,"target")}return u},getAllInBox:function(e,t,n,r){var a=this.getCachedZSortedEles().interactive,i=2/this.cy.zoom(),o=[],s=Math.min(e,n),l=Math.max(e,n),u=Math.min(t,r),c=Math.max(t,r),d=Qt({x1:e=s,y1:t=u,x2:n=l,y2:r=c});function h(e,t,n){return ht(e,t,n)}function f(e,t){var n=e._private,r=i;e.boundingBox();var a=n.labelBounds.main,o=h(n.rscratch,"labelX",t),s=h(n.rscratch,"labelY",t),l=h(n.rscratch,"labelAngle",t),u=e.pstyle("text-margin-x").pfValue,c=e.pstyle("text-margin-y").pfValue,d=a.x1-r-u,f=a.x2+r-u,p=a.y1-r-c,g=a.y2+r-c;if(l){var v=Math.cos(l),y=Math.sin(l),m=function(e,t){return{x:(e-=o)*v-(t-=s)*y+o,y:e*y+t*v+s}};return[m(d,p),m(f,p),m(f,g),m(d,g)]}return[{x:d,y:p},{x:f,y:p},{x:f,y:g},{x:d,y:g}]}for(var p=0;p<a.length;p++){var g=a[p];if(g.isNode()){var v=g,y="yes"===v.pstyle("text-events").strValue,m="yes"===v.pstyle("box-select-labels").strValue,b=v.boundingBox({includeNodes:!0,includeEdges:!1,includeLabels:m&&y});if(an(d,b))_n(f(v),[{x:d.x1,y:d.y1},{x:d.x2,y:d.y1},{x:d.x2,y:d.y2},{x:d.x1,y:d.y2}])&&o.push(v)}else{var x=g,w=x._private,E=w.rscratch;if(null!=E.startX&&null!=E.startY&&!on(d,E.startX,E.startY))continue;if(null!=E.endX&&null!=E.endY&&!on(d,E.endX,E.endY))continue;if("bezier"===E.edgeType||"multibezier"===E.edgeType||"self"===E.edgeType||"compound"===E.edgeType||"segments"===E.edgeType||"haystack"===E.edgeType){for(var k=w.rstyle.bezierPts||w.rstyle.linePts||w.rstyle.haystackPts,T=!0,C=0;C<k.length;C++)if(!sn(d,k[C])){T=!1;break}T&&o.push(x)}else"haystack"!==E.edgeType&&"straight"!==E.edgeType||o.push(x)}}return o}},uc={calculateArrowAngles:function(e){var t,n,r,a,i,o,s=e._private.rscratch,l="haystack"===s.edgeType,u="bezier"===s.edgeType,c="multibezier"===s.edgeType,d="segments"===s.edgeType,h="compound"===s.edgeType,f="self"===s.edgeType;if(l?(r=s.haystackPts[0],a=s.haystackPts[1],i=s.haystackPts[2],o=s.haystackPts[3]):(r=s.arrowStartX,a=s.arrowStartY,i=s.arrowEndX,o=s.arrowEndY),g=s.midX,v=s.midY,d)t=r-s.segpts[0],n=a-s.segpts[1];else if(c||h||f||u){var p=s.allpts;t=r-Gt(p[0],p[2],p[4],.1),n=a-Gt(p[1],p[3],p[5],.1)}else t=r-g,n=a-v;s.srcArrowAngle=qt(t,n);var g=s.midX,v=s.midY;if(l&&(g=(r+i)/2,v=(a+o)/2),t=i-r,n=o-a,d)if((p=s.allpts).length/2%2==0){var y=(C=p.length/2)-2;t=p[C]-p[y],n=p[C+1]-p[y+1]}else if(s.isRound)t=s.midVector[1],n=-s.midVector[0];else{y=(C=p.length/2-1)-2;t=p[C]-p[y],n=p[C+1]-p[y+1]}else if(c||h||f){var m,b,x,w,p=s.allpts;if(s.ctrlpts.length/2%2==0){var E=(k=(T=p.length/2-1)+2)+2;m=Gt(p[T],p[k],p[E],0),b=Gt(p[T+1],p[k+1],p[E+1],0),x=Gt(p[T],p[k],p[E],1e-4),w=Gt(p[T+1],p[k+1],p[E+1],1e-4)}else{var k,T;E=(k=p.length/2-1)+2;m=Gt(p[T=k-2],p[k],p[E],.4999),b=Gt(p[T+1],p[k+1],p[E+1],.4999),x=Gt(p[T],p[k],p[E],.5),w=Gt(p[T+1],p[k+1],p[E+1],.5)}t=x-m,n=w-b}if(s.midtgtArrowAngle=qt(t,n),s.midDispX=t,s.midDispY=n,t*=-1,n*=-1,d)if((p=s.allpts).length/2%2==0);else if(!s.isRound){var C,P=(C=p.length/2-1)+2;t=-(p[P]-p[C]),n=-(p[P+1]-p[C+1])}if(s.midsrcArrowAngle=qt(t,n),d)t=i-s.segpts[s.segpts.length-2],n=o-s.segpts[s.segpts.length-1];else if(c||h||f||u){var S=(p=s.allpts).length;t=i-Gt(p[S-6],p[S-4],p[S-2],.9),n=o-Gt(p[S-5],p[S-3],p[S-1],.9)}else t=i-g,n=o-v;s.tgtArrowAngle=qt(t,n)}};uc.getArrowWidth=uc.getArrowHeight=function(e,t){var n=this.arrowWidthCache=this.arrowWidthCache||{},r=n[e+", "+t];return r||(r=Math.max(Math.pow(13.37*e,.9),29)*t,n[e+", "+t]=r,r)};var cc,dc,hc,fc,pc,gc,vc,yc,mc,bc,xc,wc,Ec,kc,Tc,Cc,Pc,Sc={},Bc={},Dc=function(e,t,n){n.x=t.x-e.x,n.y=t.y-e.y,n.len=Math.sqrt(n.x*n.x+n.y*n.y),n.nx=n.x/n.len,n.ny=n.y/n.len,n.ang=Math.atan2(n.ny,n.nx)},_c=function(e,t,n,r,a){var i,o;if(e!==Pc?Dc(t,e,Sc):((o=Sc).x=-1*(i=Bc).x,o.y=-1*i.y,o.nx=-1*i.nx,o.ny=-1*i.ny,o.ang=i.ang>0?-(Math.PI-i.ang):Math.PI+i.ang),Dc(t,n,Bc),hc=Sc.nx*Bc.ny-Sc.ny*Bc.nx,fc=Sc.nx*Bc.nx-Sc.ny*-Bc.ny,vc=Math.asin(Math.max(-1,Math.min(1,hc))),Math.abs(vc)<1e-6)return cc=t.x,dc=t.y,void(mc=xc=0);pc=1,gc=!1,fc<0?vc<0?vc=Math.PI+vc:(vc=Math.PI-vc,pc=-1,gc=!0):vc>0&&(pc=-1,gc=!0),xc=void 0!==t.radius?t.radius:r,yc=vc/2,wc=Math.min(Sc.len/2,Bc.len/2),a?(bc=Math.abs(Math.cos(yc)*xc/Math.sin(yc)))>wc?(bc=wc,mc=Math.abs(bc*Math.sin(yc)/Math.cos(yc))):mc=xc:(bc=Math.min(wc,xc),mc=Math.abs(bc*Math.sin(yc)/Math.cos(yc))),Tc=t.x+Bc.nx*bc,Cc=t.y+Bc.ny*bc,cc=Tc-Bc.ny*mc*pc,dc=Cc+Bc.nx*mc*pc,Ec=t.x+Sc.nx*bc,kc=t.y+Sc.ny*bc,Pc=t};function Ac(e,t){0===t.radius?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function Mc(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];return 0===r||0===t.radius?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(_c(e,t,n,r,a),{cx:cc,cy:dc,radius:mc,startX:Ec,startY:kc,stopX:Tc,stopY:Cc,startAngle:Sc.ang+Math.PI/2*pc,endAngle:Bc.ang-Math.PI/2*pc,counterClockwise:gc})}var Rc=.01,Ic=Math.sqrt(.02),Nc={};function Lc(e){var t=[];if(null!=e){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];t.push({x:r,y:a})}return t}}Nc.findMidptPtsEtc=function(e,t){var n,r=t.posPts,a=t.intersectionPts,i=t.vectorNormInverse,o=e.pstyle("source-endpoint"),s=e.pstyle("target-endpoint"),u=null!=o.units&&null!=s.units;switch(e.pstyle("edge-distances").value){case"node-position":n=r;break;case"intersection":n=a;break;case"endpoints":if(u){var c=l(this.manualEndptToPx(e.source()[0],o),2),d=c[0],h=c[1],f=l(this.manualEndptToPx(e.target()[0],s),2),p=f[0],g=f[1],v={x1:d,y1:h,x2:p,y2:g};i=function(e,t,n,r){var a=r-t,i=n-e,o=Math.sqrt(i*i+a*a);return{x:-a/o,y:i/o}}(d,h,p,g),n=v}else at("Edge ".concat(e.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),n=a}return{midptPts:n,vectorNormInverse:i}},Nc.findHaystackPoints=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=n._private,a=r.rscratch;if(!a.haystack){var i=2*Math.random()*Math.PI;a.source={x:Math.cos(i),y:Math.sin(i)},i=2*Math.random()*Math.PI,a.target={x:Math.cos(i),y:Math.sin(i)}}var o=r.source,s=r.target,l=o.position(),u=s.position(),c=o.width(),d=s.width(),h=o.height(),f=s.height(),p=n.pstyle("haystack-radius").value/2;a.haystackPts=a.allpts=[a.source.x*c*p+l.x,a.source.y*h*p+l.y,a.target.x*d*p+u.x,a.target.y*f*p+u.y],a.midX=(a.allpts[0]+a.allpts[2])/2,a.midY=(a.allpts[1]+a.allpts[3])/2,a.edgeType="haystack",a.haystack=!0,this.storeEdgeProjections(n),this.calculateArrowAngles(n),this.recalculateEdgeLabelProjections(n),this.calculateLabelAngles(n)}},Nc.findSegmentsPoints=function(e,t){var n=e._private.rscratch,r=e.pstyle("segment-weights"),a=e.pstyle("segment-distances"),i=e.pstyle("segment-radii"),o=e.pstyle("radius-type"),s=Math.min(r.pfValue.length,a.pfValue.length),l=i.pfValue[i.pfValue.length-1],u=o.pfValue[o.pfValue.length-1];n.edgeType="segments",n.segpts=[],n.radii=[],n.isArcRadius=[];for(var c=0;c<s;c++){var d=r.pfValue[c],h=a.pfValue[c],f=1-d,p=d,g=this.findMidptPtsEtc(e,t),v=g.midptPts,y=g.vectorNormInverse,m={x:v.x1*f+v.x2*p,y:v.y1*f+v.y2*p};n.segpts.push(m.x+y.x*h,m.y+y.y*h),n.radii.push(void 0!==i.pfValue[c]?i.pfValue[c]:l),n.isArcRadius.push("arc-radius"===(void 0!==o.pfValue[c]?o.pfValue[c]:u))}},Nc.findLoopPoints=function(e,t,n,r){var a=e._private.rscratch,i=t.dirCounts,o=t.srcPos,s=e.pstyle("control-point-distances"),l=s?s.pfValue[0]:void 0,u=e.pstyle("loop-direction").pfValue,c=e.pstyle("loop-sweep").pfValue,d=e.pstyle("control-point-step-size").pfValue;a.edgeType="self";var h=n,f=d;r&&(h=0,f=l);var p=u-Math.PI/2,g=p-c/2,v=p+c/2,y=String(u+"_"+c);h=void 0===i[y]?i[y]=0:++i[y],a.ctrlpts=[o.x+1.4*Math.cos(g)*f*(h/3+1),o.y+1.4*Math.sin(g)*f*(h/3+1),o.x+1.4*Math.cos(v)*f*(h/3+1),o.y+1.4*Math.sin(v)*f*(h/3+1)]},Nc.findCompoundLoopPoints=function(e,t,n,r){var a=e._private.rscratch;a.edgeType="compound";var i=t.srcPos,o=t.tgtPos,s=t.srcW,l=t.srcH,u=t.tgtW,c=t.tgtH,d=e.pstyle("control-point-step-size").pfValue,h=e.pstyle("control-point-distances"),f=h?h.pfValue[0]:void 0,p=n,g=d;r&&(p=0,g=f);var v={x:i.x-s/2,y:i.y-l/2},y={x:o.x-u/2,y:o.y-c/2},m={x:Math.min(v.x,y.x),y:Math.min(v.y,y.y)},b=Math.max(.5,Math.log(s*Rc)),x=Math.max(.5,Math.log(u*Rc));a.ctrlpts=[m.x,m.y-(1+Math.pow(50,1.12)/100)*g*(p/3+1)*b,m.x-(1+Math.pow(50,1.12)/100)*g*(p/3+1)*x,m.y]},Nc.findStraightEdgePoints=function(e){e._private.rscratch.edgeType="straight"},Nc.findBezierPoints=function(e,t,n,r,a){var i=e._private.rscratch,o=e.pstyle("control-point-step-size").pfValue,s=e.pstyle("control-point-distances"),l=e.pstyle("control-point-weights"),u=s&&l?Math.min(s.value.length,l.value.length):1,c=s?s.pfValue[0]:void 0,d=l.value[0],h=r;i.edgeType=h?"multibezier":"bezier",i.ctrlpts=[];for(var f=0;f<u;f++){var p=(.5-t.eles.length/2+n)*o*(a?-1:1),g=void 0,v=Wt(p);h&&(c=s?s.pfValue[f]:o,d=l.value[f]);var y=void 0!==(g=r?c:void 0!==c?v*c:void 0)?g:p,m=1-d,b=d,x=this.findMidptPtsEtc(e,t),w=x.midptPts,E=x.vectorNormInverse,k={x:w.x1*m+w.x2*b,y:w.y1*m+w.y2*b};i.ctrlpts.push(k.x+E.x*y,k.y+E.y*y)}},Nc.findTaxiPoints=function(e,t){var n=e._private.rscratch;n.edgeType="segments";var r="vertical",a="horizontal",i="leftward",o="rightward",s="downward",l="upward",u=t.posPts,c=t.srcW,d=t.srcH,h=t.tgtW,f=t.tgtH,p="node-position"!==e.pstyle("edge-distances").value,g=e.pstyle("taxi-direction").value,v=g,y=e.pstyle("taxi-turn"),m="%"===y.units,b=y.pfValue,x=b<0,w=e.pstyle("taxi-turn-min-distance").pfValue,E=p?(c+h)/2:0,k=p?(d+f)/2:0,T=u.x2-u.x1,C=u.y2-u.y1,P=function(e,t){return e>0?Math.max(e-t,0):Math.min(e+t,0)},S=P(T,E),B=P(C,k),D=!1;"auto"===v?g=Math.abs(S)>Math.abs(B)?a:r:v===l||v===s?(g=r,D=!0):v!==i&&v!==o||(g=a,D=!0);var _,A=g===r,M=A?B:S,R=A?C:T,I=Wt(R),N=!1;(D&&(m||x)||!(v===s&&R<0||v===l&&R>0||v===i&&R>0||v===o&&R<0)||(M=(I*=-1)*Math.abs(M),N=!0),m)?_=(b<0?1+b:b)*M:_=(b<0?M:0)+b*I;var L=function(e){return Math.abs(e)<w||Math.abs(e)>=Math.abs(M)},z=L(_),O=L(Math.abs(M)-Math.abs(_));if((z||O)&&!N)if(A){var V=Math.abs(R)<=d/2,F=Math.abs(T)<=h/2;if(V){var j=(u.x1+u.x2)/2,X=u.y1,q=u.y2;n.segpts=[j,X,j,q]}else if(F){var Y=(u.y1+u.y2)/2,W=u.x1,U=u.x2;n.segpts=[W,Y,U,Y]}else n.segpts=[u.x1,u.y2]}else{var H=Math.abs(R)<=c/2,K=Math.abs(C)<=f/2;if(H){var G=(u.y1+u.y2)/2,Z=u.x1,$=u.x2;n.segpts=[Z,G,$,G]}else if(K){var Q=(u.x1+u.x2)/2,J=u.y1,ee=u.y2;n.segpts=[Q,J,Q,ee]}else n.segpts=[u.x2,u.y1]}else if(A){var te=u.y1+_+(p?d/2*I:0),ne=u.x1,re=u.x2;n.segpts=[ne,te,re,te]}else{var ae=u.x1+_+(p?c/2*I:0),ie=u.y1,oe=u.y2;n.segpts=[ae,ie,ae,oe]}if(n.isRound){var se=e.pstyle("taxi-radius").value,le="arc-radius"===e.pstyle("radius-type").value[0];n.radii=new Array(n.segpts.length/2).fill(se),n.isArcRadius=new Array(n.segpts.length/2).fill(le)}},Nc.tryToCorrectInvalidPoints=function(e,t){var n=e._private.rscratch;if("bezier"===n.edgeType){var r=t.srcPos,a=t.tgtPos,i=t.srcW,o=t.srcH,s=t.tgtW,l=t.tgtH,u=t.srcShape,c=t.tgtShape,d=t.srcCornerRadius,h=t.tgtCornerRadius,f=t.srcRs,p=t.tgtRs,g=!Q(n.startX)||!Q(n.startY),v=!Q(n.arrowStartX)||!Q(n.arrowStartY),y=!Q(n.endX)||!Q(n.endY),m=!Q(n.arrowEndX)||!Q(n.arrowEndY),b=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),x=Ut({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),w=x<b,E=Ut({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.endX,y:n.endY}),k=E<b,T=!1;if(g||v||w){T=!0;var C={x:n.ctrlpts[0]-r.x,y:n.ctrlpts[1]-r.y},P=Math.sqrt(C.x*C.x+C.y*C.y),S={x:C.x/P,y:C.y/P},B=Math.max(i,o),D={x:n.ctrlpts[0]+2*S.x*B,y:n.ctrlpts[1]+2*S.y*B},_=u.intersectLine(r.x,r.y,i,o,D.x,D.y,0,d,f);w?(n.ctrlpts[0]=n.ctrlpts[0]+S.x*(b-x),n.ctrlpts[1]=n.ctrlpts[1]+S.y*(b-x)):(n.ctrlpts[0]=_[0]+S.x*b,n.ctrlpts[1]=_[1]+S.y*b)}if(y||m||k){T=!0;var A={x:n.ctrlpts[0]-a.x,y:n.ctrlpts[1]-a.y},M=Math.sqrt(A.x*A.x+A.y*A.y),R={x:A.x/M,y:A.y/M},I=Math.max(i,o),N={x:n.ctrlpts[0]+2*R.x*I,y:n.ctrlpts[1]+2*R.y*I},L=c.intersectLine(a.x,a.y,s,l,N.x,N.y,0,h,p);k?(n.ctrlpts[0]=n.ctrlpts[0]+R.x*(b-E),n.ctrlpts[1]=n.ctrlpts[1]+R.y*(b-E)):(n.ctrlpts[0]=L[0]+R.x*b,n.ctrlpts[1]=L[1]+R.y*b)}T&&this.findEndpoints(e)}},Nc.storeAllpts=function(e){var t=e._private.rscratch;if("multibezier"===t.edgeType||"bezier"===t.edgeType||"self"===t.edgeType||"compound"===t.edgeType){t.allpts=[],t.allpts.push(t.startX,t.startY);for(var n=0;n+1<t.ctrlpts.length;n+=2)t.allpts.push(t.ctrlpts[n],t.ctrlpts[n+1]),n+3<t.ctrlpts.length&&t.allpts.push((t.ctrlpts[n]+t.ctrlpts[n+2])/2,(t.ctrlpts[n+1]+t.ctrlpts[n+3])/2);var r;t.allpts.push(t.endX,t.endY),t.ctrlpts.length/2%2==0?(r=t.allpts.length/2-1,t.midX=t.allpts[r],t.midY=t.allpts[r+1]):(r=t.allpts.length/2-3,t.midX=Gt(t.allpts[r],t.allpts[r+2],t.allpts[r+4],.5),t.midY=Gt(t.allpts[r+1],t.allpts[r+3],t.allpts[r+5],.5))}else if("straight"===t.edgeType)t.allpts=[t.startX,t.startY,t.endX,t.endY],t.midX=(t.startX+t.endX+t.arrowStartX+t.arrowEndX)/4,t.midY=(t.startY+t.endY+t.arrowStartY+t.arrowEndY)/4;else if("segments"===t.edgeType){if(t.allpts=[],t.allpts.push(t.startX,t.startY),t.allpts.push.apply(t.allpts,t.segpts),t.allpts.push(t.endX,t.endY),t.isRound){t.roundCorners=[];for(var a=2;a+3<t.allpts.length;a+=2){var i=t.radii[a/2-1],o=t.isArcRadius[a/2-1];t.roundCorners.push(Mc({x:t.allpts[a-2],y:t.allpts[a-1]},{x:t.allpts[a],y:t.allpts[a+1],radius:i},{x:t.allpts[a+2],y:t.allpts[a+3]},i,o))}}if(t.segpts.length%4==0){var s=t.segpts.length/2,l=s-2;t.midX=(t.segpts[l]+t.segpts[s])/2,t.midY=(t.segpts[l+1]+t.segpts[s+1])/2}else{var u=t.segpts.length/2-1;if(t.isRound){var c={x:t.segpts[u],y:t.segpts[u+1]},d=t.roundCorners[u/2];if(0===d.radius){var h={x:t.segpts[u+2],y:t.segpts[u+3]};t.midX=c.x,t.midY=c.y,t.midVector=[c.y-h.y,h.x-c.x]}else{var f=[c.x-d.cx,c.y-d.cy],p=d.radius/Math.sqrt(Math.pow(f[0],2)+Math.pow(f[1],2));f=f.map(function(e){return e*p}),t.midX=d.cx+f[0],t.midY=d.cy+f[1],t.midVector=f}}else t.midX=t.segpts[u],t.midY=t.segpts[u+1]}}},Nc.checkForInvalidEdgeWarning=function(e){var t=e[0]._private.rscratch;t.nodesOverlap||Q(t.startX)&&Q(t.startY)&&Q(t.endX)&&Q(t.endY)?t.loggedErr=!1:t.loggedErr||(t.loggedErr=!0,at("Edge `"+e.id()+"` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap."))},Nc.findEdgeControlPoints=function(e){var t=this;if(e&&0!==e.length){for(var n=this,r=n.cy.hasCompoundNodes(),a=new pt,i=function(e,t){return[].concat(u(e),[t?1:0]).join("-")},o=[],s=[],l=0;l<e.length;l++){var c=e[l],d=c._private,h=c.pstyle("curve-style").value;if(!c.removed()&&c.takesUpSpace())if("haystack"!==h){var f="unbundled-bezier"===h||h.endsWith("segments")||"straight"===h||"straight-triangle"===h||h.endsWith("taxi"),p="unbundled-bezier"===h||"bezier"===h,g=d.source,v=d.target,y=[g.poolIndex(),v.poolIndex()].sort(),m=i(y,f),b=a.get(m);null==b&&(b={eles:[]},o.push({pairId:y,edgeIsUnbundled:f}),a.set(m,b)),b.eles.push(c),f&&(b.hasUnbundled=!0),p&&(b.hasBezier=!0)}else s.push(c)}for(var x=function(){var e,s=o[w],l=s.pairId,u=s.edgeIsUnbundled,c=i(l,u),d=a.get(c);if(!d.hasUnbundled){var h=d.eles[0].parallelEdges().filter(function(e){return e.isBundledBezier()});dt(d.eles),h.forEach(function(e){return d.eles.push(e)}),d.eles.sort(function(e,t){return e.poolIndex()-t.poolIndex()})}var f=d.eles[0],p=f.source(),g=f.target();if(p.poolIndex()>g.poolIndex()){var v=p;p=g,g=v}var y=d.srcPos=p.position(),m=d.tgtPos=g.position(),b=d.srcW=p.outerWidth(),x=d.srcH=p.outerHeight(),E=d.tgtW=g.outerWidth(),k=d.tgtH=g.outerHeight(),T=d.srcShape=n.nodeShapes[t.getNodeShape(p)],C=d.tgtShape=n.nodeShapes[t.getNodeShape(g)],P=d.srcCornerRadius="auto"===p.pstyle("corner-radius").value?"auto":p.pstyle("corner-radius").pfValue,S=d.tgtCornerRadius="auto"===g.pstyle("corner-radius").value?"auto":g.pstyle("corner-radius").pfValue,B=d.tgtRs=g._private.rscratch,D=d.srcRs=p._private.rscratch;d.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var _=0;_<d.eles.length;_++){var A=d.eles[_],M=A[0]._private.rscratch,R=A.pstyle("curve-style").value,I="unbundled-bezier"===R||R.endsWith("segments")||R.endsWith("taxi"),N=!p.same(A.source());if(!d.calculatedIntersection&&p!==g&&(d.hasBezier||d.hasUnbundled)){d.calculatedIntersection=!0;var L=T.intersectLine(y.x,y.y,b,x,m.x,m.y,0,P,D),z=d.srcIntn=L,O=C.intersectLine(m.x,m.y,E,k,y.x,y.y,0,S,B),V=d.tgtIntn=O,F=d.intersectionPts={x1:L[0],x2:O[0],y1:L[1],y2:O[1]},j=d.posPts={x1:y.x,x2:m.x,y1:y.y,y2:m.y},X=O[1]-L[1],q=O[0]-L[0],Y=Math.sqrt(q*q+X*X);Q(Y)&&Y>=Ic||(Y=Math.sqrt(Math.max(q*q,Rc)+Math.max(X*X,Rc)));var W=d.vector={x:q,y:X},U=d.vectorNorm={x:W.x/Y,y:W.y/Y},H={x:-U.y,y:U.x};d.nodesOverlap=!Q(Y)||C.checkPoint(L[0],L[1],0,E,k,m.x,m.y,S,B)||T.checkPoint(O[0],O[1],0,b,x,y.x,y.y,P,D),d.vectorNormInverse=H,e={nodesOverlap:d.nodesOverlap,dirCounts:d.dirCounts,calculatedIntersection:!0,hasBezier:d.hasBezier,hasUnbundled:d.hasUnbundled,eles:d.eles,srcPos:m,srcRs:B,tgtPos:y,tgtRs:D,srcW:E,srcH:k,tgtW:b,tgtH:x,srcIntn:V,tgtIntn:z,srcShape:C,tgtShape:T,posPts:{x1:j.x2,y1:j.y2,x2:j.x1,y2:j.y1},intersectionPts:{x1:F.x2,y1:F.y2,x2:F.x1,y2:F.y1},vector:{x:-W.x,y:-W.y},vectorNorm:{x:-U.x,y:-U.y},vectorNormInverse:{x:-H.x,y:-H.y}}}var K=N?e:d;M.nodesOverlap=K.nodesOverlap,M.srcIntn=K.srcIntn,M.tgtIntn=K.tgtIntn,M.isRound=R.startsWith("round"),r&&(p.isParent()||p.isChild()||g.isParent()||g.isChild())&&(p.parents().anySame(g)||g.parents().anySame(p)||p.same(g)&&p.isParent())?t.findCompoundLoopPoints(A,K,_,I):p===g?t.findLoopPoints(A,K,_,I):R.endsWith("segments")?t.findSegmentsPoints(A,K):R.endsWith("taxi")?t.findTaxiPoints(A,K):"straight"===R||!I&&d.eles.length%2==1&&_===Math.floor(d.eles.length/2)?t.findStraightEdgePoints(A):t.findBezierPoints(A,K,_,I,N),t.findEndpoints(A),t.tryToCorrectInvalidPoints(A,K),t.checkForInvalidEdgeWarning(A),t.storeAllpts(A),t.storeEdgeProjections(A),t.calculateArrowAngles(A),t.recalculateEdgeLabelProjections(A),t.calculateLabelAngles(A)}},w=0;w<o.length;w++)x();this.findHaystackPoints(s)}},Nc.getSegmentPoints=function(e){var t=e[0]._private.rscratch;if(this.recalculateRenderedStyle(e),"segments"===t.edgeType)return Lc(t.segpts)},Nc.getControlPoints=function(e){var t=e[0]._private.rscratch;this.recalculateRenderedStyle(e);var n=t.edgeType;if("bezier"===n||"multibezier"===n||"self"===n||"compound"===n)return Lc(t.ctrlpts)},Nc.getEdgeMidpoint=function(e){var t=e[0]._private.rscratch;return this.recalculateRenderedStyle(e),{x:t.midX,y:t.midY}};var zc={manualEndptToPx:function(e,t){var n=e.position(),r=e.outerWidth(),a=e.outerHeight(),i=e._private.rscratch;if(2===t.value.length){var o=[t.pfValue[0],t.pfValue[1]];return"%"===t.units[0]&&(o[0]=o[0]*r),"%"===t.units[1]&&(o[1]=o[1]*a),o[0]+=n.x,o[1]+=n.y,o}var s=t.pfValue[0];s=-Math.PI/2+s;var l=2*Math.max(r,a),u=[n.x+Math.cos(s)*l,n.y+Math.sin(s)*l];return this.nodeShapes[this.getNodeShape(e)].intersectLine(n.x,n.y,r,a,u[0],u[1],0,"auto"===e.pstyle("corner-radius").value?"auto":e.pstyle("corner-radius").pfValue,i)},findEndpoints:function(e){var t,n,r,a,i,o=this,s=e.source()[0],l=e.target()[0],u=s.position(),c=l.position(),d=e.pstyle("target-arrow-shape").value,h=e.pstyle("source-arrow-shape").value,f=e.pstyle("target-distance-from-node").pfValue,p=e.pstyle("source-distance-from-node").pfValue,g=s._private.rscratch,v=l._private.rscratch,y=e.pstyle("curve-style").value,m=e._private.rscratch,b=m.edgeType,x="self"===b||"compound"===b,w="bezier"===b||"multibezier"===b||x,E="bezier"!==b,k="straight"===b||"segments"===b,T="segments"===b,C=w||E||k,P=x||"taxi"===y,S=e.pstyle("source-endpoint"),B=P?"outside-to-node":S.value,D="auto"===s.pstyle("corner-radius").value?"auto":s.pstyle("corner-radius").pfValue,_=e.pstyle("target-endpoint"),A=P?"outside-to-node":_.value,M="auto"===l.pstyle("corner-radius").value?"auto":l.pstyle("corner-radius").pfValue;if(m.srcManEndpt=S,m.tgtManEndpt=_,w){var R=[m.ctrlpts[0],m.ctrlpts[1]];n=E?[m.ctrlpts[m.ctrlpts.length-2],m.ctrlpts[m.ctrlpts.length-1]]:R,r=R}else if(k){var I=T?m.segpts.slice(0,2):[c.x,c.y];n=T?m.segpts.slice(m.segpts.length-2):[u.x,u.y],r=I}if("inside-to-node"===A)t=[c.x,c.y];else if(_.units)t=this.manualEndptToPx(l,_);else if("outside-to-line"===A)t=m.tgtIntn;else if("outside-to-node"===A||"outside-to-node-or-label"===A?a=n:"outside-to-line"!==A&&"outside-to-line-or-label"!==A||(a=[u.x,u.y]),t=o.nodeShapes[this.getNodeShape(l)].intersectLine(c.x,c.y,l.outerWidth(),l.outerHeight(),a[0],a[1],0,M,v),"outside-to-node-or-label"===A||"outside-to-line-or-label"===A){var N=l._private.rscratch,L=N.labelWidth,z=N.labelHeight,O=N.labelX,V=N.labelY,F=L/2,j=z/2,X=l.pstyle("text-valign").value;"top"===X?V-=j:"bottom"===X&&(V+=j);var q=l.pstyle("text-halign").value;"left"===q?O-=F:"right"===q&&(O+=F);var Y=En(a[0],a[1],[O-F,V-j,O+F,V-j,O+F,V+j,O-F,V+j],c.x,c.y);if(Y.length>0){var W=u,U=Ht(W,Xt(t)),H=Ht(W,Xt(Y)),K=U;if(H<U&&(t=Y,K=H),Y.length>2)Ht(W,{x:Y[2],y:Y[3]})<K&&(t=[Y[2],Y[3]])}}var G=kn(t,n,o.arrowShapes[d].spacing(e)+f),Z=kn(t,n,o.arrowShapes[d].gap(e)+f);if(m.endX=Z[0],m.endY=Z[1],m.arrowEndX=G[0],m.arrowEndY=G[1],"inside-to-node"===B)t=[u.x,u.y];else if(S.units)t=this.manualEndptToPx(s,S);else if("outside-to-line"===B)t=m.srcIntn;else if("outside-to-node"===B||"outside-to-node-or-label"===B?i=r:"outside-to-line"!==B&&"outside-to-line-or-label"!==B||(i=[c.x,c.y]),t=o.nodeShapes[this.getNodeShape(s)].intersectLine(u.x,u.y,s.outerWidth(),s.outerHeight(),i[0],i[1],0,D,g),"outside-to-node-or-label"===B||"outside-to-line-or-label"===B){var $=s._private.rscratch,J=$.labelWidth,ee=$.labelHeight,te=$.labelX,ne=$.labelY,re=J/2,ae=ee/2,ie=s.pstyle("text-valign").value;"top"===ie?ne-=ae:"bottom"===ie&&(ne+=ae);var oe=s.pstyle("text-halign").value;"left"===oe?te-=re:"right"===oe&&(te+=re);var se=En(i[0],i[1],[te-re,ne-ae,te+re,ne-ae,te+re,ne+ae,te-re,ne+ae],u.x,u.y);if(se.length>0){var le=c,ue=Ht(le,Xt(t)),ce=Ht(le,Xt(se)),de=ue;if(ce<ue&&(t=[se[0],se[1]],de=ce),se.length>2)Ht(le,{x:se[2],y:se[3]})<de&&(t=[se[2],se[3]])}}var he=kn(t,r,o.arrowShapes[h].spacing(e)+p),fe=kn(t,r,o.arrowShapes[h].gap(e)+p);m.startX=fe[0],m.startY=fe[1],m.arrowStartX=he[0],m.arrowStartY=he[1],C&&(Q(m.startX)&&Q(m.startY)&&Q(m.endX)&&Q(m.endY)?m.badLine=!1:m.badLine=!0)},getSourceEndpoint:function(e){var t=e[0]._private.rscratch;return this.recalculateRenderedStyle(e),"haystack"===t.edgeType?{x:t.haystackPts[0],y:t.haystackPts[1]}:{x:t.arrowStartX,y:t.arrowStartY}},getTargetEndpoint:function(e){var t=e[0]._private.rscratch;return this.recalculateRenderedStyle(e),"haystack"===t.edgeType?{x:t.haystackPts[2],y:t.haystackPts[3]}:{x:t.arrowEndX,y:t.arrowEndY}}},Oc={};function Vc(e,t,n){for(var r=function(e,t,n,r){return Gt(e,t,n,r)},a=t._private.rstyle.bezierPts,i=0;i<e.bezierProjPcts.length;i++){var o=e.bezierProjPcts[i];a.push({x:r(n[0],n[2],n[4],o),y:r(n[1],n[3],n[5],o)})}}Oc.storeEdgeProjections=function(e){var t=e._private,n=t.rscratch,r=n.edgeType;if(t.rstyle.bezierPts=null,t.rstyle.linePts=null,t.rstyle.haystackPts=null,"multibezier"===r||"bezier"===r||"self"===r||"compound"===r){t.rstyle.bezierPts=[];for(var a=0;a+5<n.allpts.length;a+=4)Vc(this,e,n.allpts.slice(a,a+6))}else if("segments"===r){var i=t.rstyle.linePts=[];for(a=0;a+1<n.allpts.length;a+=2)i.push({x:n.allpts[a],y:n.allpts[a+1]})}else if("haystack"===r){var o=n.haystackPts;t.rstyle.haystackPts=[{x:o[0],y:o[1]},{x:o[2],y:o[3]}]}t.rstyle.arrowWidth=this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth},Oc.recalculateEdgeProjections=function(e){this.findEdgeControlPoints(e)};var Fc={recalculateNodeLabelProjection:function(e){var t=e.pstyle("label").strValue;if(!ie(t)){var n,r,a=e._private,i=e.width(),o=e.height(),s=e.padding(),l=e.position(),u=e.pstyle("text-halign").strValue,c=e.pstyle("text-valign").strValue,d=a.rscratch,h=a.rstyle;switch(u){case"left":n=l.x-i/2-s;break;case"right":n=l.x+i/2+s;break;default:n=l.x}switch(c){case"top":r=l.y-o/2-s;break;case"bottom":r=l.y+o/2+s;break;default:r=l.y}d.labelX=n,d.labelY=r,h.labelX=n,h.labelY=r,this.calculateLabelAngles(e),this.applyLabelDimensions(e)}}},jc=function(e,t){var n=Math.atan(t/e);return 0===e&&n<0&&(n*=-1),n},Xc=function(e,t){var n=t.x-e.x,r=t.y-e.y;return jc(n,r)};Fc.recalculateEdgeLabelProjections=function(e){var t,n=e._private,r=n.rscratch,a=this,i={mid:e.pstyle("label").strValue,source:e.pstyle("source-label").strValue,target:e.pstyle("target-label").strValue};if(i.mid||i.source||i.target){t={x:r.midX,y:r.midY};var o=function(e,t,r){ft(n.rscratch,e,t,r),ft(n.rstyle,e,t,r)};o("labelX",null,t.x),o("labelY",null,t.y);var s=jc(r.midDispX,r.midDispY);o("labelAutoAngle",null,s);var l=function(){if(l.cache)return l.cache;for(var e=[],t=0;t+5<r.allpts.length;t+=4){var i={x:r.allpts[t],y:r.allpts[t+1]},o={x:r.allpts[t+2],y:r.allpts[t+3]},s={x:r.allpts[t+4],y:r.allpts[t+5]};e.push({p0:i,p1:o,p2:s,startDist:0,length:0,segments:[]})}var u=n.rstyle.bezierPts,c=a.bezierProjPcts.length;function d(e,t,n,r,a){var i=Ut(t,n),o=e.segments[e.segments.length-1],s={p0:t,p1:n,t0:r,t1:a,startDist:o?o.startDist+o.length:0,length:i};e.segments.push(s),e.length+=i}for(var h=0;h<e.length;h++){var f=e[h],p=e[h-1];p&&(f.startDist=p.startDist+p.length),d(f,f.p0,u[h*c],0,a.bezierProjPcts[0]);for(var g=0;g<c-1;g++)d(f,u[h*c+g],u[h*c+g+1],a.bezierProjPcts[g],a.bezierProjPcts[g+1]);d(f,u[h*c+c-1],f.p2,a.bezierProjPcts[c-1],1)}return l.cache=e},u=function(n){var a,s="source"===n;if(i[n]){var u=e.pstyle(n+"-text-offset").pfValue;switch(r.edgeType){case"self":case"compound":case"bezier":case"multibezier":for(var c,d=l(),h=0,f=0,p=0;p<d.length;p++){for(var g=d[s?p:d.length-1-p],v=0;v<g.segments.length;v++){var y=g.segments[s?v:g.segments.length-1-v],m=p===d.length-1&&v===g.segments.length-1;if(h=f,(f+=y.length)>=u||m){c={cp:g,segment:y};break}}if(c)break}var b=c.cp,x=c.segment,w=(u-h)/x.length,E=x.t1-x.t0,k=s?x.t0+E*w:x.t1-E*w;k=$t(0,k,1),t=Zt(b.p0,b.p1,b.p2,k),a=function(e,t,n,r){var a=$t(0,r-.001,1),i=$t(0,r+.001,1),o=Zt(e,t,n,a),s=Zt(e,t,n,i);return Xc(o,s)}(b.p0,b.p1,b.p2,k);break;case"straight":case"segments":case"haystack":for(var T,C,P,S,B=0,D=r.allpts.length,_=0;_+3<D&&(s?(P={x:r.allpts[_],y:r.allpts[_+1]},S={x:r.allpts[_+2],y:r.allpts[_+3]}):(P={x:r.allpts[D-2-_],y:r.allpts[D-1-_]},S={x:r.allpts[D-4-_],y:r.allpts[D-3-_]}),C=B,!((B+=T=Ut(P,S))>=u));_+=2);var A=(u-C)/T;A=$t(0,A,1),t=function(e,t,n,r){var a=t.x-e.x,i=t.y-e.y,o=Ut(e,t),s=a/o,l=i/o;return n=null==n?0:n,r=null!=r?r:n*o,{x:e.x+s*r,y:e.y+l*r}}(P,S,A),a=Xc(P,S)}o("labelX",n,t.x),o("labelY",n,t.y),o("labelAutoAngle",n,a)}};u("source"),u("target"),this.applyLabelDimensions(e)}},Fc.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},Fc.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),a=We(r,e._private.labelDimsKey);if(ht(n.rscratch,"prefixedLabelDimsKey",t)!==a){ft(n.rscratch,"prefixedLabelDimsKey",t,a);var i=this.calculateLabelDimensions(e,r),o=e.pstyle("line-height").pfValue,s=e.pstyle("text-wrap").strValue,l=ht(n.rscratch,"labelWrapCachedLines",t)||[],u="wrap"!==s?1:Math.max(l.length,1),c=i.height/u,d=c*o,h=i.width,f=i.height+(u-1)*(o-1)*c;ft(n.rstyle,"labelWidth",t,h),ft(n.rscratch,"labelWidth",t,h),ft(n.rstyle,"labelHeight",t,f),ft(n.rscratch,"labelHeight",t,f),ft(n.rscratch,"labelLineHeight",t,d)}},Fc.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",a=e.pstyle(r+"label").strValue,i=e.pstyle("text-transform").value,s=function(e,r){return r?(ft(n.rscratch,e,t,r),r):ht(n.rscratch,e,t)};if(!a)return"";"none"==i||("uppercase"==i?a=a.toUpperCase():"lowercase"==i&&(a=a.toLowerCase()));var l=e.pstyle("text-wrap").value;if("wrap"===l){var u=s("labelKey");if(null!=u&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var c=a.split("\n"),d=e.pstyle("text-max-width").pfValue,h="anywhere"===e.pstyle("text-overflow-wrap").value,f=[],p=/[\s\u200b]+|$/g,g=0;g<c.length;g++){var v=c[g],y=this.calculateLabelDimensions(e,v).width;if(h){var m=v.split("").join("\u200b");v=m}if(y>d){var b,x="",w=0,E=o(v.matchAll(p));try{for(E.s();!(b=E.n()).done;){var k=b.value,T=k[0],C=v.substring(w,k.index);w=k.index+T.length;var P=0===x.length?C:x+C+T;this.calculateLabelDimensions(e,P).width<=d?x+=C+T:(x&&f.push(x),x=C+T)}}catch(A){E.e(A)}finally{E.f()}x.match(/^[\s\u200b]+$/)||f.push(x)}else f.push(v)}s("labelWrapCachedLines",f),a=s("labelWrapCachedText",f.join("\n")),s("labelWrapKey",u)}else if("ellipsis"===l){var S=e.pstyle("text-max-width").pfValue,B="",D=!1;if(this.calculateLabelDimensions(e,a).width<S)return a;for(var _=0;_<a.length;_++){if(this.calculateLabelDimensions(e,B+a[_]+"\u2026").width>S)break;B+=a[_],_===a.length-1&&(D=!0)}return D||(B+="\u2026"),B}return a},Fc.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,n=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},Fc.calculateLabelDimensions=function(e,t){var n=this.cy.window().document,r=e.pstyle("font-style").strValue,a=e.pstyle("font-size").pfValue,i=e.pstyle("font-family").strValue,o=e.pstyle("font-weight").strValue,s=this.labelCalcCanvas,l=this.labelCalcCanvasContext;if(!s){s=this.labelCalcCanvas=n.createElement("canvas"),l=this.labelCalcCanvasContext=s.getContext("2d");var u=s.style;u.position="absolute",u.left="-9999px",u.top="-9999px",u.zIndex="-1",u.visibility="hidden",u.pointerEvents="none"}l.font="".concat(r," ").concat(o," ").concat(a,"px ").concat(i);for(var c=0,d=0,h=t.split("\n"),f=0;f<h.length;f++){var p=h[f],g=l.measureText(p),v=Math.ceil(g.width),y=a;c=Math.max(v,c),d+=y}return{width:c+=0,height:d+=0}},Fc.calculateLabelAngle=function(e,t){var n=e._private.rscratch,r=e.isEdge(),a=t?t+"-":"",i=e.pstyle(a+"text-rotation"),o=i.strValue;return"none"===o?0:r&&"autorotate"===o?n.labelAutoAngle:"autorotate"===o?0:i.pfValue},Fc.calculateLabelAngles=function(e){var t=this,n=e.isEdge(),r=e._private.rscratch;r.labelAngle=t.calculateLabelAngle(e),n&&(r.sourceLabelAngle=t.calculateLabelAngle(e,"source"),r.targetLabelAngle=t.calculateLabelAngle(e,"target"))};var qc={},Yc=!1;qc.getNodeShape=function(e){var t=e.pstyle("shape").value;if("cutrectangle"===t&&(e.width()<28||e.height()<28))return Yc||(at("The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead"),Yc=!0),"rectangle";if(e.isParent())return"rectangle"===t||"roundrectangle"===t||"round-rectangle"===t||"cutrectangle"===t||"cut-rectangle"===t||"barrel"===t?t:"rectangle";if("polygon"===t){var n=e.pstyle("shape-polygon-points").value;return this.nodeShapes.makePolygon(n).name}return t};var Wc={registerCalculationListeners:function(){var e=this.cy,t=e.collection(),n=this,r=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),n)for(var r=0;r<e.length;r++){var a=e[r]._private.rstyle;a.clean=!1,a.cleanConnected=!1}};n.binder(e).on("bounds.* dirty.*",function(e){var t=e.target;r(t)}).on("style.* background.*",function(e){var t=e.target;r(t,!1)});var a=function(a){if(a){var i=n.onUpdateEleCalcsFns;t.cleanStyle();for(var o=0;o<t.length;o++){var s=t[o],l=s._private.rstyle;s.isNode()&&!l.cleanConnected&&(r(s.connectedEdges()),l.cleanConnected=!0)}if(i)for(var u=0;u<i.length;u++){(0,i[u])(a,t)}n.recalculateRenderedStyle(t),t=e.collection()}};n.flushRenderedStyleQueue=function(){a(!0)},n.beforeRender(a,n.beforeRenderPriorities.eleCalcs)},onUpdateEleCalcs:function(e){(this.onUpdateEleCalcsFns=this.onUpdateEleCalcsFns||[]).push(e)},recalculateRenderedStyle:function(e,t){var n=function(e){return e._private.rstyle.cleanConnected};if(0!==e.length){var r=[],a=[];if(!this.destroyed){void 0===t&&(t=!0);for(var i=0;i<e.length;i++){var o=e[i],s=o._private,l=s.rstyle;!o.isEdge()||n(o.source())&&n(o.target())||(l.clean=!1),o.isEdge()&&o.isBundledBezier()&&o.parallelEdges().some(function(e){return!e._private.rstyle.clean&&e.isBundledBezier()})&&(l.clean=!1),t&&l.clean||o.removed()||"none"!==o.pstyle("display").value&&("nodes"===s.group?a.push(o):r.push(o),l.clean=!0)}for(var u=0;u<a.length;u++){var c=a[u],d=c._private.rstyle,h=c.position();this.recalculateNodeLabelProjection(c),d.nodeX=h.x,d.nodeY=h.y,d.nodeW=c.pstyle("width").pfValue,d.nodeH=c.pstyle("height").pfValue}this.recalculateEdgeProjections(r);for(var f=0;f<r.length;f++){var p=r[f]._private,g=p.rstyle,v=p.rscratch;g.srcX=v.arrowStartX,g.srcY=v.arrowStartY,g.tgtX=v.arrowEndX,g.tgtY=v.arrowEndY,g.midX=v.midX,g.midY=v.midY,g.labelAngle=v.labelAngle,g.sourceLabelAngle=v.sourceLabelAngle,g.targetLabelAngle=v.targetLabelAngle}}}}},Uc={updateCachedGrabbedEles:function(){var e=this.cachedZSortedEles;if(e){e.drag=[],e.nondrag=[];for(var t=[],n=0;n<e.length;n++){var r=(a=e[n])._private.rscratch;a.grabbed()&&!a.isParent()?t.push(a):r.inDragLayer?e.drag.push(a):e.nondrag.push(a)}for(n=0;n<t.length;n++){var a=t[n];e.drag.push(a)}}},invalidateCachedZSortedEles:function(){this.cachedZSortedEles=null},getCachedZSortedEles:function(e){if(e||!this.cachedZSortedEles){var t=this.cy.mutableElements().toArray();t.sort(ol),t.interactive=t.filter(function(e){return e.interactive()}),this.cachedZSortedEles=t,this.updateCachedGrabbedEles()}else t=this.cachedZSortedEles;return t}},Hc={};[lc,uc,Nc,zc,Oc,Fc,qc,Wc,Uc].forEach(function(e){me(Hc,e)});var Kc={getCachedImage:function(e,t,n){var r=this.imageCache=this.imageCache||{},a=r[e];if(a)return a.image.complete||a.image.addEventListener("load",n),a.image;var i=(a=r[e]=r[e]||{}).image=new Image;i.addEventListener("load",n),i.addEventListener("error",function(){i.error=!0});var o="data:";return e.substring(0,5).toLowerCase()===o||(t="null"===t?null:t,i.crossOrigin=t),i.src=e,i}},Gc={registerBinding:function(e,t,n,r){var a=Array.prototype.slice.apply(arguments,[1]);if(Array.isArray(e)){for(var i=[],o=0;o<e.length;o++){var s=e[o];if(void 0!==s){var l=this.binder(s);i.push(l.on.apply(l,a))}}return i}return(l=this.binder(e)).on.apply(l,a)}};Gc.binder=function(e){var t,n=this,r=n.cy.window(),a=e===r||e===r.document||e===r.document.body||(t=e,"undefined"!=typeof HTMLElement&&t instanceof HTMLElement);if(null==n.supportsPassiveEvents){var i=!1;try{var o=Object.defineProperty({},"passive",{get:function(){return i=!0,!0}});r.addEventListener("test",null,o)}catch(l){}n.supportsPassiveEvents=i}var s=function(t,r,i){var o=Array.prototype.slice.call(arguments);return a&&n.supportsPassiveEvents&&(o[2]={capture:null!=i&&i,passive:!1,once:!1}),n.bindings.push({target:e,args:o}),(e.addEventListener||e.on).apply(e,o),this};return{on:s,addEventListener:s,addListener:s,bind:s}},Gc.nodeIsDraggable=function(e){return e&&e.isNode()&&!e.locked()&&e.grabbable()},Gc.nodeIsGrabbable=function(e){return this.nodeIsDraggable(e)&&e.interactive()},Gc.load=function(){var e=this,t=e.cy.window(),n=function(e){return e.selected()},r=function(t,n,r,a){null==t&&(t=e.cy);for(var i=0;i<n.length;i++){var o=n[i];t.emit({originalEvent:r,type:o,position:a})}},a=function(e){return e.shiftKey||e.metaKey||e.ctrlKey},i=function(t,n){var r=!0;if(e.cy.hasCompoundNodes()&&t&&t.pannable())for(var a=0;n&&a<n.length;a++){if((t=n[a]).isNode()&&t.isParent()&&!t.pannable()){r=!1;break}}else r=!0;return r},o=function(e){e[0]._private.rscratch.inDragLayer=!0},s=function(e){e[0]._private.rscratch.isGrabTarget=!0},l=function(e,t){var n=t.addToList;n.has(e)||!e.grabbable()||e.locked()||(n.merge(e),function(e){e[0]._private.grabbed=!0}(e))},u=function(t,n){n=n||{};var r=t.cy().hasCompoundNodes();n.inDragLayer&&(t.forEach(o),t.neighborhood().stdFilter(function(e){return!r||e.isEdge()}).forEach(o)),n.addToList&&t.forEach(function(e){l(e,n)}),function(e,t){if(e.cy().hasCompoundNodes()&&(null!=t.inDragLayer||null!=t.addToList)){var n=e.descendants();t.inDragLayer&&(n.forEach(o),n.connectedEdges().forEach(o)),t.addToList&&l(n,t)}}(t,n),h(t,{inDragLayer:n.inDragLayer}),e.updateCachedGrabbedEles()},c=u,d=function(t){t&&(e.getCachedZSortedEles().forEach(function(e){!function(e){e[0]._private.grabbed=!1}(e),function(e){e[0]._private.rscratch.inDragLayer=!1}(e),function(e){e[0]._private.rscratch.isGrabTarget=!1}(e)}),e.updateCachedGrabbedEles())},h=function(e,t){if((null!=t.inDragLayer||null!=t.addToList)&&e.cy().hasCompoundNodes()){var n=e.ancestors().orphans();if(!n.same(e)){var r=n.descendants().spawnSelf().merge(n).unmerge(e).unmerge(e.descendants()),a=r.connectedEdges();t.inDragLayer&&(a.forEach(o),r.forEach(o)),t.addToList&&r.forEach(function(e){l(e,t)})}}},f=function(){null!=document.activeElement&&null!=document.activeElement.blur&&document.activeElement.blur()},p="undefined"!=typeof MutationObserver,g="undefined"!=typeof ResizeObserver;p?(e.removeObserver=new MutationObserver(function(t){for(var n=0;n<t.length;n++){var r=t[n].removedNodes;if(r)for(var a=0;a<r.length;a++){if(r[a]===e.container){e.destroy();break}}}}),e.container.parentNode&&e.removeObserver.observe(e.container.parentNode,{childList:!0})):e.registerBinding(e.container,"DOMNodeRemoved",function(t){e.destroy()});var v=Ae(function(){e.cy.resize()},100);p&&(e.styleObserver=new MutationObserver(v),e.styleObserver.observe(e.container,{attributes:!0})),e.registerBinding(t,"resize",v),g&&(e.resizeObserver=new ResizeObserver(v),e.resizeObserver.observe(e.container));var y=function(){e.invalidateContainerClientCoordsCache()};!function(e,t){for(;null!=e;)t(e),e=e.parentNode}(e.container,function(t){e.registerBinding(t,"transitionend",y),e.registerBinding(t,"animationend",y),e.registerBinding(t,"scroll",y)}),e.registerBinding(e.container,"contextmenu",function(e){e.preventDefault()});var m=function(t){for(var n=e.findContainerClientCoords(),r=n[0],a=n[1],i=n[2],o=n[3],s=t.touches?t.touches:[t],l=!1,u=0;u<s.length;u++){var c=s[u];if(r<=c.clientX&&c.clientX<=r+i&&a<=c.clientY&&c.clientY<=a+o){l=!0;break}}if(!l)return!1;for(var d=e.container,h=t.target.parentNode,f=!1;h;){if(h===d){f=!0;break}h=h.parentNode}return!!f};e.registerBinding(e.container,"mousedown",function(t){if(m(t)&&(1!==e.hoverData.which||1===t.which)){t.preventDefault(),f(),e.hoverData.capture=!0,e.hoverData.which=t.which;var n=e.cy,a=[t.clientX,t.clientY],i=e.projectIntoViewport(a[0],a[1]),o=e.selection,l=e.findNearestElements(i[0],i[1],!0,!1),d=l[0],h=e.dragData.possibleDragElements;e.hoverData.mdownPos=i,e.hoverData.mdownGPos=a;if(3==t.which){e.hoverData.cxtStarted=!0;var p={originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}};d?(d.activate(),d.emit(p),e.hoverData.down=d):n.emit(p),e.hoverData.downTime=(new Date).getTime(),e.hoverData.cxtDragged=!1}else if(1==t.which){if(d&&d.activate(),null!=d&&e.nodeIsGrabbable(d)){var g=function(e){return{originalEvent:t,type:e,position:{x:i[0],y:i[1]}}};if(s(d),d.selected()){h=e.dragData.possibleDragElements=n.collection();var v=n.$(function(t){return t.isNode()&&t.selected()&&e.nodeIsGrabbable(t)});u(v,{addToList:h}),d.emit(g("grabon")),v.forEach(function(e){e.emit(g("grab"))})}else h=e.dragData.possibleDragElements=n.collection(),c(d,{addToList:h}),d.emit(g("grabon")).emit(g("grab"));e.redrawHint("eles",!0),e.redrawHint("drag",!0)}e.hoverData.down=d,e.hoverData.downs=l,e.hoverData.downTime=(new Date).getTime(),r(d,["mousedown","tapstart","vmousedown"],t,{x:i[0],y:i[1]}),null==d?(o[4]=1,e.data.bgActivePosistion={x:i[0],y:i[1]},e.redrawHint("select",!0),e.redraw()):d.pannable()&&(o[4]=1),e.hoverData.tapholdCancelled=!1,clearTimeout(e.hoverData.tapholdTimeout),e.hoverData.tapholdTimeout=setTimeout(function(){if(!e.hoverData.tapholdCancelled){var r=e.hoverData.down;r?r.emit({originalEvent:t,type:"taphold",position:{x:i[0],y:i[1]}}):n.emit({originalEvent:t,type:"taphold",position:{x:i[0],y:i[1]}})}},e.tapholdDuration)}o[0]=o[2]=i[0],o[1]=o[3]=i[1]}},!1);var b,x,w,E=function(e){var t=e.getRootNode();if(t&&11===t.nodeType&&void 0!==t.host)return t}(e.container);e.registerBinding([t,E],"mousemove",function(t){if(e.hoverData.capture||m(t)){var n=!1,o=e.cy,s=o.zoom(),l=[t.clientX,t.clientY],c=e.projectIntoViewport(l[0],l[1]),h=e.hoverData.mdownPos,f=e.hoverData.mdownGPos,p=e.selection,g=null;e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.selecting||(g=e.findNearestElement(c[0],c[1],!0,!1));var v,y=e.hoverData.last,b=e.hoverData.down,x=[c[0]-p[2],c[1]-p[3]],w=e.dragData.possibleDragElements;if(f){var E=l[0]-f[0],k=E*E,T=l[1]-f[1],C=k+T*T;e.hoverData.isOverThresholdDrag=v=C>=e.desktopTapThreshold2}var P=a(t);v&&(e.hoverData.tapholdCancelled=!0);n=!0,r(g,["mousemove","vmousemove","tapdrag"],t,{x:c[0],y:c[1]});var S=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||o.emit({originalEvent:t,type:"boxstart",position:{x:c[0],y:c[1]}}),p[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(v){var B={originalEvent:t,type:"cxtdrag",position:{x:c[0],y:c[1]}};b?b.emit(B):o.emit(B),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&g===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:c[0],y:c[1]}}),e.hoverData.cxtOver=g,g&&g.emit({originalEvent:t,type:"cxtdragover",position:{x:c[0],y:c[1]}}))}}else if(e.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var D;if(e.hoverData.justStartedPan){var _=e.hoverData.mdownPos;D={x:(c[0]-_[0])*s,y:(c[1]-_[1])*s},e.hoverData.justStartedPan=!1}else D={x:x[0]*s,y:x[1]*s};o.panBy(D),o.emit("dragpan"),e.hoverData.dragged=!0}c=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=p[4]||null!=b&&!b.pannable()){if(b&&b.pannable()&&b.active()&&b.unactivate(),b&&b.grabbed()||g==y||(y&&r(y,["mouseout","tapdragout"],t,{x:c[0],y:c[1]}),g&&r(g,["mouseover","tapdragover"],t,{x:c[0],y:c[1]}),e.hoverData.last=g),b)if(v){if(o.boxSelectionEnabled()&&P)b&&b.grabbed()&&(d(w),b.emit("freeon"),w.emit("free"),e.dragData.didDrag&&(b.emit("dragfreeon"),w.emit("dragfree"))),S();else if(b&&b.grabbed()&&e.nodeIsDraggable(b)){var A=!e.dragData.didDrag;A&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||u(w,{inDragLayer:!0});var M={x:0,y:0};if(Q(x[0])&&Q(x[1])&&(M.x+=x[0],M.y+=x[1],A)){var R=e.hoverData.dragDelta;R&&Q(R[0])&&Q(R[1])&&(M.x+=R[0],M.y+=R[1])}e.hoverData.draggingEles=!0,w.silentShift(M).emit("position drag"),e.redrawHint("drag",!0),e.redraw()}}else!function(){var t=e.hoverData.dragDelta=e.hoverData.dragDelta||[];0===t.length?(t.push(x[0]),t.push(x[1])):(t[0]+=x[0],t[1]+=x[1])}();n=!0}else if(v){if(e.hoverData.dragging||!o.boxSelectionEnabled()||!P&&o.panningEnabled()&&o.userPanningEnabled()){if(!e.hoverData.selecting&&o.panningEnabled()&&o.userPanningEnabled()){i(b,e.hoverData.downs)&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,p[4]=0,e.data.bgActivePosistion=Xt(h),e.redrawHint("select",!0),e.redraw())}}else S();b&&b.pannable()&&b.active()&&b.unactivate()}return p[2]=c[0],p[3]=c[1],n?(t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),!1):void 0}},!1),e.registerBinding(t,"mouseup",function(t){if((1!==e.hoverData.which||1===t.which||!e.hoverData.capture)&&e.hoverData.capture){e.hoverData.capture=!1;var i=e.cy,o=e.projectIntoViewport(t.clientX,t.clientY),s=e.selection,l=e.findNearestElement(o[0],o[1],!0,!1),u=e.dragData.possibleDragElements,c=e.hoverData.down,h=a(t);if(e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,c&&c.unactivate(),3===e.hoverData.which){var f={originalEvent:t,type:"cxttapend",position:{x:o[0],y:o[1]}};if(c?c.emit(f):i.emit(f),!e.hoverData.cxtDragged){var p={originalEvent:t,type:"cxttap",position:{x:o[0],y:o[1]}};c?c.emit(p):i.emit(p)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(1===e.hoverData.which){if(r(l,["mouseup","tapend","vmouseup"],t,{x:o[0],y:o[1]}),e.dragData.didDrag||e.hoverData.dragged||e.hoverData.selecting||e.hoverData.isOverThresholdDrag||(r(c,["click","tap","vclick"],t,{x:o[0],y:o[1]}),x=!1,t.timeStamp-w<=i.multiClickDebounceTime()?(b&&clearTimeout(b),x=!0,w=null,r(c,["dblclick","dbltap","vdblclick"],t,{x:o[0],y:o[1]})):(b=setTimeout(function(){x||r(c,["oneclick","onetap","voneclick"],t,{x:o[0],y:o[1]})},i.multiClickDebounceTime()),w=t.timeStamp)),null!=c||e.dragData.didDrag||e.hoverData.selecting||e.hoverData.dragged||a(t)||(i.$(n).unselect(["tapunselect"]),u.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=i.collection()),l!=c||e.dragData.didDrag||e.hoverData.selecting||null!=l&&l._private.selectable&&(e.hoverData.dragging||("additive"===i.selectionType()||h?l.selected()?l.unselect(["tapunselect"]):l.select(["tapselect"]):h||(i.$(n).unmerge(l).unselect(["tapunselect"]),l.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var g=i.collection(e.getAllInBox(s[0],s[1],s[2],s[3]));e.redrawHint("select",!0),g.length>0&&e.redrawHint("eles",!0),i.emit({type:"boxend",originalEvent:t,position:{x:o[0],y:o[1]}});var v=function(e){return e.selectable()&&!e.selected()};"additive"===i.selectionType()||h||i.$(n).unmerge(g).unselect(),g.emit("box").stdFilter(v).select().emit("boxselect"),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!s[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var y=c&&c.grabbed();d(u),y&&(c.emit("freeon"),u.emit("free"),e.dragData.didDrag&&(c.emit("dragfreeon"),u.emit("dragfree")))}}s[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}},!1);var k,T,C,P,S,B,D,_,A,M,R,I,N,L,z=[],O=1e5,V=function(t){var n=!1,r=t.deltaY;if(null==r&&(null!=t.wheelDeltaY?r=t.wheelDeltaY/4:null!=t.wheelDelta&&(r=t.wheelDelta/4)),null==k)if(z.length>=4){var a=z;if(k=function(e,t){for(var n=0;n<e.length;n++)if(e[n]%t!==0)return!1;return!0}(a,5),!k){var i=Math.abs(a[0]);k=function(e){for(var t=Math.abs(e[0]),n=1;n<e.length;n++)if(Math.abs(e[n])!==t)return!1;return!0}(a)&&i>5}if(k)for(var o=0;o<a.length;o++)O=Math.min(Math.abs(a[o]),O)}else z.push(r),n=!0;else k&&(O=Math.min(Math.abs(r),O));if(!e.scrollingPage){var s=e.cy,l=s.zoom(),u=s.pan(),c=e.projectIntoViewport(t.clientX,t.clientY),d=[c[0]*l+u.x,c[1]*l+u.y];if(e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||0!==e.selection[4])t.preventDefault();else if(s.panningEnabled()&&s.userPanningEnabled()&&s.zoomingEnabled()&&s.userZoomingEnabled()){var h;t.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout(function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()},150),n&&Math.abs(r)>5&&(r=5*Wt(r)),h=r/-250,k&&(h/=O,h*=3),h*=e.wheelSensitivity,1===t.deltaMode&&(h*=33);var f=s.zoom()*Math.pow(10,h);"gesturechange"===t.type&&(f=e.gestureStartZoom*t.scale),s.zoom({level:f,renderedPosition:{x:d[0],y:d[1]}}),s.emit("gesturechange"===t.type?"pinchzoom":"scrollzoom")}}};e.registerBinding(e.container,"wheel",V,!0),e.registerBinding(t,"scroll",function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},!0),e.registerBinding(e.container,"gesturestart",function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()},!0),e.registerBinding(e.container,"gesturechange",function(t){e.hasTouchStarted||V(t)},!0),e.registerBinding(e.container,"mouseout",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})},!1),e.registerBinding(e.container,"mouseover",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})},!1);var F,j,X,q,Y,W,U,H=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},K=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",F=function(t){if(e.hasTouchStarted=!0,m(t)){f(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var n=e.cy,a=e.touchData.now,i=e.touchData.earlier;if(t.touches[0]){var o=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);a[0]=o[0],a[1]=o[1]}if(t.touches[1]){o=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);a[2]=o[0],a[3]=o[1]}if(t.touches[2]){o=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);a[4]=o[0],a[5]=o[1]}if(t.touches[1]){e.touchData.singleTouchMoved=!0,d(e.dragData.touchDragEles);var l=e.findContainerClientCoords();M=l[0],R=l[1],I=l[2],N=l[3],T=t.touches[0].clientX-M,C=t.touches[0].clientY-R,P=t.touches[1].clientX-M,S=t.touches[1].clientY-R,L=0<=T&&T<=I&&0<=P&&P<=I&&0<=C&&C<=N&&0<=S&&S<=N;var h=n.pan(),p=n.zoom();B=H(T,C,P,S),D=K(T,C,P,S),A=[((_=[(T+P)/2,(C+S)/2])[0]-h.x)/p,(_[1]-h.y)/p];if(D<4e4&&!t.touches[2]){var g=e.findNearestElement(a[0],a[1],!0,!0),v=e.findNearestElement(a[2],a[3],!0,!0);return g&&g.isNode()?(g.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:a[0],y:a[1]}}),e.touchData.start=g):v&&v.isNode()?(v.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:a[0],y:a[1]}}),e.touchData.start=v):n.emit({originalEvent:t,type:"cxttapstart",position:{x:a[0],y:a[1]}}),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])n.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var y=e.findNearestElements(a[0],a[1],!0,!0),b=y[0];if(null!=b&&(b.activate(),e.touchData.start=b,e.touchData.starts=y,e.nodeIsGrabbable(b))){var x=e.dragData.touchDragEles=n.collection(),w=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),b.selected()?(w=n.$(function(t){return t.selected()&&e.nodeIsGrabbable(t)}),u(w,{addToList:x})):c(b,{addToList:x}),s(b);var E=function(e){return{originalEvent:t,type:e,position:{x:a[0],y:a[1]}}};b.emit(E("grabon")),w?w.forEach(function(e){e.emit(E("grab"))}):b.emit(E("grab"))}r(b,["touchstart","tapstart","vmousedown"],t,{x:a[0],y:a[1]}),null==b&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||r(e.touchData.start,["taphold"],t,{x:a[0],y:a[1]})},e.tapholdDuration)}if(t.touches.length>=1){for(var k=e.touchData.startPosition=[null,null,null,null,null,null],z=0;z<a.length;z++)k[z]=i[z]=a[z];var O=t.touches[0];e.touchData.startGPosition=[O.clientX,O.clientY]}}},!1),e.registerBinding(t,"touchmove",j=function(t){var n=e.touchData.capture;if(n||m(t)){var a=e.selection,o=e.cy,s=e.touchData.now,l=e.touchData.earlier,c=o.zoom();if(t.touches[0]){var h=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);s[0]=h[0],s[1]=h[1]}if(t.touches[1]){h=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);s[2]=h[0],s[3]=h[1]}if(t.touches[2]){h=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);s[4]=h[0],s[5]=h[1]}var f,p=e.touchData.startGPosition;if(n&&t.touches[0]&&p){for(var g=[],v=0;v<s.length;v++)g[v]=s[v]-l[v];var y=t.touches[0].clientX-p[0],b=y*y,x=t.touches[0].clientY-p[1];f=b+x*x>=e.touchTapThreshold2}if(n&&e.touchData.cxt){t.preventDefault();var w=t.touches[0].clientX-M,E=t.touches[0].clientY-R,k=t.touches[1].clientX-M,_=t.touches[1].clientY-R,I=K(w,E,k,_);if(I/D>=2.25||I>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var N={originalEvent:t,type:"cxttapend",position:{x:s[0],y:s[1]}};e.touchData.start?(e.touchData.start.unactivate().emit(N),e.touchData.start=null):o.emit(N)}}if(n&&e.touchData.cxt){N={originalEvent:t,type:"cxtdrag",position:{x:s[0],y:s[1]}};e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(N):o.emit(N),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var z=e.findNearestElement(s[0],s[1],!0,!0);e.touchData.cxtOver&&z===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:s[0],y:s[1]}}),e.touchData.cxtOver=z,z&&z.emit({originalEvent:t,type:"cxtdragover",position:{x:s[0],y:s[1]}}))}else if(n&&t.touches[2]&&o.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||o.emit({originalEvent:t,type:"boxstart",position:{x:s[0],y:s[1]}}),e.touchData.selecting=!0,e.touchData.didSelect=!0,a[4]=1,a&&0!==a.length&&void 0!==a[0]?(a[2]=(s[0]+s[2]+s[4])/3,a[3]=(s[1]+s[3]+s[5])/3):(a[0]=(s[0]+s[2]+s[4])/3,a[1]=(s[1]+s[3]+s[5])/3,a[2]=(s[0]+s[2]+s[4])/3+1,a[3]=(s[1]+s[3]+s[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(n&&t.touches[1]&&!e.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),ee=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var O=0;O<ee.length;O++){var V=ee[O]._private;V.grabbed=!1,V.rscratch.inDragLayer=!1}}var F=e.touchData.start,j=(w=t.touches[0].clientX-M,E=t.touches[0].clientY-R,k=t.touches[1].clientX-M,_=t.touches[1].clientY-R,H(w,E,k,_)),X=j/B;if(L){var q=(w-T+(k-P))/2,Y=(E-C+(_-S))/2,W=o.zoom(),U=W*X,G=o.pan(),Z=A[0]*W+G.x,$=A[1]*W+G.y,J={x:-U/W*(Z-G.x-q)+Z,y:-U/W*($-G.y-Y)+$};if(F&&F.active()){var ee=e.dragData.touchDragEles;d(ee),e.redrawHint("drag",!0),e.redrawHint("eles",!0),F.unactivate().emit("freeon"),ee.emit("free"),e.dragData.didDrag&&(F.emit("dragfreeon"),ee.emit("dragfree"))}o.viewport({zoom:U,pan:J,cancelOnFailedZoom:!0}),o.emit("pinchzoom"),B=j,T=w,C=E,P=k,S=_,e.pinching=!0}if(t.touches[0]){h=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);s[0]=h[0],s[1]=h[1]}if(t.touches[1]){h=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);s[2]=h[0],s[3]=h[1]}if(t.touches[2]){h=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);s[4]=h[0],s[5]=h[1]}}else if(t.touches[0]&&!e.touchData.didSelect){var te=e.touchData.start,ne=e.touchData.last;if(e.hoverData.draggingEles||e.swipePanning||(z=e.findNearestElement(s[0],s[1],!0,!0)),n&&null!=te&&t.preventDefault(),n&&null!=te&&e.nodeIsDraggable(te))if(f){ee=e.dragData.touchDragEles;var re=!e.dragData.didDrag;re&&u(ee,{inDragLayer:!0}),e.dragData.didDrag=!0;var ae={x:0,y:0};if(Q(g[0])&&Q(g[1]))if(ae.x+=g[0],ae.y+=g[1],re)e.redrawHint("eles",!0),(ie=e.touchData.dragDelta)&&Q(ie[0])&&Q(ie[1])&&(ae.x+=ie[0],ae.y+=ie[1]);e.hoverData.draggingEles=!0,ee.silentShift(ae).emit("position drag"),e.redrawHint("drag",!0),e.touchData.startPosition[0]==l[0]&&e.touchData.startPosition[1]==l[1]&&e.redrawHint("eles",!0),e.redraw()}else{var ie;0===(ie=e.touchData.dragDelta=e.touchData.dragDelta||[]).length?(ie.push(g[0]),ie.push(g[1])):(ie[0]+=g[0],ie[1]+=g[1])}if(r(te||z,["touchmove","tapdrag","vmousemove"],t,{x:s[0],y:s[1]}),te&&te.grabbed()||z==ne||(ne&&ne.emit({originalEvent:t,type:"tapdragout",position:{x:s[0],y:s[1]}}),z&&z.emit({originalEvent:t,type:"tapdragover",position:{x:s[0],y:s[1]}})),e.touchData.last=z,n)for(O=0;O<s.length;O++)s[O]&&e.touchData.startPosition[O]&&f&&(e.touchData.singleTouchMoved=!0);if(n&&(null==te||te.pannable())&&o.panningEnabled()&&o.userPanningEnabled()){i(te,e.touchData.starts)&&(t.preventDefault(),e.data.bgActivePosistion||(e.data.bgActivePosistion=Xt(e.touchData.startPosition)),e.swipePanning?(o.panBy({x:g[0]*c,y:g[1]*c}),o.emit("dragpan")):f&&(e.swipePanning=!0,o.panBy({x:y*c,y:x*c}),o.emit("dragpan"),te&&(te.unactivate(),e.redrawHint("select",!0),e.touchData.start=null)));h=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);s[0]=h[0],s[1]=h[1]}}for(v=0;v<s.length;v++)l[v]=s[v];n&&t.touches.length>0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(t,"touchcancel",X=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(t,"touchend",q=function(t){var a=e.touchData.start;if(e.touchData.capture){0===t.touches.length&&(e.touchData.capture=!1),t.preventDefault();var i=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var o,s=e.cy,l=s.zoom(),u=e.touchData.now,c=e.touchData.earlier;if(t.touches[0]){var h=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);u[0]=h[0],u[1]=h[1]}if(t.touches[1]){h=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);u[2]=h[0],u[3]=h[1]}if(t.touches[2]){h=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);u[4]=h[0],u[5]=h[1]}if(a&&a.unactivate(),e.touchData.cxt){if(o={originalEvent:t,type:"cxttapend",position:{x:u[0],y:u[1]}},a?a.emit(o):s.emit(o),!e.touchData.cxtDragged){var f={originalEvent:t,type:"cxttap",position:{x:u[0],y:u[1]}};a?a.emit(f):s.emit(f)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!t.touches[2]&&s.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var p=s.collection(e.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,e.redrawHint("select",!0),s.emit({type:"boxend",originalEvent:t,position:{x:u[0],y:u[1]}});p.emit("box").stdFilter(function(e){return e.selectable()&&!e.selected()}).select().emit("boxselect"),p.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=a&&a.unactivate(),t.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(t.touches[1]);else if(t.touches[0]);else if(!t.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var g=e.dragData.touchDragEles;if(null!=a){var v=a._private.grabbed;d(g),e.redrawHint("drag",!0),e.redrawHint("eles",!0),v&&(a.emit("freeon"),g.emit("free"),e.dragData.didDrag&&(a.emit("dragfreeon"),g.emit("dragfree"))),r(a,["touchend","tapend","vmouseup","tapdragout"],t,{x:u[0],y:u[1]}),a.unactivate(),e.touchData.start=null}else{var y=e.findNearestElement(u[0],u[1],!0,!0);r(y,["touchend","tapend","vmouseup","tapdragout"],t,{x:u[0],y:u[1]})}var m=e.touchData.startPosition[0]-u[0],b=m*m,x=e.touchData.startPosition[1]-u[1],w=(b+x*x)*l*l;e.touchData.singleTouchMoved||(a||s.$(":selected").unselect(["tapunselect"]),r(a,["tap","vclick"],t,{x:u[0],y:u[1]}),Y=!1,t.timeStamp-U<=s.multiClickDebounceTime()?(W&&clearTimeout(W),Y=!0,U=null,r(a,["dbltap","vdblclick"],t,{x:u[0],y:u[1]})):(W=setTimeout(function(){Y||r(a,["onetap","voneclick"],t,{x:u[0],y:u[1]})},s.multiClickDebounceTime()),U=t.timeStamp)),null!=a&&!e.dragData.didDrag&&a._private.selectable&&w<e.touchTapThreshold2&&!e.pinching&&("single"===s.selectionType()?(s.$(n).unmerge(a).unselect(["tapunselect"]),a.select(["tapselect"])):a.selected()?a.unselect(["tapunselect"]):a.select(["tapselect"]),e.redrawHint("eles",!0)),e.touchData.singleTouchMoved=!0}for(var E=0;E<u.length;E++)c[E]=u[E];e.dragData.didDrag=!1,0===t.touches.length&&(e.touchData.dragDelta=[],e.touchData.startPosition=[null,null,null,null,null,null],e.touchData.startGPosition=null,e.touchData.didSelect=!1),t.touches.length<2&&(1===t.touches.length&&(e.touchData.startGPosition=[t.touches[0].clientX,t.touches[0].clientY]),e.pinching=!1,e.redrawHint("eles",!0),e.redraw())}},!1),"undefined"==typeof TouchEvent){var G=[],Z=function(e){return{clientX:e.clientX,clientY:e.clientY,force:1,identifier:e.pointerId,pageX:e.pageX,pageY:e.pageY,radiusX:e.width/2,radiusY:e.height/2,screenX:e.screenX,screenY:e.screenY,target:e.target}},$=function(e){G.push(function(e){return{event:e,touch:Z(e)}}(e))},J=function(e){for(var t=0;t<G.length;t++){if(G[t].event.pointerId===e.pointerId)return void G.splice(t,1)}},ee=function(e){e.touches=G.map(function(e){return e.touch})},te=function(e){return"mouse"===e.pointerType||4===e.pointerType};e.registerBinding(e.container,"pointerdown",function(e){te(e)||(e.preventDefault(),$(e),ee(e),F(e))}),e.registerBinding(e.container,"pointerup",function(e){te(e)||(J(e),ee(e),q(e))}),e.registerBinding(e.container,"pointercancel",function(e){te(e)||(J(e),ee(e),X())}),e.registerBinding(e.container,"pointermove",function(e){te(e)||(e.preventDefault(),function(e){var t=G.filter(function(t){return t.event.pointerId===e.pointerId})[0];t.event=e,t.touch=Z(e)}(e),ee(e),j(e))})}};var Zc={generatePolygon:function(e,t){return this.nodeShapes[e]={renderer:this,name:e,points:t,draw:function(e,t,n,r,a,i){this.renderer.nodeShapeImpl("polygon",e,t,n,r,a,this.points)},intersectLine:function(e,t,n,r,a,i,o,s){return En(a,i,this.points,e,t,n/2,r/2,o)},checkPoint:function(e,t,n,r,a,i,o,s){return gn(e,t,this.points,i,o,r,a,[0,-1],n)}}}};Zc.generateEllipse=function(){return this.nodeShapes.ellipse={renderer:this,name:"ellipse",draw:function(e,t,n,r,a,i){this.renderer.nodeShapeImpl(this.name,e,t,n,r,a)},intersectLine:function(e,t,n,r,a,i,o,s){return function(e,t,n,r,a,i){var o=n-e,s=r-t;o/=a,s/=i;var l=Math.sqrt(o*o+s*s),u=l-1;if(u<0)return[];var c=u/l;return[(n-e)*c+e,(r-t)*c+t]}(a,i,e,t,n/2+o,r/2+o)},checkPoint:function(e,t,n,r,a,i,o,s){return mn(e,t,r,a,i,o,n)}}},Zc.generateRoundPolygon=function(e,t){return this.nodeShapes[e]={renderer:this,name:e,points:t,getOrCreateCorners:function(e,n,r,a,i,o,s){if(void 0!==o[s]&&o[s+"-cx"]===e&&o[s+"-cy"]===n)return o[s];o[s]=new Array(t.length/2),o[s+"-cx"]=e,o[s+"-cy"]=n;var l=r/2,u=a/2;i="auto"===i?Bn(r,a):i;for(var c=new Array(t.length/2),d=0;d<t.length/2;d++)c[d]={x:e+l*t[2*d],y:n+u*t[2*d+1]};var h,f,p,g,v=c.length;for(f=c[v-1],h=0;h<v;h++)p=c[h%v],g=c[(h+1)%v],o[s][h]=Mc(f,p,g,i),f=p,p=g;return o[s]},draw:function(e,t,n,r,a,i,o){this.renderer.nodeShapeImpl("round-polygon",e,t,n,r,a,this.points,this.getOrCreateCorners(t,n,r,a,i,o,"drawCorners"))},intersectLine:function(e,t,n,r,a,i,o,s,l){return function(e,t,n,r,a,i,o,s,l){var u,c=[],d=new Array(2*n.length);l.forEach(function(n,i){0===i?(d[d.length-2]=n.startX,d[d.length-1]=n.startY):(d[4*i-2]=n.startX,d[4*i-1]=n.startY),d[4*i]=n.stopX,d[4*i+1]=n.stopY,0!==(u=bn(e,t,r,a,n.cx,n.cy,n.radius)).length&&c.push(u[0],u[1])});for(var h=0;h<d.length/4;h++)0!==(u=wn(e,t,r,a,d[4*h],d[4*h+1],d[4*h+2],d[4*h+3],!1)).length&&c.push(u[0],u[1]);if(c.length>2){for(var f=[c[0],c[1]],p=Math.pow(f[0]-e,2)+Math.pow(f[1]-t,2),g=1;g<c.length/2;g++){var v=Math.pow(c[2*g]-e,2)+Math.pow(c[2*g+1]-t,2);v<=p&&(f[0]=c[2*g],f[1]=c[2*g+1],p=v)}return f}return c}(a,i,this.points,e,t,0,0,0,this.getOrCreateCorners(e,t,n,r,s,l,"corners"))},checkPoint:function(e,t,n,r,a,i,o,s,l){return function(e,t,n,r,a,i,o,s){for(var l=new Array(2*n.length),u=0;u<s.length;u++){var c=s[u];if(l[4*u+0]=c.startX,l[4*u+1]=c.startY,l[4*u+2]=c.stopX,l[4*u+3]=c.stopY,Math.pow(c.cx-e,2)+Math.pow(c.cy-t,2)<=Math.pow(c.radius,2))return!0}return pn(e,t,l)}(e,t,this.points,0,0,0,0,this.getOrCreateCorners(i,o,r,a,s,l,"corners"))}}},Zc.generateRoundRectangle=function(){return this.nodeShapes["round-rectangle"]=this.nodeShapes.roundrectangle={renderer:this,name:"round-rectangle",points:Tn(4,0),draw:function(e,t,n,r,a,i){this.renderer.nodeShapeImpl(this.name,e,t,n,r,a,this.points,i)},intersectLine:function(e,t,n,r,a,i,o,s){return un(a,i,e,t,n,r,o,s)},checkPoint:function(e,t,n,r,a,i,o,s){var l=r/2,u=a/2;s="auto"===s?Sn(r,a):s;var c=2*(s=Math.min(l,u,s));return!!gn(e,t,this.points,i,o,r,a-c,[0,-1],n)||(!!gn(e,t,this.points,i,o,r-c,a,[0,-1],n)||(!!mn(e,t,c,c,i-l+s,o-u+s,n)||(!!mn(e,t,c,c,i+l-s,o-u+s,n)||(!!mn(e,t,c,c,i+l-s,o+u-s,n)||!!mn(e,t,c,c,i-l+s,o+u-s,n)))))}}},Zc.generateCutRectangle=function(){return this.nodeShapes["cut-rectangle"]=this.nodeShapes.cutrectangle={renderer:this,name:"cut-rectangle",cornerLength:8,points:Tn(4,0),draw:function(e,t,n,r,a,i){this.renderer.nodeShapeImpl(this.name,e,t,n,r,a,null,i)},generateCutTrianglePts:function(e,t,n,r,a){var i="auto"===a?this.cornerLength:a,o=t/2,s=e/2,l=n-s,u=n+s,c=r-o,d=r+o;return{topLeft:[l,c+i,l+i,c,l+i,c+i],topRight:[u-i,c,u,c+i,u-i,c+i],bottomRight:[u,d-i,u-i,d,u-i,d-i],bottomLeft:[l+i,d,l,d-i,l+i,d-i]}},intersectLine:function(e,t,n,r,a,i,o,s){var l=this.generateCutTrianglePts(n+2*o,r+2*o,e,t,s),u=[].concat.apply([],[l.topLeft.splice(0,4),l.topRight.splice(0,4),l.bottomRight.splice(0,4),l.bottomLeft.splice(0,4)]);return En(a,i,u,e,t)},checkPoint:function(e,t,n,r,a,i,o,s){var l="auto"===s?this.cornerLength:s;if(gn(e,t,this.points,i,o,r,a-2*l,[0,-1],n))return!0;if(gn(e,t,this.points,i,o,r-2*l,a,[0,-1],n))return!0;var u=this.generateCutTrianglePts(r,a,i,o);return pn(e,t,u.topLeft)||pn(e,t,u.topRight)||pn(e,t,u.bottomRight)||pn(e,t,u.bottomLeft)}}},Zc.generateBarrel=function(){return this.nodeShapes.barrel={renderer:this,name:"barrel",points:Tn(4,0),draw:function(e,t,n,r,a,i){this.renderer.nodeShapeImpl(this.name,e,t,n,r,a)},intersectLine:function(e,t,n,r,a,i,o,s){var l=this.generateBarrelBezierPts(n+2*o,r+2*o,e,t),u=function(e){var t=Zt({x:e[0],y:e[1]},{x:e[2],y:e[3]},{x:e[4],y:e[5]},.15),n=Zt({x:e[0],y:e[1]},{x:e[2],y:e[3]},{x:e[4],y:e[5]},.5),r=Zt({x:e[0],y:e[1]},{x:e[2],y:e[3]},{x:e[4],y:e[5]},.85);return[e[0],e[1],t.x,t.y,n.x,n.y,r.x,r.y,e[4],e[5]]},c=[].concat(u(l.topLeft),u(l.topRight),u(l.bottomRight),u(l.bottomLeft));return En(a,i,c,e,t)},generateBarrelBezierPts:function(e,t,n,r){var a=t/2,i=e/2,o=n-i,s=n+i,l=r-a,u=r+a,c=Dn(e,t),d=c.heightOffset,h=c.widthOffset,f=c.ctrlPtOffsetPct*e,p={topLeft:[o,l+d,o+f,l,o+h,l],topRight:[s-h,l,s-f,l,s,l+d],bottomRight:[s,u-d,s-f,u,s-h,u],bottomLeft:[o+h,u,o+f,u,o,u-d]};return p.topLeft.isTop=!0,p.topRight.isTop=!0,p.bottomLeft.isBottom=!0,p.bottomRight.isBottom=!0,p},checkPoint:function(e,t,n,r,a,i,o,s){var l=Dn(r,a),u=l.heightOffset,c=l.widthOffset;if(gn(e,t,this.points,i,o,r,a-2*u,[0,-1],n))return!0;if(gn(e,t,this.points,i,o,r-2*c,a,[0,-1],n))return!0;for(var d=this.generateBarrelBezierPts(r,a,i,o),h=function(e,t,n){var r,a,i=n[4],o=n[2],s=n[0],l=n[5],u=n[1],c=Math.min(i,s),d=Math.max(i,s),h=Math.min(l,u),f=Math.max(l,u);if(c<=e&&e<=d&&h<=t&&t<=f){var p=[(r=i)-2*(a=o)+s,2*(a-r),r],g=function(e,t,n,r){var a=t*t-4*e*(n-=r);if(a<0)return[];var i=Math.sqrt(a),o=2*e;return[(-t+i)/o,(-t-i)/o]}(p[0],p[1],p[2],e).filter(function(e){return 0<=e&&e<=1});if(g.length>0)return g[0]}return null},f=Object.keys(d),p=0;p<f.length;p++){var g=d[f[p]],v=h(e,t,g);if(null!=v){var y=g[5],m=g[3],b=g[1],x=Gt(y,m,b,v);if(g.isTop&&x<=t)return!0;if(g.isBottom&&t<=x)return!0}}return!1}}},Zc.generateBottomRoundrectangle=function(){return this.nodeShapes["bottom-round-rectangle"]=this.nodeShapes.bottomroundrectangle={renderer:this,name:"bottom-round-rectangle",points:Tn(4,0),draw:function(e,t,n,r,a,i){this.renderer.nodeShapeImpl(this.name,e,t,n,r,a,this.points,i)},intersectLine:function(e,t,n,r,a,i,o,s){var l=t-(r/2+o),u=wn(a,i,e,t,e-(n/2+o),l,e+(n/2+o),l,!1);return u.length>0?u:un(a,i,e,t,n,r,o,s)},checkPoint:function(e,t,n,r,a,i,o,s){var l=2*(s="auto"===s?Sn(r,a):s);if(gn(e,t,this.points,i,o,r,a-l,[0,-1],n))return!0;if(gn(e,t,this.points,i,o,r-l,a,[0,-1],n))return!0;var u=r/2+2*n,c=a/2+2*n;return!!pn(e,t,[i-u,o-c,i-u,o,i+u,o,i+u,o-c])||(!!mn(e,t,l,l,i+r/2-s,o+a/2-s,n)||!!mn(e,t,l,l,i-r/2+s,o+a/2-s,n))}}},Zc.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",Tn(3,0)),this.generateRoundPolygon("round-triangle",Tn(3,0)),this.generatePolygon("rectangle",Tn(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",Tn(5,0)),this.generateRoundPolygon("round-pentagon",Tn(5,0)),this.generatePolygon("hexagon",Tn(6,0)),this.generateRoundPolygon("round-hexagon",Tn(6,0)),this.generatePolygon("heptagon",Tn(7,0)),this.generateRoundPolygon("round-heptagon",Tn(7,0)),this.generatePolygon("octagon",Tn(8,0)),this.generateRoundPolygon("round-octagon",Tn(8,0));var r=new Array(20),a=Pn(5,0),i=Pn(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s<i.length/2;s++)i[2*s]*=o,i[2*s+1]*=o;for(s=0;s<5;s++)r[4*s]=a[2*s],r[4*s+1]=a[2*s+1],r[4*s+2]=i[2*s],r[4*s+3]=i[2*s+1];r=Cn(r),this.generatePolygon("star",r),this.generatePolygon("vee",[-1,-1,0,-.333,1,-1,0,1]),this.generatePolygon("rhomboid",[-1,-1,.333,-1,1,1,-.333,1]),this.generatePolygon("right-rhomboid",[-.333,-1,1,-1,.333,1,-1,1]),this.nodeShapes.concavehexagon=this.generatePolygon("concave-hexagon",[-1,-.95,-.75,0,-1,.95,1,.95,.75,0,1,-.95]);var l=[-1,-1,.25,-1,1,0,.25,1,-1,1];this.generatePolygon("tag",l),this.generateRoundPolygon("round-tag",l),e.makePolygon=function(e){var n,r="polygon-"+e.join("$");return(n=this[r])?n:t.generatePolygon(r,e)}};var $c={timeToRender:function(){return this.redrawTotalTime/this.redrawCount},redraw:function(e){e=e||lt();var t=this;void 0===t.averageRedrawTime&&(t.averageRedrawTime=0),void 0===t.lastRedrawTime&&(t.lastRedrawTime=0),void 0===t.lastDrawTime&&(t.lastDrawTime=0),t.requestedFrame=!0,t.renderOptions=e},beforeRender:function(e,t){if(!this.destroyed){null==t&&nt("Priority is not optional for beforeRender");var n=this.beforeRenderCallbacks;n.push({fn:e,priority:t}),n.sort(function(e,t){return t.priority-e.priority})}}},Qc=function(e,t,n){for(var r=e.beforeRenderCallbacks,a=0;a<r.length;a++)r[a].fn(t,n)};$c.startRenderLoop=function(){var e=this,t=e.cy;if(!e.renderLoopStarted){e.renderLoopStarted=!0;var n=function(r){if(!e.destroyed){if(t.batching());else if(e.requestedFrame&&!e.skipFrame){Qc(e,!0,r);var a=Le();e.render(e.renderOptions);var i=e.lastDrawTime=Le();void 0===e.averageRedrawTime&&(e.averageRedrawTime=i-a),void 0===e.redrawCount&&(e.redrawCount=0),e.redrawCount++,void 0===e.redrawTotalTime&&(e.redrawTotalTime=0);var o=i-a;e.redrawTotalTime+=o,e.lastRedrawTime=o,e.averageRedrawTime=e.averageRedrawTime/2+o/2,e.requestedFrame=!1}else Qc(e,!1,r);e.skipFrame=!1,Ne(n)}};Ne(n)}};var Jc=function(e){this.init(e)},ed=Jc.prototype;ed.clientFunctions=["redrawHint","render","renderTo","matchCanvasSize","nodeShapeImpl","arrowShapeImpl"],ed.init=function(e){var t=this;t.options=e,t.cy=e.cy;var n=t.container=e.cy.container(),r=t.cy.window();if(r){var a=r.document,i=a.head,o="__________cytoscape_stylesheet",s="__________cytoscape_container",l=null!=a.getElementById(o);if(n.className.indexOf(s)<0&&(n.className=(n.className||"")+" "+s),!l){var u=a.createElement("style");u.id=o,u.textContent="."+s+" { position: relative; }",i.insertBefore(u,i.children[0])}"static"===r.getComputedStyle(n).getPropertyValue("position")&&at("A Cytoscape container has style position:static and so can not use UI extensions properly")}t.selection=[void 0,void 0,void 0,void 0,0],t.bezierProjPcts=[.05,.225,.4,.5,.6,.775,.95],t.hoverData={down:null,last:null,downTime:null,triggerMode:null,dragging:!1,initialPan:[null,null],capture:!1},t.dragData={possibleDragElements:[]},t.touchData={start:null,capture:!1,startPosition:[null,null,null,null,null,null],singleTouchStartTime:null,singleTouchMoved:!0,now:[null,null,null,null,null,null],earlier:[null,null,null,null,null,null]},t.redraws=0,t.showFps=e.showFps,t.debug=e.debug,t.webgl=e.webgl,t.hideEdgesOnViewport=e.hideEdgesOnViewport,t.textureOnViewport=e.textureOnViewport,t.wheelSensitivity=e.wheelSensitivity,t.motionBlurEnabled=e.motionBlur,t.forcedPixelRatio=Q(e.pixelRatio)?e.pixelRatio:null,t.motionBlur=e.motionBlur,t.motionBlurOpacity=e.motionBlurOpacity,t.motionBlurTransparency=1-t.motionBlurOpacity,t.motionBlurPxRatio=1,t.mbPxRBlurry=1,t.minMbLowQualFrames=4,t.fullQualityMb=!1,t.clearedForMotionBlur=[],t.desktopTapThreshold=e.desktopTapThreshold,t.desktopTapThreshold2=e.desktopTapThreshold*e.desktopTapThreshold,t.touchTapThreshold=e.touchTapThreshold,t.touchTapThreshold2=e.touchTapThreshold*e.touchTapThreshold,t.tapholdDuration=500,t.bindings=[],t.beforeRenderCallbacks=[],t.beforeRenderPriorities={animations:400,eleCalcs:300,eleTxrDeq:200,lyrTxrDeq:150,lyrTxrSkip:100},t.registerNodeShapes(),t.registerArrowShapes(),t.registerCalculationListeners()},ed.notify=function(e,t){var n=this,r=n.cy;this.destroyed||("init"!==e?"destroy"!==e?(("add"===e||"remove"===e||"move"===e&&r.hasCompoundNodes()||"load"===e||"zorder"===e||"mount"===e)&&n.invalidateCachedZSortedEles(),"viewport"===e&&n.redrawHint("select",!0),"gc"===e&&n.redrawHint("gc",!0),"load"!==e&&"resize"!==e&&"mount"!==e||(n.invalidateContainerClientCoordsCache(),n.matchCanvasSize(n.container)),n.redrawHint("eles",!0),n.redrawHint("drag",!0),this.startRenderLoop(),this.redraw()):n.destroy():n.load())},ed.destroy=function(){var e=this;e.destroyed=!0,e.cy.stopAnimationLoop();for(var t=0;t<e.bindings.length;t++){var n=e.bindings[t],r=n.target;(r.off||r.removeEventListener).apply(r,n.args)}if(e.bindings=[],e.beforeRenderCallbacks=[],e.onUpdateEleCalcsFns=[],e.removeObserver&&e.removeObserver.disconnect(),e.styleObserver&&e.styleObserver.disconnect(),e.resizeObserver&&e.resizeObserver.disconnect(),e.labelCalcDiv)try{document.body.removeChild(e.labelCalcDiv)}catch(a){}},ed.isHeadless=function(){return!1},[sc,Hc,Kc,Gc,Zc,$c].forEach(function(e){me(ed,e)});var td=1e3/60,nd=function(e){return function(){var t=this,n=this.renderer;if(!t.dequeueingSetup){t.dequeueingSetup=!0;var r=Ae(function(){n.redrawHint("eles",!0),n.redrawHint("drag",!0),n.redraw()},e.deqRedrawThreshold),a=e.priority||tt;n.beforeRender(function(a,i){var o=Le(),s=n.averageRedrawTime,l=n.lastRedrawTime,u=[],c=n.cy.extent(),d=n.getPixelRatio();for(a||n.flushRenderedStyleQueue();;){var h=Le(),f=h-o,p=h-i;if(l<td){var g=td-(a?s:0);if(p>=e.deqFastCost*g)break}else if(a){if(f>=e.deqCost*l||f>=e.deqAvgCost*s)break}else if(p>=e.deqNoDrawCost*td)break;var v=e.deq(t,d,c);if(!(v.length>0))break;for(var y=0;y<v.length;y++)u.push(v[y])}u.length>0&&(e.onDeqd(t,u),!a&&e.shouldRedraw(t,u,d,c)&&r())},a(t))}}},rd=function(){return i(function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Je;a(this,e),this.idsByKey=new pt,this.keyForId=new pt,this.cachesByLvl=new pt,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=n},[{key:"getIdsFor",value:function(e){null==e&&nt("Can not get id list for null key");var t=this.idsByKey,n=this.idsByKey.get(e);return n||(n=new vt,t.set(e,n)),n}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t),r=this.getKey(e);this.deleteIdForKey(n,t),this.addIdForKey(r,t),this.keyForId.set(t,r)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteIdForKey(n,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,n=this.lvls,r=t.get(e);return r||(r=new pt,t.set(e,r),n.push(e)),r}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var n=this.getKey(e),r=this.getCache(n,t);return null!=r&&this.updateKeyMappingFor(e),r}},{key:"getForCachedKey",value:function(e,t){var n=this.keyForId.get(e.id());return this.getCache(n,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var n=this.getKey(e);return this.hasCache(n,t)}},{key:"setCache",value:function(e,t,n){n.key=e,this.getCachesAt(t).set(e,n)}},{key:"set",value:function(e,t,n){var r=this.getKey(e);this.setCache(r,t,n),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var n=this.getKey(e);this.deleteCache(n,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach(function(n){return t.deleteCache(e,n)})}},{key:"invalidate",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteKeyMappingFor(e);var r=this.doesEleInvalidateKey(e);return r&&this.invalidateKey(n),r||0===this.getNumberOfIdsForKey(n)}}])}(),ad=7.99,id={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},od=ut({getKey:null,doesEleInvalidateKey:Je,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Qe,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),sd=function(e,t){var n=this;n.renderer=e,n.onDequeues=[];var r=od(t);me(n,r),n.lookup=new rd(r.getKey,r.doesEleInvalidateKey),n.setupDequeueing()},ld=sd.prototype;ld.reasons=id,ld.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]},ld.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},ld.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new Pt(function(e,t){return t.reqs-e.reqs})},ld.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},ld.getElement=function(e,t,n,r,a){var i=this,o=this.renderer,s=o.cy.zoom(),l=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!i.allowEdgeTxrCaching&&e.isEdge()||!i.allowParentTxrCaching&&e.isParent())return null;if(null==r&&(r=Math.ceil(Yt(s*n))),r<-4)r=-4;else if(s>=7.99||r>3)return null;var u=Math.pow(2,r),c=t.h*u,d=t.w*u,h=o.eleTextBiggerThanMin(e,u);if(!this.isVisible(e,h))return null;var f,p=l.get(e,r);if(p&&p.invalidated&&(p.invalidated=!1,p.texture.invalidatedWidth-=p.width),p)return p;if(f=c<=25?25:c<=50?50:50*Math.ceil(c/50),c>1024||d>1024)return null;var g=i.getTextureQueue(f),v=g[g.length-2],y=function(){return i.recycleTexture(f,d)||i.addTexture(f,d)};v||(v=g[g.length-1]),v||(v=y()),v.width-v.usedWidth<d&&(v=y());for(var m,b=function(e){return e&&e.scaledLabelShown===h},x=a&&a===id.dequeue,w=a&&a===id.highQuality,E=a&&a===id.downscale,k=r+1;k<=3;k++){var T=l.get(e,k);if(T){m=T;break}}var C=m&&m.level===r+1?m:null,P=function(){v.context.drawImage(C.texture.canvas,C.x,0,C.width,C.height,v.usedWidth,0,d,c)};if(v.context.setTransform(1,0,0,1,0,0),v.context.clearRect(v.usedWidth,0,d,f),b(C))P();else if(b(m)){if(!w)return i.queueElement(e,m.level-1),m;for(var S=m.level;S>r;S--)C=i.getElement(e,t,n,S,id.downscale);P()}else{var B;if(!x&&!w&&!E)for(var D=r-1;D>=-4;D--){var _=l.get(e,D);if(_){B=_;break}}if(b(B))return i.queueElement(e,r),B;v.context.translate(v.usedWidth,0),v.context.scale(u,u),this.drawElement(v.context,e,t,h,!1),v.context.scale(1/u,1/u),v.context.translate(-v.usedWidth,0)}return p={x:v.usedWidth,texture:v,level:r,scale:u,width:d,height:c,scaledLabelShown:h},v.usedWidth+=Math.ceil(d+8),v.eleCaches.push(p),l.set(e,r,p),i.checkTextureFullness(v),p},ld.invalidateElements=function(e){for(var t=0;t<e.length;t++)this.invalidateElement(e[t])},ld.invalidateElement=function(e){var t=this,n=t.lookup,r=[];if(n.isInvalid(e)){for(var a=-4;a<=3;a++){var i=n.getForCachedKey(e,a);i&&r.push(i)}if(n.invalidate(e))for(var o=0;o<r.length;o++){var s=r[o],l=s.texture;l.invalidatedWidth+=s.width,s.invalidated=!0,t.checkTextureUtility(l)}t.removeFromQueue(e)}},ld.checkTextureUtility=function(e){e.invalidatedWidth>=.2*e.width&&this.retireTexture(e)},ld.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?ct(t,e):e.fullnessChecks++},ld.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t),r=this.lookup;ct(n,e),e.retired=!0;for(var a=e.eleCaches,i=0;i<a.length;i++){var o=a[i];r.deleteCache(o.key,o.level)}dt(a),this.getRetiredTextureQueue(t).push(e)},ld.addTexture=function(e,t){var n={};return this.getTextureQueue(e).push(n),n.eleCaches=[],n.height=e,n.width=Math.max(1024,t),n.usedWidth=0,n.invalidatedWidth=0,n.fullnessChecks=0,n.canvas=this.renderer.makeOffscreenCanvas(n.width,n.height),n.context=n.canvas.getContext("2d"),n},ld.recycleTexture=function(e,t){for(var n=this.getTextureQueue(e),r=this.getRetiredTextureQueue(e),a=0;a<r.length;a++){var i=r[a];if(i.width>=t)return i.retired=!1,i.usedWidth=0,i.invalidatedWidth=0,i.fullnessChecks=0,dt(i.eleCaches),i.context.setTransform(1,0,0,1,0,0),i.context.clearRect(0,0,i.width,i.height),ct(r,i),n.push(i),i}},ld.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementKeyToQueue(),a=this.getKey(e),i=r[a];if(i)i.level=Math.max(i.level,t),i.eles.merge(e),i.reqs++,n.updateItem(i);else{var o={eles:e.spawn().merge(e),level:t,reqs:1,key:a};n.push(o),r[a]=o}},ld.dequeue=function(e){for(var t=this,n=t.getElementQueue(),r=t.getElementKeyToQueue(),a=[],i=t.lookup,o=0;o<1&&n.size()>0;o++){var s=n.pop(),l=s.key,u=s.eles[0],c=i.hasCache(u,s.level);if(r[l]=null,!c){a.push(s);var d=t.getBoundingBox(u);t.getElement(u,d,e,s.level,id.dequeue)}}return a},ld.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=this.getKey(e),a=n[r];null!=a&&(1===a.eles.length?(a.reqs=$e,t.updateItem(a),t.pop(),n[r]=null):a.eles.unmerge(e))},ld.onDequeue=function(e){this.onDequeues.push(e)},ld.offDequeue=function(e){ct(this.onDequeues,e)},ld.setupDequeueing=nd({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n<e.onDequeues.length;n++){(0,e.onDequeues[n])(t)}},shouldRedraw:function(e,t,n,r){for(var a=0;a<t.length;a++)for(var i=t[a].eles,o=0;o<i.length;o++){var s=i[o].boundingBox();if(an(s,r))return!0}return!1},priority:function(e){return e.renderer.beforeRenderPriorities.eleTxrDeq}});var ud=function(e){var t=this,n=t.renderer=e,r=n.cy;t.layersByLevel={},t.firstGet=!0,t.lastInvalidationTime=Le()-500,t.skipping=!1,t.eleTxrDeqs=r.collection(),t.scheduleElementRefinement=Ae(function(){t.refineElementTextures(t.eleTxrDeqs),t.eleTxrDeqs.unmerge(t.eleTxrDeqs)},50),n.beforeRender(function(e,n){n-t.lastInvalidationTime<=250?t.skipping=!0:t.skipping=!1},n.beforeRenderPriorities.lyrTxrSkip);t.layersQueue=new Pt(function(e,t){return t.reqs-e.reqs}),t.setupDequeueing()},cd=ud.prototype,dd=0,hd=Math.pow(2,53)-1;cd.makeLayer=function(e,t){var n=Math.pow(2,t),r=Math.ceil(e.w*n),a=Math.ceil(e.h*n),i=this.renderer.makeOffscreenCanvas(r,a),o={id:dd=++dd%hd,bb:e,level:t,width:r,height:a,canvas:i,context:i.getContext("2d"),eles:[],elesQueue:[],reqs:0},s=o.context,l=-o.bb.x1,u=-o.bb.y1;return s.scale(n,n),s.translate(l,u),o},cd.getLayers=function(e,t,n){var r=this,a=r.renderer.cy.zoom(),i=r.firstGet;if(r.firstGet=!1,null==n)if((n=Math.ceil(Yt(a*t)))<-4)n=-4;else if(a>=3.99||n>2)return null;r.validateLayersElesOrdering(n,e);var o,s,l=r.layersByLevel,u=Math.pow(2,n),c=l[n]=l[n]||[];if(r.levelIsComplete(n,e))return c;!function(){var t=function(t){if(r.validateLayersElesOrdering(t,e),r.levelIsComplete(t,e))return s=l[t],!0},a=function(e){if(!s)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};a(1),a(-1);for(var i=c.length-1;i>=0;i--){var o=c[i];o.invalid&&ct(c,o)}}();var d=function(t){var a=(t=t||{}).after;!function(){if(!o){o=Qt();for(var t=0;t<e.length;t++)Jt(o,e[t].boundingBox())}}();var i=Math.ceil(o.w*u),s=Math.ceil(o.h*u);if(i>32767||s>32767)return null;if(i*s>16e6)return null;var l=r.makeLayer(o,n);if(null!=a){var d=c.indexOf(a)+1;c.splice(d,0,l)}else(void 0===t.insert||t.insert)&&c.unshift(l);return l};if(r.skipping&&!i)return null;for(var h=null,f=e.length/1,p=!i,g=0;g<e.length;g++){var v=e[g],y=v._private.rscratch,m=y.imgLayerCaches=y.imgLayerCaches||{},b=m[n];if(b)h=b;else{if((!h||h.eles.length>=f||!ln(h.bb,v.boundingBox()))&&!(h=d({insert:!0,after:h})))return null;s||p?r.queueLayer(h,v):r.drawEleInLayer(h,v,n,t),h.eles.push(v),m[n]=h}}return s||(p?null:c)},cd.getEleLevelForLayerLevel=function(e,t){return e},cd.drawEleInLayer=function(e,t,n,r){var a=this.renderer,i=e.context,o=t.boundingBox();0!==o.w&&0!==o.h&&t.visible()&&(n=this.getEleLevelForLayerLevel(n,r),a.setImgSmoothing(i,!1),a.drawCachedElement(i,t,null,null,n,true),a.setImgSmoothing(i,!0))},cd.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,a=0;a<n.length;a++){var i=n[a];if(i.reqs>0)return!1;if(i.invalid)return!1;r+=i.eles.length}return r===t.length},cd.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r<n.length;r++){for(var a=n[r],i=-1,o=0;o<t.length;o++)if(a.eles[0]===t[o]){i=o;break}if(i<0)this.invalidateLayer(a);else{var s=i;for(o=0;o<a.eles.length;o++)if(a.eles[o]!==t[s+o]){this.invalidateLayer(a);break}}}},cd.updateElementsInLayers=function(e,t){for(var n=te(e[0]),r=0;r<e.length;r++)for(var a=n?null:e[r],i=n?e[r]:e[r].ele,o=i._private.rscratch,s=o.imgLayerCaches=o.imgLayerCaches||{},l=-4;l<=2;l++){var u=s[l];u&&(a&&this.getEleLevelForLayerLevel(u.level)!==a.level||t(u,i,a))}},cd.haveLayers=function(){for(var e=!1,t=-4;t<=2;t++){var n=this.layersByLevel[t];if(n&&n.length>0){e=!0;break}}return e},cd.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=Le(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,function(e,n,r){t.invalidateLayer(e)}))},cd.invalidateLayer=function(e){if(this.lastInvalidationTime=Le(),!e.invalid){var t=e.level,n=e.eles,r=this.layersByLevel[t];ct(r,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var a=0;a<n.length;a++){var i=n[a]._private.rscratch.imgLayerCaches;i&&(i[t]=null)}}},cd.refineElementTextures=function(e){var t=this;t.updateElementsInLayers(e,function(e,n,r){var a=e.replacement;if(a||((a=e.replacement=t.makeLayer(e.bb,e.level)).replaces=e,a.eles=e.eles),!a.reqs)for(var i=0;i<a.eles.length;i++)t.queueLayer(a,a.eles[i])})},cd.enqueueElementRefinement=function(e){this.eleTxrDeqs.merge(e),this.scheduleElementRefinement()},cd.queueLayer=function(e,t){var n=this.layersQueue,r=e.elesQueue,a=r.hasId=r.hasId||{};if(!e.replacement){if(t){if(a[t.id()])return;r.push(t),a[t.id()]=!0}e.reqs?(e.reqs++,n.updateItem(e)):(e.reqs=1,n.push(e))}},cd.dequeue=function(e){for(var t=this,n=t.layersQueue,r=[],a=0;a<1&&0!==n.size();){var i=n.peek();if(i.replacement)n.pop();else if(i.replaces&&i!==i.replaces.replacement)n.pop();else if(i.invalid)n.pop();else{var o=i.elesQueue.shift();o&&(t.drawEleInLayer(i,o,i.level,e),a++),0===r.length&&r.push(!0),0===i.elesQueue.length&&(n.pop(),i.reqs=0,i.replaces&&t.applyLayerReplacement(i),t.requestRedraw())}}return r},cd.applyLayerReplacement=function(e){var t=this.layersByLevel[e.level],n=e.replaces,r=t.indexOf(n);if(!(r<0||n.invalid)){t[r]=e;for(var a=0;a<e.eles.length;a++){var i=e.eles[a]._private,o=i.imgLayerCaches=i.imgLayerCaches||{};o&&(o[e.level]=e)}this.requestRedraw()}},cd.requestRedraw=Ae(function(){var e=this.renderer;e.redrawHint("eles",!0),e.redrawHint("drag",!0),e.redraw()},100),cd.setupDequeueing=nd({deqRedrawThreshold:50,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t){return e.dequeue(t)},onDeqd:tt,shouldRedraw:Qe,priority:function(e){return e.renderer.beforeRenderPriorities.lyrTxrDeq}});var fd,pd={};function gd(e,t){for(var n=0;n<t.length;n++){var r=t[n];e.lineTo(r.x,r.y)}}function vd(e,t,n){for(var r,a=0;a<t.length;a++){var i=t[a];0===a&&(r=i),e.lineTo(i.x,i.y)}e.quadraticCurveTo(n.x,n.y,r.x,r.y)}function yd(e,t,n){e.beginPath&&e.beginPath();for(var r=t,a=0;a<r.length;a++){var i=r[a];e.lineTo(i.x,i.y)}var o=n,s=n[0];e.moveTo(s.x,s.y);for(a=1;a<o.length;a++){i=o[a];e.lineTo(i.x,i.y)}e.closePath&&e.closePath()}function md(e,t,n,r,a){e.beginPath&&e.beginPath(),e.arc(n,r,a,0,2*Math.PI,!1);var i=t,o=i[0];e.moveTo(o.x,o.y);for(var s=0;s<i.length;s++){var l=i[s];e.lineTo(l.x,l.y)}e.closePath&&e.closePath()}function bd(e,t,n,r){e.arc(t,n,r,0,2*Math.PI,!1)}pd.arrowShapeImpl=function(e){return(fd||(fd={polygon:gd,"triangle-backcurve":vd,"triangle-tee":yd,"circle-triangle":md,"triangle-cross":yd,circle:bd}))[e]};var xd={drawElement:function(e,t,n,r,a,i){t.isNode()?this.drawNode(e,t,n,r,a,i):this.drawEdge(e,t,n,r,a,i)},drawElementOverlay:function(e,t){t.isNode()?this.drawNodeOverlay(e,t):this.drawEdgeOverlay(e,t)},drawElementUnderlay:function(e,t){t.isNode()?this.drawNodeUnderlay(e,t):this.drawEdgeUnderlay(e,t)},drawCachedElementPortion:function(e,t,n,r,a,i,o,s){var l=this,u=n.getBoundingBox(t);if(0!==u.w&&0!==u.h){var c=n.getElement(t,u,r,a,i);if(null!=c){var d=s(l,t);if(0===d)return;var h,f,p,g,v,y,m=o(l,t),b=u.x1,x=u.y1,w=u.w,E=u.h;if(0!==m){var k=n.getRotationPoint(t);p=k.x,g=k.y,e.translate(p,g),e.rotate(m),(v=l.getImgSmoothing(e))||l.setImgSmoothing(e,!0);var T=n.getRotationOffset(t);h=T.x,f=T.y}else h=b,f=x;1!==d&&(y=e.globalAlpha,e.globalAlpha=y*d),e.drawImage(c.texture.canvas,c.x,0,c.width,c.height,h,f,w,E),1!==d&&(e.globalAlpha=y),0!==m&&(e.rotate(-m),e.translate(-p,-g),v||l.setImgSmoothing(e,!1))}else n.drawElement(e,t)}}},wd=function(){return 0},Ed=function(e,t){return e.getTextAngle(t,null)},kd=function(e,t){return e.getTextAngle(t,"source")},Td=function(e,t){return e.getTextAngle(t,"target")},Cd=function(e,t){return t.effectiveOpacity()},Pd=function(e,t){return t.pstyle("text-opacity").pfValue*t.effectiveOpacity()};xd.drawCachedElement=function(e,t,n,r,a,i){var o=this,s=o.data,l=s.eleTxrCache,u=s.lblTxrCache,c=s.slbTxrCache,d=s.tlbTxrCache,h=t.boundingBox(),f=!0===i?l.reasons.highQuality:null;if(0!==h.w&&0!==h.h&&t.visible()&&(!r||an(h,r))){var p=t.isEdge(),g=t.element()._private.rscratch.badLine;o.drawElementUnderlay(e,t),o.drawCachedElementPortion(e,t,l,n,a,f,wd,Cd),p&&g||o.drawCachedElementPortion(e,t,u,n,a,f,Ed,Pd),p&&!g&&(o.drawCachedElementPortion(e,t,c,n,a,f,kd,Pd),o.drawCachedElementPortion(e,t,d,n,a,f,Td,Pd)),o.drawElementOverlay(e,t)}},xd.drawElements=function(e,t){for(var n=0;n<t.length;n++){var r=t[n];this.drawElement(e,r)}},xd.drawCachedElements=function(e,t,n,r){for(var a=0;a<t.length;a++){var i=t[a];this.drawCachedElement(e,i,n,r)}},xd.drawCachedNodes=function(e,t,n,r){for(var a=0;a<t.length;a++){var i=t[a];i.isNode()&&this.drawCachedElement(e,i,n,r)}},xd.drawLayeredElements=function(e,t,n,r){var a=this.data.lyrTxrCache.getLayers(t,n);if(a)for(var i=0;i<a.length;i++){var o=a[i],s=o.bb;0!==s.w&&0!==s.h&&e.drawImage(o.canvas,s.x1,s.y1,s.w,s.h)}else this.drawCachedElements(e,t,n,r)};var Sd={drawEdge:function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=t._private.rscratch;if((!i||t.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var l;n&&(l=n,e.translate(-l.x1,-l.y1));var u=i?t.pstyle("opacity").value:1,c=i?t.pstyle("line-opacity").value:1,d=t.pstyle("curve-style").value,h=t.pstyle("line-style").value,f=t.pstyle("width").pfValue,p=t.pstyle("line-cap").value,g=t.pstyle("line-outline-width").value,v=t.pstyle("line-outline-color").value,y=u*c,m=u*c,b=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;"straight-triangle"===d?(o.eleStrokeStyle(e,t,n),o.drawEdgeTrianglePath(t,e,s.allpts)):(e.lineWidth=f,e.lineCap=p,o.eleStrokeStyle(e,t,n),o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")},x=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;o.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var w=t.pstyle("ghost-offset-x").pfValue,E=t.pstyle("ghost-offset-y").pfValue,k=t.pstyle("ghost-opacity").value,T=y*k;e.translate(w,E),b(T),x(T),e.translate(-w,-E)}else!function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;e.lineWidth=f+g,e.lineCap=p,g>0?(o.colorStrokeStyle(e,v[0],v[1],v[2],n),"straight-triangle"===d?o.drawEdgeTrianglePath(t,e,s.allpts):(o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")):e.lineCap="butt"}();a&&o.drawEdgeUnderlay(e,t),b(),x(),a&&o.drawEdgeOverlay(e,t),o.drawElementText(e,t,null,r),n&&e.translate(l.x1,l.y1)}}},Bd=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,n){if(n.visible()){var r=n.pstyle("".concat(e,"-opacity")).value;if(0!==r){var a=this,i=a.usePaths(),o=n._private.rscratch,s=2*n.pstyle("".concat(e,"-padding")).pfValue,l=n.pstyle("".concat(e,"-color")).value;t.lineWidth=s,"self"!==o.edgeType||i?t.lineCap="round":t.lineCap="butt",a.colorStrokeStyle(t,l[0],l[1],l[2],r),a.drawEdgePath(n,t,o.allpts,"solid")}}}};Sd.drawEdgeOverlay=Bd("overlay"),Sd.drawEdgeUnderlay=Bd("underlay"),Sd.drawEdgePath=function(e,t,n,r){var a,i=e._private.rscratch,s=t,l=!1,u=this.usePaths(),c=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var h=n.join("$");i.pathCacheKey&&i.pathCacheKey===h?(a=t=i.pathCache,l=!0):(a=t=new Path2D,i.pathCacheKey=h,i.pathCache=a)}if(s.setLineDash)switch(r){case"dotted":s.setLineDash([1,1]);break;case"dashed":s.setLineDash(c),s.lineDashOffset=d;break;case"solid":s.setLineDash([])}if(!l&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var f=2;f+3<n.length;f+=4)t.quadraticCurveTo(n[f],n[f+1],n[f+2],n[f+3]);break;case"straight":case"haystack":for(var p=2;p+1<n.length;p+=2)t.lineTo(n[p],n[p+1]);break;case"segments":if(i.isRound){var g,v=o(i.roundCorners);try{for(v.s();!(g=v.n()).done;){Ac(t,g.value)}}catch(m){v.e(m)}finally{v.f()}t.lineTo(n[n.length-2],n[n.length-1])}else for(var y=2;y+1<n.length;y+=2)t.lineTo(n[y],n[y+1])}t=s,u?t.stroke(a):t.stroke(),t.setLineDash&&t.setLineDash([])},Sd.drawEdgeTrianglePath=function(e,t,n){t.fillStyle=t.strokeStyle;for(var r=e.pstyle("width").pfValue,a=0;a+1<n.length;a+=2){var i=[n[a+2]-n[a],n[a+3]-n[a+1]],o=Math.sqrt(i[0]*i[0]+i[1]*i[1]),s=[i[1]/o,-i[0]/o],l=[s[0]*r/2,s[1]*r/2];t.beginPath(),t.moveTo(n[a]-l[0],n[a+1]-l[1]),t.lineTo(n[a]+l[0],n[a+1]+l[1]),t.lineTo(n[a+2],n[a+3]),t.closePath(),t.fill()}},Sd.drawArrowheads=function(e,t,n){var r=t._private.rscratch,a="haystack"===r.edgeType;a||this.drawArrowhead(e,t,"source",r.arrowStartX,r.arrowStartY,r.srcArrowAngle,n),this.drawArrowhead(e,t,"mid-target",r.midX,r.midY,r.midtgtArrowAngle,n),this.drawArrowhead(e,t,"mid-source",r.midX,r.midY,r.midsrcArrowAngle,n),a||this.drawArrowhead(e,t,"target",r.arrowEndX,r.arrowEndY,r.tgtArrowAngle,n)},Sd.drawArrowhead=function(e,t,n,r,a,i,o){if(!(isNaN(r)||null==r||isNaN(a)||null==a||isNaN(i)||null==i)){var s=this,l=t.pstyle(n+"-arrow-shape").value;if("none"!==l){var u="hollow"===t.pstyle(n+"-arrow-fill").value?"both":"filled",c=t.pstyle(n+"-arrow-fill").value,d=t.pstyle("width").pfValue,h=t.pstyle(n+"-arrow-width"),f="match-line"===h.value?d:h.pfValue;"%"===h.units&&(f*=d);var p=t.pstyle("opacity").value;void 0===o&&(o=p);var g=e.globalCompositeOperation;1===o&&"hollow"!==c||(e.globalCompositeOperation="destination-out",s.colorFillStyle(e,255,255,255,1),s.colorStrokeStyle(e,255,255,255,1),s.drawArrowShape(t,e,u,d,l,f,r,a,i),e.globalCompositeOperation=g);var v=t.pstyle(n+"-arrow-color").value;s.colorFillStyle(e,v[0],v[1],v[2],o),s.colorStrokeStyle(e,v[0],v[1],v[2],o),s.drawArrowShape(t,e,c,d,l,f,r,a,i)}}},Sd.drawArrowShape=function(e,t,n,r,a,i,o,s,l){var u,c=this,d=this.usePaths()&&"triangle-cross"!==a,h=!1,f=t,p={x:o,y:s},g=e.pstyle("arrow-scale").value,v=this.getArrowWidth(r,g),y=c.arrowShapes[a];if(d){var m=c.arrowPathCache=c.arrowPathCache||[],b=We(a),x=m[b];null!=x?(u=t=x,h=!0):(u=t=new Path2D,m[b]=u)}h||(t.beginPath&&t.beginPath(),d?y.draw(t,1,0,{x:0,y:0},1):y.draw(t,v,l,p,r),t.closePath&&t.closePath()),t=f,d&&(t.translate(o,s),t.rotate(l),t.scale(v,v)),"filled"!==n&&"both"!==n||(d?t.fill(u):t.fill()),"hollow"!==n&&"both"!==n||(t.lineWidth=i/(d?v:1),t.lineJoin="miter",d?t.stroke(u):t.stroke()),d&&(t.scale(1/v,1/v),t.rotate(-l),t.translate(-o,-s))};var Dd={safeDrawImage:function(e,t,n,r,a,i,o,s,l,u){if(!(a<=0||i<=0||l<=0||u<=0))try{e.drawImage(t,n,r,a,i,o,s,l,u)}catch(c){at(c)}},drawInscribedImage:function(e,t,n,r,a){var i=this,o=n.position(),s=o.x,l=o.y,u=n.cy().style(),c=u.getIndexedStyle.bind(u),d=c(n,"background-fit","value",r),h=c(n,"background-repeat","value",r),f=n.width(),p=n.height(),g=2*n.padding(),v=f+("inner"===c(n,"background-width-relative-to","value",r)?0:g),y=p+("inner"===c(n,"background-height-relative-to","value",r)?0:g),m=n._private.rscratch,b="node"===c(n,"background-clip","value",r),x=c(n,"background-image-opacity","value",r)*a,w=c(n,"background-image-smoothing","value",r),E=n.pstyle("corner-radius").value;"auto"!==E&&(E=n.pstyle("corner-radius").pfValue);var k=t.width||t.cachedW,T=t.height||t.cachedH;null!=k&&null!=T||(document.body.appendChild(t),k=t.cachedW=t.width||t.offsetWidth,T=t.cachedH=t.height||t.offsetHeight,document.body.removeChild(t));var C=k,P=T;if("auto"!==c(n,"background-width","value",r)&&(C="%"===c(n,"background-width","units",r)?c(n,"background-width","pfValue",r)*v:c(n,"background-width","pfValue",r)),"auto"!==c(n,"background-height","value",r)&&(P="%"===c(n,"background-height","units",r)?c(n,"background-height","pfValue",r)*y:c(n,"background-height","pfValue",r)),0!==C&&0!==P){if("contain"===d)C*=S=Math.min(v/C,y/P),P*=S;else if("cover"===d){var S;C*=S=Math.max(v/C,y/P),P*=S}var B=s-v/2,D=c(n,"background-position-x","units",r),_=c(n,"background-position-x","pfValue",r);B+="%"===D?(v-C)*_:_;var A=c(n,"background-offset-x","units",r),M=c(n,"background-offset-x","pfValue",r);B+="%"===A?(v-C)*M:M;var R=l-y/2,I=c(n,"background-position-y","units",r),N=c(n,"background-position-y","pfValue",r);R+="%"===I?(y-P)*N:N;var L=c(n,"background-offset-y","units",r),z=c(n,"background-offset-y","pfValue",r);R+="%"===L?(y-P)*z:z,m.pathCache&&(B-=s,R-=l,s=0,l=0);var O=e.globalAlpha;e.globalAlpha=x;var V=i.getImgSmoothing(e),F=!1;if("no"===w&&V?(i.setImgSmoothing(e,!1),F=!0):"yes"!==w||V||(i.setImgSmoothing(e,!0),F=!0),"no-repeat"===h)b&&(e.save(),m.pathCache?e.clip(m.pathCache):(i.nodeShapes[i.getNodeShape(n)].draw(e,s,l,v,y,E,m),e.clip())),i.safeDrawImage(e,t,0,0,k,T,B,R,C,P),b&&e.restore();else{var j=e.createPattern(t,h);e.fillStyle=j,i.nodeShapes[i.getNodeShape(n)].draw(e,s,l,v,y,E,m),e.translate(B,R),e.fill(),e.translate(-B,-R)}e.globalAlpha=O,F&&i.setImgSmoothing(e,V)}}},_d={};function Ad(e,t,n,r,a){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:5,o=arguments.length>6?arguments[6]:void 0;e.beginPath(),e.moveTo(t+i,n),e.lineTo(t+r-i,n),e.quadraticCurveTo(t+r,n,t+r,n+i),e.lineTo(t+r,n+a-i),e.quadraticCurveTo(t+r,n+a,t+r-i,n+a),e.lineTo(t+i,n+a),e.quadraticCurveTo(t,n+a,t,n+a-i),e.lineTo(t,n+i),e.quadraticCurveTo(t,n,t+i,n),e.closePath(),o?e.stroke():e.fill()}_d.eleTextBiggerThanMin=function(e,t){if(!t){var n=e.cy().zoom(),r=this.getPixelRatio(),a=Math.ceil(Yt(n*r));t=Math.pow(2,a)}return!(e.pstyle("font-size").pfValue*t<e.pstyle("min-zoomed-font-size").pfValue)},_d.drawElementText=function(e,t,n,r,a){var i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this;if(null==r){if(i&&!o.eleTextBiggerThanMin(t))return}else if(!1===r)return;if(t.isNode()){var s=t.pstyle("label");if(!s||!s.value)return;var l=o.getLabelJustification(t);e.textAlign=l,e.textBaseline="bottom"}else{var u=t.element()._private.rscratch.badLine,c=t.pstyle("label"),d=t.pstyle("source-label"),h=t.pstyle("target-label");if(u||(!c||!c.value)&&(!d||!d.value)&&(!h||!h.value))return;e.textAlign="center",e.textBaseline="bottom"}var f,p=!n;n&&(f=n,e.translate(-f.x1,-f.y1)),null==a?(o.drawText(e,t,null,p,i),t.isEdge()&&(o.drawText(e,t,"source",p,i),o.drawText(e,t,"target",p,i))):o.drawText(e,t,a,p,i),n&&e.translate(f.x1,f.y1)},_d.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var n=0;n<this.fontCaches.length;n++)if((t=this.fontCaches[n]).context===e)return t;return t={context:e},this.fontCaches.push(t),t},_d.setupTextStyle=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=t.pstyle("font-style").strValue,a=t.pstyle("font-size").pfValue+"px",i=t.pstyle("font-family").strValue,o=t.pstyle("font-weight").strValue,s=n?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,l=t.pstyle("text-outline-opacity").value*s,u=t.pstyle("color").value,c=t.pstyle("text-outline-color").value;e.font=r+" "+o+" "+a+" "+i,e.lineJoin="round",this.colorFillStyle(e,u[0],u[1],u[2],s),this.colorStrokeStyle(e,c[0],c[1],c[2],l)},_d.getTextAngle=function(e,t){var n,r=e._private.rscratch,a=t?t+"-":"",i=e.pstyle(a+"text-rotation");if("autorotate"===i.strValue){var o=ht(r,"labelAngle",t);n=e.isEdge()?o:0}else n="none"===i.strValue?0:i.pfValue;return n},_d.drawText=function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=t._private.rscratch,o=a?t.effectiveOpacity():1;if(!a||0!==o&&0!==t.pstyle("text-opacity").value){"main"===n&&(n=null);var s,l,u=ht(i,"labelX",n),c=ht(i,"labelY",n),d=this.getLabelText(t,n);if(null!=d&&""!==d&&!isNaN(u)&&!isNaN(c)){this.setupTextStyle(e,t,a);var h,f=n?n+"-":"",p=ht(i,"labelWidth",n),g=ht(i,"labelHeight",n),v=t.pstyle(f+"text-margin-x").pfValue,y=t.pstyle(f+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle("text-halign").value,x=t.pstyle("text-valign").value;switch(m&&(b="center",x="center"),u+=v,c+=y,0!==(h=r?this.getTextAngle(t,n):0)&&(s=u,l=c,e.translate(s,l),e.rotate(h),u=0,c=0),x){case"top":break;case"center":c+=g/2;break;case"bottom":c+=g}var w=t.pstyle("text-background-opacity").value,E=t.pstyle("text-border-opacity").value,k=t.pstyle("text-border-width").pfValue,T=t.pstyle("text-background-padding").pfValue,C=0===t.pstyle("text-background-shape").strValue.indexOf("round");if(w>0||k>0&&E>0){var P=u-T;switch(b){case"left":P-=p;break;case"center":P-=p/2}var S=c-g-T,B=p+2*T,D=g+2*T;if(w>0){var _=e.fillStyle,A=t.pstyle("text-background-color").value;e.fillStyle="rgba("+A[0]+","+A[1]+","+A[2]+","+w*o+")",C?Ad(e,P,S,B,D,2):e.fillRect(P,S,B,D),e.fillStyle=_}if(k>0&&E>0){var M=e.strokeStyle,R=e.lineWidth,I=t.pstyle("text-border-color").value,N=t.pstyle("text-border-style").value;if(e.strokeStyle="rgba("+I[0]+","+I[1]+","+I[2]+","+E*o+")",e.lineWidth=k,e.setLineDash)switch(N){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=k/4,e.setLineDash([]);break;case"solid":e.setLineDash([])}if(C?Ad(e,P,S,B,D,2,"stroke"):e.strokeRect(P,S,B,D),"double"===N){var L=k/2;C?Ad(e,P+L,S+L,B-2*L,D-2*L,2,"stroke"):e.strokeRect(P+L,S+L,B-2*L,D-2*L)}e.setLineDash&&e.setLineDash([]),e.lineWidth=R,e.strokeStyle=M}}var z=2*t.pstyle("text-outline-width").pfValue;if(z>0&&(e.lineWidth=z),"wrap"===t.pstyle("text-wrap").value){var O=ht(i,"labelWrapCachedLines",n),V=ht(i,"labelLineHeight",n),F=p/2,j=this.getLabelJustification(t);switch("auto"===j||("left"===b?"left"===j?u+=-p:"center"===j&&(u+=-F):"center"===b?"left"===j?u+=-F:"right"===j&&(u+=F):"right"===b&&("center"===j?u+=F:"right"===j&&(u+=p))),x){case"top":case"center":case"bottom":c-=(O.length-1)*V}for(var X=0;X<O.length;X++)z>0&&e.strokeText(O[X],u,c),e.fillText(O[X],u,c),c+=V}else z>0&&e.strokeText(d,u,c),e.fillText(d,u,c);0!==h&&(e.rotate(-h),e.translate(-s,-l))}}};var Md={drawNode:function(e,t,n){var r,a,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=this,u=t._private,c=u.rscratch,d=t.position();if(Q(d.x)&&Q(d.y)&&(!s||t.visible())){var h,f,p=s?t.effectiveOpacity():1,g=l.usePaths(),v=!1,y=t.padding();r=t.width()+2*y,a=t.height()+2*y,n&&(f=n,e.translate(-f.x1,-f.y1));for(var m=t.pstyle("background-image").value,b=new Array(m.length),x=new Array(m.length),w=0,E=0;E<m.length;E++){var k=m[E];if(b[E]=null!=k&&"none"!==k){var T=t.cy().style().getIndexedStyle(t,"background-image-crossorigin","value",E);w++,x[E]=l.getCachedImage(k,T,function(){u.backgroundTimestamp=Date.now(),t.emitAndNotify("background")})}}var C=t.pstyle("background-blacken").value,P=t.pstyle("border-width").pfValue,S=t.pstyle("background-opacity").value*p,B=t.pstyle("border-color").value,D=t.pstyle("border-style").value,_=t.pstyle("border-join").value,A=t.pstyle("border-cap").value,M=t.pstyle("border-position").value,R=t.pstyle("border-dash-pattern").pfValue,I=t.pstyle("border-dash-offset").pfValue,N=t.pstyle("border-opacity").value*p,L=t.pstyle("outline-width").pfValue,z=t.pstyle("outline-color").value,O=t.pstyle("outline-style").value,V=t.pstyle("outline-opacity").value*p,F=t.pstyle("outline-offset").value,j=t.pstyle("corner-radius").value;"auto"!==j&&(j=t.pstyle("corner-radius").pfValue);var X=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:S;l.eleFillStyle(e,t,n)},q=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:N;l.colorStrokeStyle(e,B[0],B[1],B[2],t)},Y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V;l.colorStrokeStyle(e,z[0],z[1],z[2],t)},W=function(e,t,n,r){var a,i=l.nodePathCache=l.nodePathCache||[],o=Ue("polygon"===n?n+","+r.join(","):n,""+t,""+e,""+j),s=i[o],u=!1;return null!=s?(a=s,u=!0,c.pathCache=a):(a=new Path2D,i[o]=c.pathCache=a),{path:a,cacheHit:u}},U=t.pstyle("shape").strValue,H=t.pstyle("shape-polygon-points").pfValue;if(g){e.translate(d.x,d.y);var K=W(r,a,U,H);h=K.path,v=K.cacheHit}var G=function(){if(!v){var n=d;g&&(n={x:0,y:0}),l.nodeShapes[l.getNodeShape(t)].draw(h||e,n.x,n.y,r,a,j,c)}g?e.fill(h):e.fill()},Z=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=u.backgrounding,i=0,o=0;o<x.length;o++){var s=t.cy().style().getIndexedStyle(t,"background-image-containment","value",o);r&&"over"===s||!r&&"inside"===s?i++:b[o]&&x[o].complete&&!x[o].error&&(i++,l.drawInscribedImage(e,x[o],t,o,n))}u.backgrounding=!(i===w),a!==u.backgrounding&&t.updateStyle(!1)},$=function(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasPie(t)&&(l.drawPie(e,t,i),n&&(g||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,j,c)))},J=function(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasStripe(t)&&(e.save(),g?e.clip(c.pathCache):(l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,j,c),e.clip()),l.drawStripe(e,t,i),e.restore(),n&&(g||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,j,c)))},ee=function(){var t=(C>0?C:-C)*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:p),n=C>0?0:255;0!==C&&(l.colorFillStyle(e,n,n,n,t),g?e.fill(h):e.fill())},te=function(){if(P>0){if(e.lineWidth=P,e.lineCap=A,e.lineJoin=_,e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash(R),e.lineDashOffset=I;break;case"solid":case"double":e.setLineDash([])}if("center"!==M){if(e.save(),e.lineWidth*=2,"inside"===M)g?e.clip(h):e.clip();else{var t=new Path2D;t.rect(-r/2-P,-a/2-P,r+2*P,a+2*P),t.addPath(h),e.clip(t,"evenodd")}g?e.stroke(h):e.stroke(),e.restore()}else g?e.stroke(h):e.stroke();if("double"===D){e.lineWidth=P/3;var n=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",g?e.stroke(h):e.stroke(),e.globalCompositeOperation=n}e.setLineDash&&e.setLineDash([])}},ne=function(){if(L>0){if(e.lineWidth=L,e.lineCap="butt",e.setLineDash)switch(O){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}var n=d;g&&(n={x:0,y:0});var i=l.getNodeShape(t),o=P;"inside"===M&&(o=0),"outside"===M&&(o*=2);var s,u=(r+o+(L+F))/r,c=(a+o+(L+F))/a,h=r*u,f=a*c,p=l.nodeShapes[i].points;if(g)s=W(h,f,i,p).path;if("ellipse"===i)l.drawEllipsePath(s||e,n.x,n.y,h,f);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(i)){var v=0,y=0,m=0;"round-diamond"===i?v=1.4*(o+F+L):"round-heptagon"===i?(v=1.075*(o+F+L),m=-(o/2+F+L)/35):"round-hexagon"===i?v=1.12*(o+F+L):"round-pentagon"===i?(v=1.13*(o+F+L),m=-(o/2+F+L)/15):"round-tag"===i?(v=1.12*(o+F+L),y=.07*(o/2+L+F)):"round-triangle"===i&&(v=(o+F+L)*(Math.PI/2),m=-(o+F/2+L)/Math.PI),0!==v&&(h=r*(u=(r+v)/r),["round-hexagon","round-tag"].includes(i)||(f=a*(c=(a+v)/a)));for(var b=h/2,x=f/2,w=(j="auto"===j?Bn(h,f):j)+(o+L+F)/2,E=new Array(p.length/2),k=new Array(p.length/2),T=0;T<p.length/2;T++)E[T]={x:n.x+y+b*p[2*T],y:n.y+m+x*p[2*T+1]};var C,S,B,D,_=E.length;for(S=E[_-1],C=0;C<_;C++)B=E[C%_],D=E[(C+1)%_],k[C]=Mc(S,B,D,w),S=B,B=D;l.drawRoundPolygonPath(s||e,n.x+y,n.y+m,r*u,a*c,p,k)}else if(["roundrectangle","round-rectangle"].includes(i))j="auto"===j?Sn(h,f):j,l.drawRoundRectanglePath(s||e,n.x,n.y,h,f,j+(o+L+F)/2);else if(["cutrectangle","cut-rectangle"].includes(i))j="auto"===j?8:j,l.drawCutRectanglePath(s||e,n.x,n.y,h,f,null,j+(o+L+F)/4);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(i))j="auto"===j?Sn(h,f):j,l.drawBottomRoundRectanglePath(s||e,n.x,n.y,h,f,j+(o+L+F)/2);else if("barrel"===i)l.drawBarrelPath(s||e,n.x,n.y,h,f);else if(i.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(i)){p=vn(yn(p,(o+L+F)/r)),l.drawPolygonPath(s||e,n.x,n.y,r,a,p)}else{p=vn(yn(p,-((o+L+F)/r))),l.drawPolygonPath(s||e,n.x,n.y,r,a,p)}if(g?e.stroke(s):e.stroke(),"double"===O){e.lineWidth=o/3;var A=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",g?e.stroke(s):e.stroke(),e.globalCompositeOperation=A}e.setLineDash&&e.setLineDash([])}};if("yes"===t.pstyle("ghost").value){var re=t.pstyle("ghost-offset-x").pfValue,ae=t.pstyle("ghost-offset-y").pfValue,ie=t.pstyle("ghost-opacity").value,oe=ie*p;e.translate(re,ae),Y(),ne(),X(ie*S),G(),Z(oe,!0),q(ie*N),te(),$(0!==C||0!==P),J(0!==C||0!==P),Z(oe,!1),ee(oe),e.translate(-re,-ae)}g&&e.translate(-d.x,-d.y),o&&l.drawNodeUnderlay(e,t,d,r,a),g&&e.translate(d.x,d.y),Y(),ne(),X(),G(),Z(p,!0),q(),te(),$(0!==C||0!==P),J(0!==C||0!==P),Z(p,!1),ee(),g&&e.translate(-d.x,-d.y),l.drawElementText(e,t,null,i),o&&l.drawNodeOverlay(e,t,d,r,a),n&&e.translate(f.x1,f.y1)}}},Rd=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,n,r,a,i){if(n.visible()){var o=n.pstyle("".concat(e,"-padding")).pfValue,s=n.pstyle("".concat(e,"-opacity")).value,l=n.pstyle("".concat(e,"-color")).value,u=n.pstyle("".concat(e,"-shape")).value,c=n.pstyle("".concat(e,"-corner-radius")).value;if(s>0){if(r=r||n.position(),null==a||null==i){var d=n.padding();a=n.width()+2*d,i=n.height()+2*d}this.colorFillStyle(t,l[0],l[1],l[2],s),this.nodeShapes[u].draw(t,r.x,r.y,a+2*o,i+2*o,c),t.fill()}}}};Md.drawNodeOverlay=Rd("overlay"),Md.drawNodeUnderlay=Rd("underlay"),Md.hasPie=function(e){return(e=e[0])._private.hasPie},Md.hasStripe=function(e){return(e=e[0])._private.hasStripe},Md.drawPie=function(e,t,n,r){t=t[0],r=r||t.position();var a,i=t.cy().style(),o=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=r.x,c=r.y,d=t.width(),h=t.height(),f=Math.min(d,h)/2,p=0;if(this.usePaths()&&(u=0,c=0),"%"===o.units?f*=o.pfValue:void 0!==o.pfValue&&(f=o.pfValue/2),"%"===s.units?a=f*s.pfValue:void 0!==s.pfValue&&(a=s.pfValue/2),!(a>=f))for(var g=1;g<=i.pieBackgroundN;g++){var v=t.pstyle("pie-"+g+"-background-size").value,y=t.pstyle("pie-"+g+"-background-color").value,m=t.pstyle("pie-"+g+"-background-opacity").value*n,b=v/100;b+p>1&&(b=1-p);var x=1.5*Math.PI+2*Math.PI*p,w=(x+=l)+2*Math.PI*b;0===v||p>=1||p+b>1||(0===a?(e.beginPath(),e.moveTo(u,c),e.arc(u,c,f,x,w),e.closePath()):(e.beginPath(),e.arc(u,c,f,x,w),e.arc(u,c,a,w,x,!0),e.closePath()),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),p+=b)}},Md.drawStripe=function(e,t,n,r){t=t[0],r=r||t.position();var a=t.cy().style(),i=r.x,o=r.y,s=t.width(),l=t.height(),u=0,c=this.usePaths();e.save();var d=t.pstyle("stripe-direction").value,h=t.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":e.rotate(-Math.PI/2)}var f=s,p=l;"%"===h.units?(f*=h.pfValue,p*=h.pfValue):void 0!==h.pfValue&&(f=h.pfValue,p=h.pfValue),c&&(i=0,o=0),o-=f/2,i-=p/2;for(var g=1;g<=a.stripeBackgroundN;g++){var v=t.pstyle("stripe-"+g+"-background-size").value,y=t.pstyle("stripe-"+g+"-background-color").value,m=t.pstyle("stripe-"+g+"-background-opacity").value*n,b=v/100;b+u>1&&(b=1-u),0===v||u>=1||u+b>1||(e.beginPath(),e.rect(i,o+p*u,f,p*b),e.closePath(),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),u+=b)}e.restore()};var Id,Nd={};function Ld(e,t,n){var r=e.createShader(t);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(r));return r}function zd(e,t,n){void 0===n&&(n=t);var r=e.makeOffscreenCanvas(t,n),a=r.context=r.getContext("2d");return r.clear=function(){return a.clearRect(0,0,r.width,r.height)},r.clear(),r}function Od(e){var t=e.pixelRatio,n=e.cy.zoom(),r=e.cy.pan();return{zoom:n*t,pan:{x:r.x*t,y:r.y*t}}}function Vd(e){return"solid"===e.pstyle("background-fill").value&&("none"===e.pstyle("background-image").strValue&&(0===e.pstyle("border-width").value||(0===e.pstyle("border-opacity").value||"solid"===e.pstyle("border-style").value)))}function Fd(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function jd(e,t,n){var r=e[0]/255,a=e[1]/255,i=e[2]/255,o=t,s=n||new Array(4);return s[0]=r*o,s[1]=a*o,s[2]=i*o,s[3]=o,s}function Xd(e,t){var n=t||new Array(4);return n[0]=(255&e)/255,n[1]=(e>>8&255)/255,n[2]=(e>>16&255)/255,n[3]=(e>>24&255)/255,n}function qd(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function Yd(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function Wd(e,t,n){switch(t){case e.FLOAT:return new Float32Array(n);case e.INT:return new Int32Array(n)}}function Ud(e,t,n,r,a,i){switch(t){case e.FLOAT:return new Float32Array(n.buffer,i*r,a);case e.INT:return new Int32Array(n.buffer,i*r,a)}}function Hd(e,t,n,r){var a=l(Yd(e,n),3),i=a[0],o=a[1],s=a[2],u=Wd(e,o,t*i),c=i*s,d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,t*c,e.DYNAMIC_DRAW),e.enableVertexAttribArray(r),o===e.FLOAT?e.vertexAttribPointer(r,i,o,!1,c,0):o===e.INT&&e.vertexAttribIPointer(r,i,o,c,0),e.vertexAttribDivisor(r,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var h=new Array(t),f=0;f<t;f++)h[f]=Ud(e,o,u,c,i,f);return d.dataArray=u,d.stride=c,d.size=i,d.getView=function(e){return h[e]},d.setPoint=function(e,t,n){var r=h[e];r[0]=t,r[1]=n},d.bufferSubData=function(t){e.bindBuffer(e.ARRAY_BUFFER,d),t?e.bufferSubData(e.ARRAY_BUFFER,0,u,0,t*i):e.bufferSubData(e.ARRAY_BUFFER,0,u)},d}Nd.getPixelRatio=function(){var e=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var t=this.cy.window(),n=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(t.devicePixelRatio||1)/n},Nd.paintCache=function(e){for(var t,n=this.paintCaches=this.paintCaches||[],r=!0,a=0;a<n.length;a++)if((t=n[a]).context===e){r=!1;break}return r&&(t={context:e},n.push(t)),t},Nd.createGradientStyleFor=function(e,t,n,r,a){var i,o=this.usePaths(),s=n.pstyle(t+"-gradient-stop-colors").value,l=n.pstyle(t+"-gradient-stop-positions").pfValue;if("radial-gradient"===r)if(n.isEdge()){var u=n.sourceEndpoint(),c=n.targetEndpoint(),d=n.midpoint(),h=Ut(u,d),f=Ut(c,d);i=e.createRadialGradient(d.x,d.y,0,d.x,d.y,Math.max(h,f))}else{var p=o?{x:0,y:0}:n.position(),g=n.paddedWidth(),v=n.paddedHeight();i=e.createRadialGradient(p.x,p.y,0,p.x,p.y,Math.max(g,v))}else if(n.isEdge()){var y=n.sourceEndpoint(),m=n.targetEndpoint();i=e.createLinearGradient(y.x,y.y,m.x,m.y)}else{var b=o?{x:0,y:0}:n.position(),x=n.paddedWidth()/2,w=n.paddedHeight()/2;switch(n.pstyle("background-gradient-direction").value){case"to-bottom":i=e.createLinearGradient(b.x,b.y-w,b.x,b.y+w);break;case"to-top":i=e.createLinearGradient(b.x,b.y+w,b.x,b.y-w);break;case"to-left":i=e.createLinearGradient(b.x+x,b.y,b.x-x,b.y);break;case"to-right":i=e.createLinearGradient(b.x-x,b.y,b.x+x,b.y);break;case"to-bottom-right":case"to-right-bottom":i=e.createLinearGradient(b.x-x,b.y-w,b.x+x,b.y+w);break;case"to-top-right":case"to-right-top":i=e.createLinearGradient(b.x-x,b.y+w,b.x+x,b.y-w);break;case"to-bottom-left":case"to-left-bottom":i=e.createLinearGradient(b.x+x,b.y-w,b.x-x,b.y+w);break;case"to-top-left":case"to-left-top":i=e.createLinearGradient(b.x+x,b.y+w,b.x-x,b.y-w)}}if(!i)return null;for(var E=l.length===s.length,k=s.length,T=0;T<k;T++)i.addColorStop(E?l[T]:T/(k-1),"rgba("+s[T][0]+","+s[T][1]+","+s[T][2]+","+a+")");return i},Nd.gradientFillStyle=function(e,t,n,r){var a=this.createGradientStyleFor(e,"background",t,n,r);if(!a)return null;e.fillStyle=a},Nd.colorFillStyle=function(e,t,n,r,a){e.fillStyle="rgba("+t+","+n+","+r+","+a+")"},Nd.eleFillStyle=function(e,t,n){var r=t.pstyle("background-fill").value;if("linear-gradient"===r||"radial-gradient"===r)this.gradientFillStyle(e,t,r,n);else{var a=t.pstyle("background-color").value;this.colorFillStyle(e,a[0],a[1],a[2],n)}},Nd.gradientStrokeStyle=function(e,t,n,r){var a=this.createGradientStyleFor(e,"line",t,n,r);if(!a)return null;e.strokeStyle=a},Nd.colorStrokeStyle=function(e,t,n,r,a){e.strokeStyle="rgba("+t+","+n+","+r+","+a+")"},Nd.eleStrokeStyle=function(e,t,n){var r=t.pstyle("line-fill").value;if("linear-gradient"===r||"radial-gradient"===r)this.gradientStrokeStyle(e,t,r,n);else{var a=t.pstyle("line-color").value;this.colorStrokeStyle(e,a[0],a[1],a[2],n)}},Nd.matchCanvasSize=function(e){var t=this,n=t.data,r=t.findContainerClientCoords(),a=r[2],i=r[3],o=t.getPixelRatio(),s=t.motionBlurPxRatio;e!==t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE]&&e!==t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG]||(o=s);var l,u=a*o,c=i*o;if(u!==t.canvasWidth||c!==t.canvasHeight){t.fontCaches=null;var d=n.canvasContainer;d.style.width=a+"px",d.style.height=i+"px";for(var h=0;h<t.CANVAS_LAYERS;h++)(l=n.canvases[h]).width=u,l.height=c,l.style.width=a+"px",l.style.height=i+"px";for(h=0;h<t.BUFFER_COUNT;h++)(l=n.bufferCanvases[h]).width=u,l.height=c,l.style.width=a+"px",l.style.height=i+"px";t.textureMult=1,o<=1&&(l=n.bufferCanvases[t.TEXTURE_BUFFER],t.textureMult=2,l.width=u*t.textureMult,l.height=c*t.textureMult),t.canvasWidth=u,t.canvasHeight=c,t.pixelRatio=o}},Nd.renderTo=function(e,t,n,r){this.render({forcedContext:e,forcedZoom:t,forcedPan:n,drawAllLayers:!0,forcedPxRatio:r})},Nd.clearCanvas=function(){var e=this,t=e.data;function n(t){t.clearRect(0,0,e.canvasWidth,e.canvasHeight)}n(t.contexts[e.NODE]),n(t.contexts[e.DRAG])},Nd.render=function(e){var t=this;e=e||lt();var n=t.cy,r=e.forcedContext,a=e.drawAllLayers,i=e.drawOnlyNodeLayer,o=e.forcedZoom,s=e.forcedPan,l=void 0===e.forcedPxRatio?this.getPixelRatio():e.forcedPxRatio,u=t.data,c=u.canvasNeedsRedraw,d=t.textureOnViewport&&!r&&(t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming),h=void 0!==e.motionBlur?e.motionBlur:t.motionBlur,f=t.motionBlurPxRatio,p=n.hasCompoundNodes(),g=t.hoverData.draggingEles,v=!(!t.hoverData.selecting&&!t.touchData.selecting),y=h=h&&!r&&t.motionBlurEnabled&&!v;r||(t.prevPxRatio!==l&&(t.invalidateContainerClientCoordsCache(),t.matchCanvasSize(t.container),t.redrawHint("eles",!0),t.redrawHint("drag",!0)),t.prevPxRatio=l),!r&&t.motionBlurTimeout&&clearTimeout(t.motionBlurTimeout),h&&(null==t.mbFrames&&(t.mbFrames=0),t.mbFrames++,t.mbFrames<3&&(y=!1),t.mbFrames>t.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!d&&(c[t.NODE]=!0,c[t.SELECT_BOX]=!0);var m=n.style(),b=n.zoom(),x=void 0!==o?o:b,w=n.pan(),E={x:w.x,y:w.y},k={zoom:b,pan:{x:w.x,y:w.y}},T=t.prevViewport;void 0===T||k.zoom!==T.zoom||k.pan.x!==T.pan.x||k.pan.y!==T.pan.y||g&&!p||(t.motionBlurPxRatio=1),s&&(E=s),x*=l,E.x*=l,E.y*=l;var C=t.getCachedZSortedEles();function P(e,n,r,a,i){var o=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",t.colorFillStyle(e,255,255,255,t.motionBlurTransparency),e.fillRect(n,r,a,i),e.globalCompositeOperation=o}function S(e,n){var i,l,c,d;t.clearingMotionBlur||e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]&&e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]?(i=E,l=x,c=t.canvasWidth,d=t.canvasHeight):(i={x:w.x*f,y:w.y*f},l=b*f,c=t.canvasWidth*f,d=t.canvasHeight*f),e.setTransform(1,0,0,1,0,0),"motionBlur"===n?P(e,0,0,c,d):r||void 0!==n&&!n||e.clearRect(0,0,c,d),a||(e.translate(i.x,i.y),e.scale(l,l)),s&&e.translate(s.x,s.y),o&&e.scale(o,o)}if(d||(t.textureDrawLastFrame=!1),d){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=n.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var B=t.data.bufferContexts[t.TEXTURE_BUFFER];B.setTransform(1,0,0,1,0,0),B.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:B,drawOnlyNodeLayer:!0,forcedPxRatio:l*t.textureMult}),(k=t.textureCache.viewport={zoom:n.zoom(),pan:n.pan(),width:t.canvasWidth,height:t.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}c[t.DRAG]=!1,c[t.NODE]=!1;var D=u.contexts[t.NODE],_=t.textureCache.texture;k=t.textureCache.viewport;D.setTransform(1,0,0,1,0,0),h?P(D,0,0,k.width,k.height):D.clearRect(0,0,k.width,k.height);var A=m.core("outside-texture-bg-color").value,M=m.core("outside-texture-bg-opacity").value;t.colorFillStyle(D,A[0],A[1],A[2],M),D.fillRect(0,0,k.width,k.height);b=n.zoom();S(D,!1),D.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l),D.drawImage(_,k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l)}else t.textureOnViewport&&!r&&(t.textureCache=null);var R=n.extent(),I=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),N=t.hideEdgesOnViewport&&I,L=[];if(L[t.NODE]=!c[t.NODE]&&h&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,L[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),L[t.DRAG]=!c[t.DRAG]&&h&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,L[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),c[t.NODE]||a||i||L[t.NODE]){var z=h&&!L[t.NODE]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:u.contexts[t.NODE]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.nondrag,l,R):t.drawLayeredElements(D,C.nondrag,l,R),t.debug&&t.drawDebugPoints(D,C.nondrag),a||h||(c[t.NODE]=!1)}if(!i&&(c[t.DRAG]||a||L[t.DRAG])){z=h&&!L[t.DRAG]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:u.contexts[t.DRAG]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.drag,l,R):t.drawCachedElements(D,C.drag,l,R),t.debug&&t.drawDebugPoints(D,C.drag),a||h||(c[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,S),h&&1!==f){var O=u.contexts[t.NODE],V=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],F=u.contexts[t.DRAG],j=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],X=function(e,n,r){e.setTransform(1,0,0,1,0,0),r||!y?e.clearRect(0,0,t.canvasWidth,t.canvasHeight):P(e,0,0,t.canvasWidth,t.canvasHeight);var a=f;e.drawImage(n,0,0,t.canvasWidth*a,t.canvasHeight*a,0,0,t.canvasWidth,t.canvasHeight)};(c[t.NODE]||L[t.NODE])&&(X(O,V,L[t.NODE]),c[t.NODE]=!1),(c[t.DRAG]||L[t.DRAG])&&(X(F,j,L[t.DRAG]),c[t.DRAG]=!1)}t.prevViewport=k,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),h&&(t.motionBlurTimeout=setTimeout(function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!d,t.mbFrames=0,c[t.NODE]=!0,c[t.DRAG]=!0,t.redraw()},100)),r||n.emit("render")},Nd.drawSelectionRectangle=function(e,t){var n=this,r=n.cy,a=n.data,i=r.style(),o=e.drawOnlyNodeLayer,s=e.drawAllLayers,l=a.canvasNeedsRedraw,u=e.forcedContext;if(n.showFps||!o&&l[n.SELECT_BOX]&&!s){var c=u||a.contexts[n.SELECT_BOX];if(t(c),1==n.selection[4]&&(n.hoverData.selecting||n.touchData.selecting)){var d=n.cy.zoom(),h=i.core("selection-box-border-width").value/d;c.lineWidth=h,c.fillStyle="rgba("+i.core("selection-box-color").value[0]+","+i.core("selection-box-color").value[1]+","+i.core("selection-box-color").value[2]+","+i.core("selection-box-opacity").value+")",c.fillRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]),h>0&&(c.strokeStyle="rgba("+i.core("selection-box-border-color").value[0]+","+i.core("selection-box-border-color").value[1]+","+i.core("selection-box-border-color").value[2]+","+i.core("selection-box-opacity").value+")",c.strokeRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]))}if(a.bgActivePosistion&&!n.hoverData.selecting){d=n.cy.zoom();var f=a.bgActivePosistion;c.fillStyle="rgba("+i.core("active-bg-color").value[0]+","+i.core("active-bg-color").value[1]+","+i.core("active-bg-color").value[2]+","+i.core("active-bg-opacity").value+")",c.beginPath(),c.arc(f.x,f.y,i.core("active-bg-size").pfValue/d,0,2*Math.PI),c.fill()}var p=n.lastRedrawTime;if(n.showFps&&p){p=Math.round(p);var g=Math.round(1e3/p),v="1 frame = "+p+" ms = "+g+" fps";if(c.setTransform(1,0,0,1,0,0),c.fillStyle="rgba(255, 0, 0, 0.75)",c.strokeStyle="rgba(255, 0, 0, 0.75)",c.font="30px Arial",!Id){var y=c.measureText(v);Id=y.actualBoundingBoxAscent}c.fillText(v,0,Id);c.strokeRect(0,Id+10,250,20),c.fillRect(0,Id+10,250*Math.min(g/60,1),20)}s||(l[n.SELECT_BOX]=!1)}};var Kd="undefined"!=typeof Float32Array?Float32Array:Array;function Gd(){var e=new Kd(9);return Kd!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function Zd(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function $d(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=n[0],f=n[1];return e[0]=r,e[1]=a,e[2]=i,e[3]=o,e[4]=s,e[5]=l,e[6]=h*r+f*o+u,e[7]=h*a+f*s+c,e[8]=h*i+f*l+d,e}function Qd(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=Math.sin(n),f=Math.cos(n);return e[0]=f*r+h*o,e[1]=f*a+h*s,e[2]=f*i+h*l,e[3]=f*o-h*r,e[4]=f*s-h*a,e[5]=f*l-h*i,e[6]=u,e[7]=c,e[8]=d,e}function Jd(e,t,n){var r=n[0],a=n[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=a*t[3],e[4]=a*t[4],e[5]=a*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var eh=function(){return i(function e(t,n,r,i){a(this,e),this.debugID=Math.floor(1e4*Math.random()),this.r=t,this.texSize=n,this.texRows=r,this.texHeight=Math.floor(n/r),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(t,n,n),this.scratch=i(t,n,this.texHeight,"scratch")},[{key:"lock",value:function(){this.locked=!0}},{key:"getKeys",value:function(){return new Set(this.keyToLocation.keys())}},{key:"getScale",value:function(e){var t=e.w,n=e.h,r=this.texHeight,a=this.texSize,i=r/n,o=t*i,s=n*i;return o>a&&(o=t*(i=a/t),s=n*i),{scale:i,texW:o,texH:s}}},{key:"draw",value:function(e,t,n){var r=this;if(this.locked)throw new Error("can't draw, atlas is locked");var a=this.texSize,i=this.texRows,o=this.texHeight,s=this.getScale(t),l=s.scale,u=s.texW,c=s.texH,d=function(e,r){if(n&&r){var a=r.context,i=e.x,s=e.row,u=i,c=o*s;a.save(),a.translate(u,c),a.scale(l,l),n(a,t),a.restore()}},h=[null,null],f=function(){d(r.freePointer,r.canvas),h[0]={x:r.freePointer.x,y:r.freePointer.row*o,w:u,h:c},h[1]={x:r.freePointer.x+u,y:r.freePointer.row*o,w:0,h:c},r.freePointer.x+=u,r.freePointer.x==a&&(r.freePointer.x=0,r.freePointer.row++)},p=function(){r.freePointer.x=0,r.freePointer.row++};if(this.freePointer.x+u<=a)f();else{if(this.freePointer.row>=i-1)return!1;this.freePointer.x===a?(p(),f()):this.enableWrapping?function(){var e=r.scratch,t=r.canvas;e.clear(),d({x:0,row:0},e);var n=a-r.freePointer.x,i=u-n,s=o,l=r.freePointer.x,f=r.freePointer.row*o,p=n;t.context.drawImage(e,0,0,p,s,l,f,p,s),h[0]={x:l,y:f,w:p,h:c};var g=n,v=(r.freePointer.row+1)*o,y=i;t&&t.context.drawImage(e,g,0,y,s,0,v,y,s),h[1]={x:0,y:v,w:y,h:c},r.freePointer.x=i,r.freePointer.row++}():(p(),f())}return this.keyToLocation.set(e,h),this.needsBuffer=!0,h}},{key:"getOffsets",value:function(e){return this.keyToLocation.get(e)}},{key:"isEmpty",value:function(){return 0===this.freePointer.x&&0===this.freePointer.row}},{key:"canFit",value:function(e){if(this.locked)return!1;var t=this.texSize,n=this.texRows,r=this.getScale(e).texW;return!(this.freePointer.x+r>t)||this.freePointer.row<n-1}},{key:"bufferIfNeeded",value:function(e){this.texture||(this.texture=function(e){var t=e.createTexture();return t.buffer=function(n){e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR_MIPMAP_NEAREST),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n),e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null)},t.deleteTexture=function(){e.deleteTexture(t)},t}(e,this.debugID)),this.needsBuffer&&(this.texture.buffer(this.canvas),this.needsBuffer=!1,this.locked&&(this.canvas=null,this.scratch=null))}},{key:"dispose",value:function(){this.texture&&(this.texture.deleteTexture(),this.texture=null),this.canvas=null,this.scratch=null,this.locked=!0}}])}(),th=function(){return i(function e(t,n,r,i){a(this,e),this.r=t,this.texSize=n,this.texRows=r,this.createTextureCanvas=i,this.atlases=[],this.styleKeyToAtlas=new Map,this.markedKeys=new Set},[{key:"getKeys",value:function(){return new Set(this.styleKeyToAtlas.keys())}},{key:"_createAtlas",value:function(){var e=this.r,t=this.texSize,n=this.texRows,r=this.createTextureCanvas;return new eh(e,t,n,r)}},{key:"_getScratchCanvas",value:function(){if(!this.scratch){var e=this.r,t=this.texSize,n=this.texRows,r=this.createTextureCanvas,a=Math.floor(t/n);this.scratch=r(e,t,a,"scratch")}return this.scratch}},{key:"draw",value:function(e,t,n){var r=this.styleKeyToAtlas.get(e);return r||((r=this.atlases[this.atlases.length-1])&&r.canFit(t)||(r&&r.lock(),r=this._createAtlas(),this.atlases.push(r)),r.draw(e,t,n),this.styleKeyToAtlas.set(e,r)),r}},{key:"getAtlas",value:function(e){return this.styleKeyToAtlas.get(e)}},{key:"hasAtlas",value:function(e){return this.styleKeyToAtlas.has(e)}},{key:"markKeyForGC",value:function(e){this.markedKeys.add(e)}},{key:"gc",value:function(){var e=this,t=this.markedKeys;if(0!==t.size){var n,r=[],a=new Map,i=null,s=o(this.atlases);try{var c=function(){var s,c,d=n.value,h=d.getKeys(),f=(c=h,(s=t).intersection?s.intersection(c):new Set(u(s).filter(function(e){return c.has(e)})));if(0===f.size)return r.push(d),h.forEach(function(e){return a.set(e,d)}),1;i||(i=e._createAtlas(),r.push(i));var p,g=o(h);try{for(g.s();!(p=g.n()).done;){var v=p.value;if(!f.has(v)){var y=l(d.getOffsets(v),2),m=y[0],b=y[1];i.canFit({w:m.w+b.w,h:m.h})||(i.lock(),i=e._createAtlas(),r.push(i)),d.canvas&&(e._copyTextureToNewAtlas(v,d,i),a.set(v,i))}}}catch(x){g.e(x)}finally{g.f()}d.dispose()};for(s.s();!(n=s.n()).done;)c()}catch(d){s.e(d)}finally{s.f()}this.atlases=r,this.styleKeyToAtlas=a,this.markedKeys=new Set}else console.log("nothing to garbage collect")}},{key:"_copyTextureToNewAtlas",value:function(e,t,n){var r=l(t.getOffsets(e),2),a=r[0],i=r[1];if(0===i.w)n.draw(e,a,function(e){e.drawImage(t.canvas,a.x,a.y,a.w,a.h,0,0,a.w,a.h)});else{var o=this._getScratchCanvas();o.clear(),o.context.drawImage(t.canvas,a.x,a.y,a.w,a.h,0,0,a.w,a.h),o.context.drawImage(t.canvas,i.x,i.y,i.w,i.h,a.w,0,i.w,i.h);var s=a.w+i.w,u=a.h;n.draw(e,{w:s,h:u},function(e){e.drawImage(o,0,0,s,u,0,0,s,u)})}}},{key:"getCounts",value:function(){return{keyCount:this.styleKeyToAtlas.size,atlasCount:new Set(this.styleKeyToAtlas.values()).size}}}])}();var nh=function(){return i(function e(t,n){a(this,e),this.r=t,this.globalOptions=n,this.atlasSize=n.webglTexSize,this.maxAtlasesPerBatch=n.webglTexPerBatch,this.renderTypes=new Map,this.collections=new Map,this.typeAndIdToKey=new Map},[{key:"getAtlasSize",value:function(){return this.atlasSize}},{key:"addAtlasCollection",value:function(e,t){var n=this.globalOptions,r=n.webglTexSize,a=n.createTextureCanvas,i=t.texRows,o=this._cacheScratchCanvas(a),s=new th(this.r,r,i,o);this.collections.set(e,s)}},{key:"addRenderType",value:function(e,t){var n=t.collection;if(!this.collections.has(n))throw new Error("invalid atlas collection name '".concat(n,"'"));var r=this.collections.get(n),a=me({type:e,atlasCollection:r},t);this.renderTypes.set(e,a)}},{key:"getRenderTypeOpts",value:function(e){return this.renderTypes.get(e)}},{key:"getAtlasCollection",value:function(e){return this.collections.get(e)}},{key:"_cacheScratchCanvas",value:function(e){var t=-1,n=-1,r=null;return function(a,i,o,s){return s?(r&&i==t&&o==n||(t=i,n=o,r=e(a,i,o)),r):e(a,i,o)}}},{key:"_key",value:function(e,t){return"".concat(e,"-").concat(t)}},{key:"invalidate",value:function(e){var t,n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=r.forceRedraw,i=void 0!==a&&a,s=r.filterEle,l=void 0===s?function(){return!0}:s,u=r.filterType,c=void 0===u?function(){return!0}:u,d=!1,h=!1,f=o(e);try{for(f.s();!(t=f.n()).done;){var p=t.value;if(l(p)){var g,v=o(this.renderTypes.values());try{var y=function(){var e=g.value,t=e.type;if(c(t)){var r=n.collections.get(e.collection),a=e.getKey(p),o=Array.isArray(a)?a:[a];if(i)o.forEach(function(e){return r.markKeyForGC(e)}),h=!0;else{var s=e.getID?e.getID(p):p.id(),l=n._key(t,s),u=n.typeAndIdToKey.get(l);void 0===u||Fd(o,u)||(d=!0,n.typeAndIdToKey.delete(l),u.forEach(function(e){return r.markKeyForGC(e)}))}}};for(v.s();!(g=v.n()).done;)y()}catch(m){v.e(m)}finally{v.f()}}}}catch(m){f.e(m)}finally{f.f()}return h&&(this.gc(),d=!1),d}},{key:"gc",value:function(){var e,t=o(this.collections.values());try{for(t.s();!(e=t.n()).done;){e.value.gc()}}catch(n){t.e(n)}finally{t.f()}}},{key:"getOrCreateAtlas",value:function(e,t,n,r){var a=this.renderTypes.get(t),i=this.collections.get(a.collection),o=!1,s=i.draw(r,n,function(t){a.drawClipped?(t.save(),t.beginPath(),t.rect(0,0,n.w,n.h),t.clip(),a.drawElement(t,e,n,!0,!0),t.restore()):a.drawElement(t,e,n,!0,!0),o=!0});if(o){var l=a.getID?a.getID(e):e.id(),u=this._key(t,l);this.typeAndIdToKey.has(u)?this.typeAndIdToKey.get(u).push(r):this.typeAndIdToKey.set(u,[r])}return s}},{key:"getAtlasInfo",value:function(e,t){var n=this,r=this.renderTypes.get(t),a=r.getKey(e);return(Array.isArray(a)?a:[a]).map(function(a){var i=r.getBoundingBox(e,a),o=n.getOrCreateAtlas(e,t,i,a),s=l(o.getOffsets(a),2),u=s[0];return{atlas:o,tex:u,tex1:u,tex2:s[1],bb:i}})}},{key:"getDebugInfo",value:function(){var e,t=[],n=o(this.collections);try{for(n.s();!(e=n.n()).done;){var r=l(e.value,2),a=r[0],i=r[1].getCounts(),s=i.keyCount,u=i.atlasCount;t.push({type:a,keyCount:s,atlasCount:u})}}catch(c){n.e(c)}finally{n.f()}return t}}])}(),rh=function(){return i(function e(t){a(this,e),this.globalOptions=t,this.atlasSize=t.webglTexSize,this.maxAtlasesPerBatch=t.webglTexPerBatch,this.batchAtlases=[]},[{key:"getMaxAtlasesPerBatch",value:function(){return this.maxAtlasesPerBatch}},{key:"getAtlasSize",value:function(){return this.atlasSize}},{key:"getIndexArray",value:function(){return Array.from({length:this.maxAtlasesPerBatch},function(e,t){return t})}},{key:"startBatch",value:function(){this.batchAtlases=[]}},{key:"getAtlasCount",value:function(){return this.batchAtlases.length}},{key:"getAtlases",value:function(){return this.batchAtlases}},{key:"canAddToCurrentBatch",value:function(e){return this.batchAtlases.length!==this.maxAtlasesPerBatch||this.batchAtlases.includes(e)}},{key:"getAtlasIndexForBatch",value:function(e){var t=this.batchAtlases.indexOf(e);if(t<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(e),t=this.batchAtlases.length-1}return t}}])}(),ah={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},ih=1,oh=2,sh=function(){return i(function e(t,n,r){a(this,e),this.r=t,this.gl=n,this.maxInstances=r.webglBatchSize,this.atlasSize=r.webglTexSize,this.bgColor=r.bgColor,this.debug=r.webglDebug,this.batchDebugInfo=[],r.enableWrapping=!0,r.createTextureCanvas=zd,this.atlasManager=new nh(t,r),this.batchManager=new rh(r),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(ah.SCREEN),this.pickingProgram=this._createShaderProgram(ah.PICKING),this.vao=this._createVAO()},[{key:"addAtlasCollection",value:function(e,t){this.atlasManager.addAtlasCollection(e,t)}},{key:"addTextureAtlasRenderType",value:function(e,t){this.atlasManager.addRenderType(e,t)}},{key:"addSimpleShapeRenderType",value:function(e,t){this.simpleShapeOptions.set(e,t)}},{key:"invalidate",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).type,n=this.atlasManager;return t?n.invalidate(e,{filterType:function(e){return e===t},forceRedraw:!0}):n.invalidate(e)}},{key:"gc",value:function(){this.atlasManager.gc()}},{key:"_createShaderProgram",value:function(e){var t=this.gl,n="#version 300 es\n precision highp float;\n\n uniform mat3 uPanZoomMatrix;\n uniform int uAtlasSize;\n \n // instanced\n in vec2 aPosition; // a vertex from the unit square\n \n in mat3 aTransform; // used to transform verticies, eg into a bounding box\n in int aVertType; // the type of thing we are rendering\n\n // the z-index that is output when using picking mode\n in vec4 aIndex;\n \n // For textures\n in int aAtlasId; // which shader unit/atlas to use\n in vec4 aTex; // x/y/w/h of texture in atlas\n\n // for edges\n in vec4 aPointAPointB;\n in vec4 aPointCPointD;\n in vec2 aLineWidth; // also used for node border width\n\n // simple shapes\n in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left]\n in vec4 aColor; // also used for edges\n in vec4 aBorderColor; // aLineWidth is used for border width\n\n // output values passed to the fragment shader\n out vec2 vTexCoord;\n out vec4 vColor;\n out vec2 vPosition;\n // flat values are not interpolated\n flat out int vAtlasId; \n flat out int vVertType;\n flat out vec2 vTopRight;\n flat out vec2 vBotLeft;\n flat out vec4 vCornerRadius;\n flat out vec4 vBorderColor;\n flat out vec2 vBorderWidth;\n flat out vec4 vIndex;\n \n void main(void) {\n int vid = gl_VertexID;\n vec2 position = aPosition; // TODO make this a vec3, simplifies some code below\n\n if(aVertType == ".concat(0,") {\n float texX = aTex.x; // texture coordinates\n float texY = aTex.y;\n float texW = aTex.z;\n float texH = aTex.w;\n\n if(vid == 1 || vid == 2 || vid == 4) {\n texX += texW;\n }\n if(vid == 2 || vid == 4 || vid == 5) {\n texY += texH;\n }\n\n float d = float(uAtlasSize);\n vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(4," || aVertType == ").concat(7," \n || aVertType == ").concat(5," || aVertType == ").concat(6,") { // simple shapes\n\n // the bounding box is needed by the fragment shader\n vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat\n vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat\n vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated\n\n // calculations are done in the fragment shader, just pass these along\n vColor = aColor;\n vCornerRadius = aCornerRadius;\n vBorderColor = aBorderColor;\n vBorderWidth = aLineWidth;\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(1,") {\n vec2 source = aPointAPointB.xy;\n vec2 target = aPointAPointB.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n // stretch the unit square into a long skinny rectangle\n vec2 xBasis = target - source;\n vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));\n vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y;\n\n gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);\n vColor = aColor;\n } \n else if(aVertType == ").concat(2,") {\n vec2 pointA = aPointAPointB.xy;\n vec2 pointB = aPointAPointB.zw;\n vec2 pointC = aPointCPointD.xy;\n vec2 pointD = aPointCPointD.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n vec2 p0, p1, p2, pos;\n if(position.x == 0.0) { // The left side of the unit square\n p0 = pointA;\n p1 = pointB;\n p2 = pointC;\n pos = position;\n } else { // The right side of the unit square, use same approach but flip the geometry upside down\n p0 = pointD;\n p1 = pointC;\n p2 = pointB;\n pos = vec2(0.0, -position.y);\n }\n\n vec2 p01 = p1 - p0;\n vec2 p12 = p2 - p1;\n vec2 p21 = p1 - p2;\n\n // Find the normal vector.\n vec2 tangent = normalize(normalize(p12) + normalize(p01));\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n // Find the vector perpendicular to p0 -> p1.\n vec2 p01Norm = normalize(vec2(-p01.y, p01.x));\n\n // Determine the bend direction.\n float sigma = sign(dot(p01 + p21, normal));\n float width = aLineWidth[0];\n\n if(sign(pos.y) == -sigma) {\n // This is an intersecting vertex. Adjust the position so that there's no overlap.\n vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n } else {\n // This is a non-intersecting vertex. Treat it like a mitre join.\n vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n }\n\n vColor = aColor;\n } \n else if(aVertType == ").concat(3," && vid < 3) {\n // massage the first triangle into an edge arrow\n if(vid == 0)\n position = vec2(-0.15, -0.3);\n if(vid == 1)\n position = vec2( 0.0, 0.0);\n if(vid == 2)\n position = vec2( 0.15, -0.3);\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n vColor = aColor;\n }\n else {\n gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space\n }\n\n vAtlasId = aAtlasId;\n vVertType = aVertType;\n vIndex = aIndex;\n }\n "),r=this.batchManager.getIndexArray(),a="#version 300 es\n precision highp float;\n\n // declare texture unit for each texture atlas in the batch\n ".concat(r.map(function(e){return"uniform sampler2D uTexture".concat(e,";")}).join("\n\t"),"\n\n uniform vec4 uBGColor;\n uniform float uZoom;\n\n in vec2 vTexCoord;\n in vec4 vColor;\n in vec2 vPosition; // model coordinates\n\n flat in int vAtlasId;\n flat in vec4 vIndex;\n flat in int vVertType;\n flat in vec2 vTopRight;\n flat in vec2 vBotLeft;\n flat in vec4 vCornerRadius;\n flat in vec4 vBorderColor;\n flat in vec2 vBorderWidth;\n\n out vec4 outColor;\n\n ").concat("\n float circleSD(vec2 p, float r) {\n return distance(vec2(0), p) - r; // signed distance\n }\n","\n ").concat("\n float rectangleSD(vec2 p, vec2 b) {\n vec2 d = abs(p)-b;\n return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);\n }\n","\n ").concat("\n float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {\n cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;\n cr.x = (p.y > 0.0) ? cr.x : cr.y;\n vec2 q = abs(p) - b + cr.x;\n return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;\n }\n","\n ").concat("\n float ellipseSD(vec2 p, vec2 ab) {\n p = abs( p ); // symmetry\n\n // find root with Newton solver\n vec2 q = ab*(p-ab);\n float w = (q.x<q.y)? 1.570796327 : 0.0;\n for( int i=0; i<5; i++ ) {\n vec2 cs = vec2(cos(w),sin(w));\n vec2 u = ab*vec2( cs.x,cs.y);\n vec2 v = ab*vec2(-cs.y,cs.x);\n w = w + dot(p-u,v)/(dot(p-u,u)+dot(v,v));\n }\n \n // compute final point and distance\n float d = length(p-ab*vec2(cos(w),sin(w)));\n \n // return signed distance\n return (dot(p/ab,p/ab)>1.0) ? d : -d;\n }\n","\n\n vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha\n return vec4( \n top.rgb + (bot.rgb * (1.0 - top.a)),\n top.a + (bot.a * (1.0 - top.a)) \n );\n }\n\n vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance\n // scale to the zoom level so that borders don't look blurry when zoomed in\n // note 1.5 is an aribitrary value chosen because it looks good\n return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); \n }\n\n void main(void) {\n if(vVertType == ").concat(0,") {\n // look up the texel from the texture unit\n ").concat(r.map(function(e){return"if(vAtlasId == ".concat(e,") outColor = texture(uTexture").concat(e,", vTexCoord);")}).join("\n\telse "),"\n } \n else if(vVertType == ").concat(3,") {\n // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';\n outColor = blend(vColor, uBGColor);\n outColor.a = 1.0; // make opaque, masks out line under arrow\n }\n else if(vVertType == ").concat(4," && vBorderWidth == vec2(0.0)) { // simple rectangle with no border\n outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done\n }\n else if(vVertType == ").concat(4," || vVertType == ").concat(7," \n || vVertType == ").concat(5," || vVertType == ").concat(6,") { // use SDF\n\n float outerBorder = vBorderWidth[0];\n float innerBorder = vBorderWidth[1];\n float borderPadding = outerBorder * 2.0;\n float w = vTopRight.x - vBotLeft.x - borderPadding;\n float h = vTopRight.y - vBotLeft.y - borderPadding;\n vec2 b = vec2(w/2.0, h/2.0); // half width, half height\n vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center\n\n float d; // signed distance\n if(vVertType == ").concat(4,") {\n d = rectangleSD(p, b);\n } else if(vVertType == ").concat(7," && w == h) {\n d = circleSD(p, b.x); // faster than ellipse\n } else if(vVertType == ").concat(7,") {\n d = ellipseSD(p, b);\n } else {\n d = roundRectangleSD(p, b, vCornerRadius.wzyx);\n }\n\n // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling\n // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box\n if(d > 0.0) {\n if(d > outerBorder) {\n discard;\n } else {\n outColor = distInterp(vBorderColor, vec4(0), d - outerBorder);\n }\n } else {\n if(d > innerBorder) {\n vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor;\n vec4 innerBorderColor = blend(vBorderColor, vColor);\n outColor = distInterp(innerBorderColor, outerColor, d);\n } \n else {\n vec4 outerColor;\n if(innerBorder == 0.0 && outerBorder == 0.0) {\n outerColor = vec4(0);\n } else if(innerBorder == 0.0) {\n outerColor = vBorderColor;\n } else {\n outerColor = blend(vBorderColor, vColor);\n }\n outColor = distInterp(vColor, outerColor, d - innerBorder);\n }\n }\n }\n else {\n outColor = vColor;\n }\n\n ").concat(e.picking?"if(outColor.a == 0.0) discard;\n else outColor = vIndex;":"","\n }\n "),i=function(e,t,n){var r=Ld(e,e.VERTEX_SHADER,t),a=Ld(e,e.FRAGMENT_SHADER,n),i=e.createProgram();if(e.attachShader(i,r),e.attachShader(i,a),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))throw new Error("Could not initialize shaders");return i}(t,n,a);i.aPosition=t.getAttribLocation(i,"aPosition"),i.aIndex=t.getAttribLocation(i,"aIndex"),i.aVertType=t.getAttribLocation(i,"aVertType"),i.aTransform=t.getAttribLocation(i,"aTransform"),i.aAtlasId=t.getAttribLocation(i,"aAtlasId"),i.aTex=t.getAttribLocation(i,"aTex"),i.aPointAPointB=t.getAttribLocation(i,"aPointAPointB"),i.aPointCPointD=t.getAttribLocation(i,"aPointCPointD"),i.aLineWidth=t.getAttribLocation(i,"aLineWidth"),i.aColor=t.getAttribLocation(i,"aColor"),i.aCornerRadius=t.getAttribLocation(i,"aCornerRadius"),i.aBorderColor=t.getAttribLocation(i,"aBorderColor"),i.uPanZoomMatrix=t.getUniformLocation(i,"uPanZoomMatrix"),i.uAtlasSize=t.getUniformLocation(i,"uAtlasSize"),i.uBGColor=t.getUniformLocation(i,"uBGColor"),i.uZoom=t.getUniformLocation(i,"uZoom"),i.uTextures=[];for(var o=0;o<this.batchManager.getMaxAtlasesPerBatch();o++)i.uTextures.push(t.getUniformLocation(i,"uTexture".concat(o)));return i}},{key:"_createVAO",value:function(){var e=[0,0,1,0,1,1,0,0,1,1,0,1];this.vertexCount=e.length/2;var t=this.maxInstances,n=this.gl,r=this.program,a=n.createVertexArray();return n.bindVertexArray(a),function(e,t,n,r){var a=l(Yd(e,t),2),i=a[0],o=a[1],s=Wd(e,o,r),u=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,s,e.STATIC_DRAW),o===e.FLOAT?e.vertexAttribPointer(n,i,o,!1,0,0):o===e.INT&&e.vertexAttribIPointer(n,i,o,0,0),e.enableVertexAttribArray(n),e.bindBuffer(e.ARRAY_BUFFER,null)}(n,"vec2",r.aPosition,e),this.transformBuffer=function(e,t,n){for(var r=new Float32Array(9*t),a=new Array(t),i=0;i<t;i++){var o=9*i*4;a[i]=new Float32Array(r.buffer,o,9)}var s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,r.byteLength,e.DYNAMIC_DRAW);for(var l=0;l<3;l++){var u=n+l;e.enableVertexAttribArray(u),e.vertexAttribPointer(u,3,e.FLOAT,!1,36,12*l),e.vertexAttribDivisor(u,1)}return e.bindBuffer(e.ARRAY_BUFFER,null),s.getMatrixView=function(e){return a[e]},s.setData=function(e,t){a[t].set(e,0)},s.bufferSubData=function(){e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferSubData(e.ARRAY_BUFFER,0,r)},s}(n,t,r.aTransform),this.indexBuffer=Hd(n,t,"vec4",r.aIndex),this.vertTypeBuffer=Hd(n,t,"int",r.aVertType),this.atlasIdBuffer=Hd(n,t,"int",r.aAtlasId),this.texBuffer=Hd(n,t,"vec4",r.aTex),this.pointAPointBBuffer=Hd(n,t,"vec4",r.aPointAPointB),this.pointCPointDBuffer=Hd(n,t,"vec4",r.aPointCPointD),this.lineWidthBuffer=Hd(n,t,"vec2",r.aLineWidth),this.colorBuffer=Hd(n,t,"vec4",r.aColor),this.cornerRadiusBuffer=Hd(n,t,"vec4",r.aCornerRadius),this.borderColorBuffer=Hd(n,t,"vec4",r.aBorderColor),n.bindVertexArray(null),a}},{key:"buffers",get:function(){var e=this;return this._buffers||(this._buffers=Object.keys(this).filter(function(e){return e.endsWith("Buffer")}).map(function(t){return e[t]})),this._buffers}},{key:"startFrame",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ah.SCREEN;this.panZoomMatrix=e,this.renderTarget=t,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()}},{key:"startBatch",value:function(){this.instanceCount=0,this.batchManager.startBatch()}},{key:"endFrame",value:function(){this.endBatch()}},{key:"_isVisible",value:function(e,t){return!!e.visible()&&(!t||!t.isVisible||t.isVisible(e))}},{key:"drawTexture",value:function(e,t,n){var r=this.atlasManager,a=this.batchManager,i=r.getRenderTypeOpts(n);if(this._isVisible(e,i)){if(this.renderTarget.picking&&i.getTexPickingMode){var s=i.getTexPickingMode(e);if(s===ih)return;if(s==oh)return void this.drawPickingRectangle(e,t,n)}var u,c=o(r.getAtlasInfo(e,n));try{for(c.s();!(u=c.n()).done;){var d=u.value,h=d.atlas,f=d.tex1,p=d.tex2;a.canAddToCurrentBatch(h)||this.endBatch();for(var g=a.getAtlasIndexForBatch(h),v=0,y=[[f,!0],[p,!1]];v<y.length;v++){var m=l(y[v],2),b=m[0],x=m[1];if(0!=b.w){var w=this.instanceCount;this.vertTypeBuffer.getView(w)[0]=0,Xd(t,this.indexBuffer.getView(w)),this.atlasIdBuffer.getView(w)[0]=g;var E=this.texBuffer.getView(w);E[0]=b.x,E[1]=b.y,E[2]=b.w,E[3]=b.h;var k=this.transformBuffer.getMatrixView(w);this.setTransformMatrix(e,k,i,d,x),this.instanceCount++,x||this.wrappedCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}}catch(T){c.e(T)}finally{c.f()}}}},{key:"setTransformMatrix",value:function(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=0;if(n.shapeProps&&n.shapeProps.padding&&(i=e.pstyle(n.shapeProps.padding).pfValue),r){var o=r.bb,s=r.tex1,l=r.tex2,u=s.w/(s.w+l.w);a||(u=1-u);var c=this._getAdjustedBB(o,i,a,u);this._applyTransformMatrix(t,c,n,e)}else{var d=n.getBoundingBox(e),h=this._getAdjustedBB(d,i,!0,1);this._applyTransformMatrix(t,h,n,e)}}},{key:"_applyTransformMatrix",value:function(e,t,n,r){var a,i;Zd(e);var o=n.getRotation?n.getRotation(r):0;if(0!==o){var s=n.getRotationPoint(r);$d(e,e,[s.x,s.y]),Qd(e,e,o);var l=n.getRotationOffset(r);a=l.x+(t.xOffset||0),i=l.y+(t.yOffset||0)}else a=t.x1,i=t.y1;$d(e,e,[a,i]),Jd(e,e,[t.w,t.h])}},{key:"_getAdjustedBB",value:function(e,t,n,r){var a=e.x1,i=e.y1,o=e.w,s=e.h;t&&(a-=t,i-=t,o+=2*t,s+=2*t);var l=0,u=o*r;return n&&r<1?o=u:!n&&r<1&&(a+=l=o-u,o=u),{x1:a,y1:i,w:o,h:s,xOffset:l,yOffset:e.yOffset}}},{key:"drawPickingRectangle",value:function(e,t,n){var r=this.atlasManager.getRenderTypeOpts(n),a=this.instanceCount;this.vertTypeBuffer.getView(a)[0]=4,Xd(t,this.indexBuffer.getView(a)),jd([0,0,0],1,this.colorBuffer.getView(a));var i=this.transformBuffer.getMatrixView(a);this.setTransformMatrix(e,i,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},{key:"drawNode",value:function(e,t,n){var r=this.simpleShapeOptions.get(n);if(this._isVisible(e,r)){var a=r.shapeProps,i=this._getVertTypeForShape(e,a.shape);if(void 0===i||r.isSimple&&!r.isSimple(e))this.drawTexture(e,t,n);else{var o=this.instanceCount;if(this.vertTypeBuffer.getView(o)[0]=i,5===i||6===i){var s=r.getBoundingBox(e),l=this._getCornerRadius(e,a.radius,s),u=this.cornerRadiusBuffer.getView(o);u[0]=l,u[1]=l,u[2]=l,u[3]=l,6===i&&(u[0]=0,u[2]=0)}Xd(t,this.indexBuffer.getView(o)),jd(e.pstyle(a.color).value,e.pstyle(a.opacity).value,this.colorBuffer.getView(o));var c=this.lineWidthBuffer.getView(o);if(c[0]=0,c[1]=0,a.border){var d=e.pstyle("border-width").value;if(d>0){jd(e.pstyle("border-color").value,e.pstyle("border-opacity").value,this.borderColorBuffer.getView(o));var h=e.pstyle("border-position").value;if("inside"===h)c[0]=0,c[1]=-d;else if("outside"===h)c[0]=d,c[1]=0;else{var f=d/2;c[0]=f,c[1]=-f}}}var p=this.transformBuffer.getMatrixView(o);this.setTransformMatrix(e,p,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"_getVertTypeForShape",value:function(e,t){switch(e.pstyle(t).value){case"rectangle":return 4;case"ellipse":return 7;case"roundrectangle":case"round-rectangle":return 5;case"bottom-round-rectangle":return 6;default:return}}},{key:"_getCornerRadius",value:function(e,t,n){var r=n.w,a=n.h;if("auto"===e.pstyle(t).value)return Sn(r,a);var i=e.pstyle(t).pfValue,o=r/2,s=a/2;return Math.min(i,s,o)}},{key:"drawEdgeArrow",value:function(e,t,n){if(e.visible()){var r,a,i,o=e._private.rscratch;if("source"===n?(r=o.arrowStartX,a=o.arrowStartY,i=o.srcArrowAngle):(r=o.arrowEndX,a=o.arrowEndY,i=o.tgtArrowAngle),!(isNaN(r)||null==r||isNaN(a)||null==a||isNaN(i)||null==i))if("none"!==e.pstyle(n+"-arrow-shape").value){var s=e.pstyle(n+"-arrow-color").value,l=e.pstyle("opacity").value*e.pstyle("line-opacity").value,u=e.pstyle("width").pfValue,c=e.pstyle("arrow-scale").value,d=this.r.getArrowWidth(u,c),h=this.instanceCount,f=this.transformBuffer.getMatrixView(h);Zd(f),$d(f,f,[r,a]),Jd(f,f,[d,d]),Qd(f,f,i),this.vertTypeBuffer.getView(h)[0]=3,Xd(t,this.indexBuffer.getView(h)),jd(s,l,this.colorBuffer.getView(h)),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"drawEdgeLine",value:function(e,t){if(e.visible()){var n=this._getEdgePoints(e);if(n){var r=e.pstyle("opacity").value,a=e.pstyle("line-opacity").value,i=e.pstyle("width").pfValue,o=e.pstyle("line-color").value,s=r*a;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),4==n.length){var l=this.instanceCount;this.vertTypeBuffer.getView(l)[0]=1,Xd(t,this.indexBuffer.getView(l)),jd(o,s,this.colorBuffer.getView(l)),this.lineWidthBuffer.getView(l)[0]=i;var u=this.pointAPointBBuffer.getView(l);u[0]=n[0],u[1]=n[1],u[2]=n[2],u[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var c=0;c<n.length-2;c+=2){var d=this.instanceCount;this.vertTypeBuffer.getView(d)[0]=2,Xd(t,this.indexBuffer.getView(d)),jd(o,s,this.colorBuffer.getView(d)),this.lineWidthBuffer.getView(d)[0]=i;var h=n[c-2],f=n[c-1],p=n[c],g=n[c+1],v=n[c+2],y=n[c+3],m=n[c+4],b=n[c+5];0==c&&(h=2*p-v+.001,f=2*g-y+.001),c==n.length-4&&(m=2*v-p+.001,b=2*y-g+.001);var x=this.pointAPointBBuffer.getView(d);x[0]=h,x[1]=f,x[2]=p,x[3]=g;var w=this.pointCPointDBuffer.getView(d);w[0]=v,w[1]=y,w[2]=m,w[3]=b,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}}},{key:"_getEdgePoints",value:function(e){var t=e._private.rscratch;if(!t.badLine&&null!=t.allpts&&!isNaN(t.allpts[0])){var n=t.allpts;if(4==n.length)return n;var r=this._getNumSegments(e);return this._getCurveSegmentPoints(n,r)}}},{key:"_getNumSegments",value:function(e){return Math.min(Math.max(15,5),this.maxInstances)}},{key:"_getCurveSegmentPoints",value:function(e,t){if(4==e.length)return e;for(var n=Array(2*(t+1)),r=0;r<=t;r++)if(0==r)n[0]=e[0],n[1]=e[1];else if(r==t)n[2*r]=e[e.length-2],n[2*r+1]=e[e.length-1];else{var a=r/t;this._setCurvePoint(e,a,n,2*r)}return n}},{key:"_setCurvePoint",value:function(e,t,n,r){if(!(e.length<=2)){for(var a=Array(e.length-2),i=0;i<a.length;i+=2){var o=(1-t)*e[i]+t*e[i+2],s=(1-t)*e[i+1]+t*e[i+3];a[i]=o,a[i+1]=s}return this._setCurvePoint(a,t,n,r)}n[r]=e[0],n[r+1]=e[1]}},{key:"endBatch",value:function(){var e=this.gl,t=this.vao,n=this.vertexCount,r=this.instanceCount;if(0!==r){var a=this.renderTarget.picking?this.pickingProgram:this.program;e.useProgram(a),e.bindVertexArray(t);var i,s=o(this.buffers);try{for(s.s();!(i=s.n()).done;){i.value.bufferSubData(r)}}catch(p){s.e(p)}finally{s.f()}for(var l,u,c=this.batchManager.getAtlases(),d=0;d<c.length;d++)c[d].bufferIfNeeded(e);for(var h=0;h<c.length;h++)e.activeTexture(e.TEXTURE0+h),e.bindTexture(e.TEXTURE_2D,c[h].texture),e.uniform1i(a.uTextures[h],h);e.uniform1f(a.uZoom,(l=this.r,u=l.pixelRatio,l.cy.zoom()*u)),e.uniformMatrix3fv(a.uPanZoomMatrix,!1,this.panZoomMatrix),e.uniform1i(a.uAtlasSize,this.batchManager.getAtlasSize());var f=jd(this.bgColor,1);e.uniform4fv(a.uBGColor,f),e.drawArraysInstanced(e.TRIANGLES,0,n,r),e.bindVertexArray(null),e.bindTexture(e.TEXTURE_2D,null),this.debug&&this.batchDebugInfo.push({count:r,atlasCount:c.length}),this.startBatch()}}},{key:"getDebugInfo",value:function(){var e=this.atlasManager.getDebugInfo(),t=e.reduce(function(e,t){return e+t.atlasCount},0),n=this.batchDebugInfo,r=n.reduce(function(e,t){return e+t.count},0);return{atlasInfo:e,totalAtlases:t,wrappedCount:this.wrappedCount,simpleCount:this.simpleCount,batchCount:n.length,batchInfo:n,totalInstances:r}}}])}(),lh={};function uh(e,t){var n=e._private.rscratch;return ht(n,"labelWrapCachedLines",t)||[]}lh.initWebgl=function(e,t){var n=this,r=n.data.contexts[n.WEBGL];e.bgColor=function(e){var t=e.cy.container(),n=t&&t.style&&t.style.backgroundColor||"white";return be(n)}(n),e.webglTexSize=Math.min(e.webglTexSize,r.getParameter(r.MAX_TEXTURE_SIZE)),e.webglTexRows=Math.min(e.webglTexRows,54),e.webglTexRowsNodes=Math.min(e.webglTexRowsNodes,54),e.webglBatchSize=Math.min(e.webglBatchSize,16384),e.webglTexPerBatch=Math.min(e.webglTexPerBatch,r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS)),n.webglDebug=e.webglDebug,n.webglDebugShowAtlases=e.webglDebugShowAtlases,n.pickingFrameBuffer=function(e){var t=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,t);var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0),e.bindFramebuffer(e.FRAMEBUFFER,null),t.setFramebufferAttachmentSizes=function(t,r){e.bindTexture(e.TEXTURE_2D,n),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t,r,0,e.RGBA,e.UNSIGNED_BYTE,null)},t}(r),n.pickingFrameBuffer.needsDraw=!0,n.drawing=new sh(n,r,e);var a=function(e){return function(t){return n.getTextAngle(t,e)}},i=function(e){return function(t){var n=t.pstyle(e);return n&&n.value}},s=function(e){return function(t){return t.pstyle("".concat(e,"-opacity")).value>0}},u=function(e){return"yes"===e.pstyle("text-events").strValue?oh:ih},c=function(e){var t=e.position(),n=t.x,r=t.y,a=e.outerWidth(),i=e.outerHeight();return{w:a,h:i,x1:n-a/2,y1:r-i/2}};n.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),n.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),n.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),n.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:c,isSimple:Vd,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),n.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:c,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),n.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:c,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),n.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:u,getKey:ch(t.getLabelKey,null),getBoundingBox:dh(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:a(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:i("label")}),n.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:u,getKey:ch(t.getSourceLabelKey,"source"),getBoundingBox:dh(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:a("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:i("source-label")}),n.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:u,getKey:ch(t.getTargetLabelKey,"target"),getBoundingBox:dh(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:a("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:i("target-label")});var d=Ae(function(){console.log("garbage collect flag set"),n.data.gc=!0},1e4);n.onUpdateEleCalcs(function(e,t){var r=!1;t&&t.length>0&&(r|=n.drawing.invalidate(t)),r&&d()}),function(e){var t=e.render;e.render=function(n){n=n||{};var r=e.cy;e.webgl&&(r.zoom()>ad?(!function(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}(e),t.call(e,n)):(!function(e){var t=function(t){t.save(),t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.canvasWidth,e.canvasHeight),t.restore()};t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}(e),ph(e,n,ah.SCREEN)))};var n=e.matchCanvasSize;e.matchCanvasSize=function(t){n.call(e,t),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0},e.findNearestElements=function(t,n,r,a){return function(e,t,n){var r,a,i,s=function(e,t,n){var r,a,i,o,s=Od(e),u=s.pan,c=s.zoom,d=function(e,t,n,r,a){var i=r*n+t.x,o=a*n+t.y;return[i,o=Math.round(e.canvasHeight-o)]}(e,u,c,t,n),h=l(d,2),f=h[0],p=h[1],g=6;if(r=f-g/2,a=p-g/2,o=g,0===(i=g)||0===o)return[];var v=e.data.contexts[e.WEBGL];v.bindFramebuffer(v.FRAMEBUFFER,e.pickingFrameBuffer),e.pickingFrameBuffer.needsDraw&&(v.viewport(0,0,v.canvas.width,v.canvas.height),ph(e,null,ah.PICKING),e.pickingFrameBuffer.needsDraw=!1);var y=i*o,m=new Uint8Array(4*y);v.readPixels(r,a,i,o,v.RGBA,v.UNSIGNED_BYTE,m),v.bindFramebuffer(v.FRAMEBUFFER,null);for(var b=new Set,x=0;x<y;x++){var w=qd(m.slice(4*x,4*x+4))-1;w>=0&&b.add(w)}return b}(e,t,n),u=e.getCachedZSortedEles(),c=o(s);try{for(c.s();!(i=c.n()).done;){var d=u[i.value];if(!r&&d.isNode()&&(r=d),!a&&d.isEdge()&&(a=d),r&&a)break}}catch(h){c.e(h)}finally{c.f()}return[r,a].filter(Boolean)}(e,t,n)};var r=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){r.call(e),e.pickingFrameBuffer.needsDraw=!0};var a=e.notify;e.notify=function(t,n){a.call(e,t,n),"viewport"===t||"bounds"===t?e.pickingFrameBuffer.needsDraw=!0:"background"===t&&e.drawing.invalidate(n,{type:"node-body"})}}(n)};var ch=function(e,t){return function(n){var r=e(n),a=uh(n,t);return a.length>1?a.map(function(e,t){return"".concat(r,"_").concat(t)}):r}},dh=function(e,t){return function(n,r){var a=e(n);if("string"==typeof r){var i=r.indexOf("_");if(i>0){var o=Number(r.substring(i+1)),s=uh(n,t),l=a.h/s.length,u=l*o,c=a.y1+u;return{x1:a.x1,w:a.w,y1:c,h:l,yOffset:u}}}return a}};function hh(e,t){var n=e.canvasWidth,r=e.canvasHeight,a=Od(e),i=a.pan,o=a.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,n,r),t.translate(i.x,i.y),t.scale(o,o)}function fh(e,t,n){var r=e.drawing;t+=1,n.isNode()?(r.drawNode(n,t,"node-underlay"),r.drawNode(n,t,"node-body"),r.drawTexture(n,t,"label"),r.drawNode(n,t,"node-overlay")):(r.drawEdgeLine(n,t),r.drawEdgeArrow(n,t,"source"),r.drawEdgeArrow(n,t,"target"),r.drawTexture(n,t,"label"),r.drawTexture(n,t,"edge-source-label"),r.drawTexture(n,t,"edge-target-label"))}function ph(e,t,n){var r;e.webglDebug&&(r=performance.now());var a=e.drawing,i=0;if(n.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&function(e,t){e.drawSelectionRectangle(t,function(t){return hh(e,t)})}(e,t),e.data.canvasNeedsRedraw[e.NODE]||n.picking){var s=e.data.contexts[e.WEBGL];n.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=function(e){var t=e.canvasWidth,n=e.canvasHeight,r=Od(e),a=r.pan,i=r.zoom,o=Gd();$d(o,o,[a.x,a.y]),Jd(o,o,[i,i]);var s=Gd();!function(e,t,n){e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/n,e[5]=0,e[6]=-1,e[7]=1,e[8]=1}(s,t,n);var l,u,c,d,h,f,p,g,v,y,m,b,x,w,E,k,T,C,P,S,B,D=Gd();return l=D,c=o,d=(u=s)[0],h=u[1],f=u[2],p=u[3],g=u[4],v=u[5],y=u[6],m=u[7],b=u[8],x=c[0],w=c[1],E=c[2],k=c[3],T=c[4],C=c[5],P=c[6],S=c[7],B=c[8],l[0]=x*d+w*p+E*y,l[1]=x*h+w*g+E*m,l[2]=x*f+w*v+E*b,l[3]=k*d+T*p+C*y,l[4]=k*h+T*g+C*m,l[5]=k*f+T*v+C*b,l[6]=P*d+S*p+B*y,l[7]=P*h+S*g+B*m,l[8]=P*f+S*v+B*b,D}(e),u=e.getCachedZSortedEles();if(i=u.length,a.startFrame(l,n),n.screen){for(var c=0;c<u.nondrag.length;c++)fh(e,c,u.nondrag[c]);for(var d=0;d<u.drag.length;d++)fh(e,d,u.drag[d])}else if(n.picking)for(var h=0;h<u.length;h++)fh(e,h,u[h]);a.endFrame(),n.screen&&e.webglDebugShowAtlases&&(function(e){var t=e.data.contexts[e.NODE];t.save(),hh(e,t),t.strokeStyle="rgba(0, 0, 0, 0.3)",t.beginPath(),t.moveTo(-1e3,0),t.lineTo(1e3,0),t.stroke(),t.beginPath(),t.moveTo(0,-1e3),t.lineTo(0,1e3),t.stroke(),t.restore()}(e),function(e){var t=function(t,n,r){for(var a=t.atlasManager.getAtlasCollection(n),i=e.data.contexts[e.NODE],o=a.atlases,s=0;s<o.length;s++){var l=o[s].canvas;if(l){var u=l.width,c=l.height,d=u*s,h=l.height*r;i.save(),i.scale(.4,.4),i.drawImage(l,d,h),i.strokeStyle="black",i.rect(d,h,u,c),i.stroke(),i.restore()}}},n=0;t(e.drawing,"node",n++),t(e.drawing,"label",n++)}(e)),e.data.canvasNeedsRedraw[e.NODE]=!1,e.data.canvasNeedsRedraw[e.DRAG]=!1}if(e.webglDebug){var f=performance.now(),p=Math.ceil(f-r),g=a.getDebugInfo(),v=["".concat(i," elements"),"".concat(g.totalInstances," instances"),"".concat(g.batchCount," batches"),"".concat(g.totalAtlases," atlases"),"".concat(g.wrappedCount," wrapped textures"),"".concat(g.simpleCount," simple shapes")].join(", ");console.log("WebGL (".concat(n.name,") - frame time ").concat(p,"ms")),console.log("Totals:"),console.log(" ".concat(v)),console.log("Texture Atlases Used:");var y,m=o(g.atlasInfo);try{for(m.s();!(y=m.n()).done;){var b=y.value;console.log(" ".concat(b.type,": ").concat(b.keyCount," keys, ").concat(b.atlasCount," atlases"))}}catch(x){m.e(x)}finally{m.f()}console.log("")}e.data.gc&&(console.log("Garbage Collect!"),e.data.gc=!1,a.gc())}for(var gh={drawPolygonPath:function(e,t,n,r,a,i){var o=r/2,s=a/2;e.beginPath&&e.beginPath(),e.moveTo(t+o*i[0],n+s*i[1]);for(var l=1;l<i.length/2;l++)e.lineTo(t+o*i[2*l],n+s*i[2*l+1]);e.closePath()},drawRoundPolygonPath:function(e,t,n,r,a,i,o){o.forEach(function(t){return Ac(e,t)}),e.closePath()},drawRoundRectanglePath:function(e,t,n,r,a,i){var o=r/2,s=a/2,l="auto"===i?Sn(r,a):Math.min(i,s,o);e.beginPath&&e.beginPath(),e.moveTo(t,n-s),e.arcTo(t+o,n-s,t+o,n,l),e.arcTo(t+o,n+s,t,n+s,l),e.arcTo(t-o,n+s,t-o,n,l),e.arcTo(t-o,n-s,t,n-s,l),e.lineTo(t,n-s),e.closePath()},drawBottomRoundRectanglePath:function(e,t,n,r,a,i){var o=r/2,s=a/2,l="auto"===i?Sn(r,a):i;e.beginPath&&e.beginPath(),e.moveTo(t,n-s),e.lineTo(t+o,n-s),e.lineTo(t+o,n),e.arcTo(t+o,n+s,t,n+s,l),e.arcTo(t-o,n+s,t-o,n,l),e.lineTo(t-o,n-s),e.lineTo(t,n-s),e.closePath()},drawCutRectanglePath:function(e,t,n,r,a,i,o){var s=r/2,l=a/2,u="auto"===o?8:o;e.beginPath&&e.beginPath(),e.moveTo(t-s+u,n-l),e.lineTo(t+s-u,n-l),e.lineTo(t+s,n-l+u),e.lineTo(t+s,n+l-u),e.lineTo(t+s-u,n+l),e.lineTo(t-s+u,n+l),e.lineTo(t-s,n+l-u),e.lineTo(t-s,n-l+u),e.closePath()},drawBarrelPath:function(e,t,n,r,a){var i=r/2,o=a/2,s=t-i,l=t+i,u=n-o,c=n+o,d=Dn(r,a),h=d.widthOffset,f=d.heightOffset,p=d.ctrlPtOffsetPct*h;e.beginPath&&e.beginPath(),e.moveTo(s,u+f),e.lineTo(s,c-f),e.quadraticCurveTo(s+p,c,s+h,c),e.lineTo(l-h,c),e.quadraticCurveTo(l-p,c,l,c-f),e.lineTo(l,u+f),e.quadraticCurveTo(l-p,u,l-h,u),e.lineTo(s+h,u),e.quadraticCurveTo(s+p,u,s,u+f),e.closePath()}},vh=Math.sin(0),yh=Math.cos(0),mh={},bh={},xh=Math.PI/40,wh=0*Math.PI;wh<2*Math.PI;wh+=xh)mh[wh]=Math.sin(wh),bh[wh]=Math.cos(wh);gh.drawEllipsePath=function(e,t,n,r,a){if(e.beginPath&&e.beginPath(),e.ellipse)e.ellipse(t,n,r/2,a/2,0,0,2*Math.PI);else for(var i,o,s=r/2,l=a/2,u=0*Math.PI;u<2*Math.PI;u+=xh)i=t-s*mh[u]*vh+s*bh[u]*yh,o=n+l*bh[u]*vh+l*mh[u]*yh,0===u?e.moveTo(i,o):e.lineTo(i,o);e.closePath()};var Eh={};function kh(e){var t=e.indexOf(",");return e.substr(t+1)}function Th(e,t,n){var r=function(){return t.toDataURL(n,e.quality)};switch(e.output){case"blob-promise":return new qr(function(r,a){try{t.toBlob(function(e){null!=e?r(e):a(new Error("`canvas.toBlob()` sent a null value in its callback"))},n,e.quality)}catch(i){a(i)}});case"blob":return function(e,t){for(var n=atob(e),r=new ArrayBuffer(n.length),a=new Uint8Array(r),i=0;i<n.length;i++)a[i]=n.charCodeAt(i);return new Blob([r],{type:t})}(kh(r()),n);case"base64":return kh(r());default:return r()}}Eh.createBuffer=function(e,t){var n=document.createElement("canvas");return n.width=e,n.height=t,[n,n.getContext("2d")]},Eh.bufferCanvasImage=function(e){var t=this.cy,n=t.mutableElements().boundingBox(),r=this.findContainerClientCoords(),a=e.full?Math.ceil(n.w):r[2],i=e.full?Math.ceil(n.h):r[3],o=Q(e.maxWidth)||Q(e.maxHeight),s=this.getPixelRatio(),l=1;if(void 0!==e.scale)a*=e.scale,i*=e.scale,l=e.scale;else if(o){var u=1/0,c=1/0;Q(e.maxWidth)&&(u=l*e.maxWidth/a),Q(e.maxHeight)&&(c=l*e.maxHeight/i),a*=l=Math.min(u,c),i*=l}o||(a*=s,i*=s,l*=s);var d=document.createElement("canvas");d.width=a,d.height=i,d.style.width=a+"px",d.style.height=i+"px";var h=d.getContext("2d");if(a>0&&i>0){h.clearRect(0,0,a,i),h.globalCompositeOperation="source-over";var f=this.getCachedZSortedEles();if(e.full)h.translate(-n.x1*l,-n.y1*l),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(n.x1*l,n.y1*l);else{var p=t.pan(),g={x:p.x*l,y:p.y*l};l*=t.zoom(),h.translate(g.x,g.y),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(-g.x,-g.y)}e.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=e.bg,h.rect(0,0,a,i),h.fill())}return d},Eh.png=function(e){return Th(e,this.bufferCanvasImage(e),"image/png")},Eh.jpg=function(e){return Th(e,this.bufferCanvasImage(e),"image/jpeg")};var Ch={nodeShapeImpl:function(e,t,n,r,a,i,o,s){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,a,i);case"polygon":return this.drawPolygonPath(t,n,r,a,i,o);case"round-polygon":return this.drawRoundPolygonPath(t,n,r,a,i,o,s);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,n,r,a,i,s);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,n,r,a,i,o,s);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,n,r,a,i,s);case"barrel":return this.drawBarrelPath(t,n,r,a,i)}}},Ph=Bh,Sh=Bh.prototype;function Bh(e){var t=this,n=t.cy.window().document;e.webgl&&(Sh.CANVAS_LAYERS=t.CANVAS_LAYERS=4,console.log("webgl rendering enabled")),t.data={canvases:new Array(Sh.CANVAS_LAYERS),contexts:new Array(Sh.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Sh.CANVAS_LAYERS),bufferCanvases:new Array(Sh.BUFFER_COUNT),bufferContexts:new Array(Sh.CANVAS_LAYERS)};var r="-webkit-tap-highlight-color",a="rgba(0,0,0,0)";t.data.canvasContainer=n.createElement("div");var i=t.data.canvasContainer.style;t.data.canvasContainer.style[r]=a,i.position="relative",i.zIndex="0",i.overflow="hidden";var o=e.cy.container();o.appendChild(t.data.canvasContainer),o.style[r]=a;var s={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};p&&p.userAgent.match(/msie|trident|edge/i)&&(s["-ms-touch-action"]="none",s["touch-action"]="none");for(var l=0;l<Sh.CANVAS_LAYERS;l++){var u=t.data.canvases[l]=n.createElement("canvas"),c=Sh.CANVAS_TYPES[l];t.data.contexts[l]=u.getContext(c),t.data.contexts[l]||nt("Could not create canvas of type "+c),Object.keys(s).forEach(function(e){u.style[e]=s[e]}),u.style.position="absolute",u.setAttribute("data-id","layer"+l),u.style.zIndex=String(Sh.CANVAS_LAYERS-l),t.data.canvasContainer.appendChild(u),t.data.canvasNeedsRedraw[l]=!1}t.data.topCanvas=t.data.canvases[0],t.data.canvases[Sh.NODE].setAttribute("data-id","layer"+Sh.NODE+"-node"),t.data.canvases[Sh.SELECT_BOX].setAttribute("data-id","layer"+Sh.SELECT_BOX+"-selectbox"),t.data.canvases[Sh.DRAG].setAttribute("data-id","layer"+Sh.DRAG+"-drag"),t.data.canvases[Sh.WEBGL]&&t.data.canvases[Sh.WEBGL].setAttribute("data-id","layer"+Sh.WEBGL+"-webgl");for(l=0;l<Sh.BUFFER_COUNT;l++)t.data.bufferCanvases[l]=n.createElement("canvas"),t.data.bufferContexts[l]=t.data.bufferCanvases[l].getContext("2d"),t.data.bufferCanvases[l].style.position="absolute",t.data.bufferCanvases[l].setAttribute("data-id","buffer"+l),t.data.bufferCanvases[l].style.zIndex=String(-l-1),t.data.bufferCanvases[l].style.visibility="hidden";t.pathsEnabled=!0;var d=Qt(),h=function(e){return{x:-e.w/2,y:-e.h/2}},f=function(e){return e[0]._private.nodeKey},g=function(e){return e[0]._private.labelStyleKey},v=function(e){return e[0]._private.sourceLabelStyleKey},y=function(e){return e[0]._private.targetLabelStyleKey},m=function(e,n,r,a,i){return t.drawElement(e,n,r,!1,!1,i)},b=function(e,n,r,a,i){return t.drawElementText(e,n,r,a,"main",i)},x=function(e,n,r,a,i){return t.drawElementText(e,n,r,a,"source",i)},w=function(e,n,r,a,i){return t.drawElementText(e,n,r,a,"target",i)},E=function(e){return e.boundingBox(),e[0]._private.bodyBounds},k=function(e){return e.boundingBox(),e[0]._private.labelBounds.main||d},T=function(e){return e.boundingBox(),e[0]._private.labelBounds.source||d},C=function(e){return e.boundingBox(),e[0]._private.labelBounds.target||d},P=function(e,t){return t},S=function(e){return{x:((t=E(e)).x1+t.x2)/2,y:(t.y1+t.y2)/2};var t},B=function(e,t,n){var r=e?e+"-":"";return{x:t.x+n.pstyle(r+"text-margin-x").pfValue,y:t.y+n.pstyle(r+"text-margin-y").pfValue}},D=function(e,t,n){var r=e[0]._private.rscratch;return{x:r[t],y:r[n]}},_=function(e){return B("",D(e,"labelX","labelY"),e)},A=function(e){return B("source",D(e,"sourceLabelX","sourceLabelY"),e)},M=function(e){return B("target",D(e,"targetLabelX","targetLabelY"),e)},R=function(e){return h(E(e))},I=function(e){return h(T(e))},N=function(e){return h(C(e))},L=function(e){var t=k(e),n=h(k(e));if(e.isNode()){switch(e.pstyle("text-halign").value){case"left":n.x=-t.w-(t.leftPad||0);break;case"right":n.x=-(t.rightPad||0)}switch(e.pstyle("text-valign").value){case"top":n.y=-t.h-(t.topPad||0);break;case"bottom":n.y=-(t.botPad||0)}}return n},z=t.data.eleTxrCache=new sd(t,{getKey:f,doesEleInvalidateKey:function(e){var t=e[0]._private;return!(t.oldBackgroundTimestamp===t.backgroundTimestamp)},drawElement:m,getBoundingBox:E,getRotationPoint:S,getRotationOffset:R,allowEdgeTxrCaching:!1,allowParentTxrCaching:!1}),O=t.data.lblTxrCache=new sd(t,{getKey:g,drawElement:b,getBoundingBox:k,getRotationPoint:_,getRotationOffset:L,isVisible:P}),V=t.data.slbTxrCache=new sd(t,{getKey:v,drawElement:x,getBoundingBox:T,getRotationPoint:A,getRotationOffset:I,isVisible:P}),F=t.data.tlbTxrCache=new sd(t,{getKey:y,drawElement:w,getBoundingBox:C,getRotationPoint:M,getRotationOffset:N,isVisible:P}),j=t.data.lyrTxrCache=new ud(t);t.onUpdateEleCalcs(function(e,t){z.invalidateElements(t),O.invalidateElements(t),V.invalidateElements(t),F.invalidateElements(t),j.invalidateElements(t);for(var n=0;n<t.length;n++){var r=t[n]._private;r.oldBackgroundTimestamp=r.backgroundTimestamp}});var X=function(e){for(var t=0;t<e.length;t++)j.enqueueElementRefinement(e[t].ele)};z.onDequeue(X),O.onDequeue(X),V.onDequeue(X),F.onDequeue(X),e.webgl&&t.initWebgl(e,{getStyleKey:f,getLabelKey:g,getSourceLabelKey:v,getTargetLabelKey:y,drawElement:m,drawLabel:b,drawSourceLabel:x,drawTargetLabel:w,getElementBox:E,getLabelBox:k,getSourceLabelBox:T,getTargetLabelBox:C,getElementRotationPoint:S,getElementRotationOffset:R,getLabelRotationPoint:_,getSourceLabelRotationPoint:A,getTargetLabelRotationPoint:M,getLabelRotationOffset:L,getSourceLabelRotationOffset:I,getTargetLabelRotationOffset:N})}Sh.CANVAS_LAYERS=3,Sh.SELECT_BOX=0,Sh.DRAG=1,Sh.NODE=2,Sh.WEBGL=3,Sh.CANVAS_TYPES=["2d","2d","2d","webgl2"],Sh.BUFFER_COUNT=3,Sh.TEXTURE_BUFFER=0,Sh.MOTIONBLUR_BUFFER_NODE=1,Sh.MOTIONBLUR_BUFFER_DRAG=2,Sh.redrawHint=function(e,t){var n=this;switch(e){case"eles":n.data.canvasNeedsRedraw[Sh.NODE]=t;break;case"drag":n.data.canvasNeedsRedraw[Sh.DRAG]=t;break;case"select":n.data.canvasNeedsRedraw[Sh.SELECT_BOX]=t;break;case"gc":n.data.gc=!0}};var Dh="undefined"!=typeof Path2D;Sh.path2dEnabled=function(e){if(void 0===e)return this.pathsEnabled;this.pathsEnabled=!!e},Sh.usePaths=function(){return Dh&&this.pathsEnabled},Sh.setImgSmoothing=function(e,t){null!=e.imageSmoothingEnabled?e.imageSmoothingEnabled=t:(e.webkitImageSmoothingEnabled=t,e.mozImageSmoothingEnabled=t,e.msImageSmoothingEnabled=t)},Sh.getImgSmoothing=function(e){return null!=e.imageSmoothingEnabled?e.imageSmoothingEnabled:e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled},Sh.makeOffscreenCanvas=function(e,t){var n;"undefined"!==("undefined"==typeof OffscreenCanvas?"undefined":d(OffscreenCanvas))?n=new OffscreenCanvas(e,t):((n=this.cy.window().document.createElement("canvas")).width=e,n.height=t);return n},[pd,xd,Sd,Dd,_d,Md,Nd,lh,gh,Eh,Ch].forEach(function(e){me(Sh,e)});var _h=[{type:"layout",extensions:rc},{type:"renderer",extensions:[{name:"null",impl:ac},{name:"base",impl:Jc},{name:"canvas",impl:Ph}]}],Ah={},Mh={};function Rh(e,t,n){var r=n,a=function(n){at("Can not register `"+t+"` for `"+e+"` since `"+n+"` already exists in the prototype and can not be overridden")};if("core"===e){if(vu.prototype[t])return a(t);vu.prototype[t]=n}else if("collection"===e){if(Ml.prototype[t])return a(t);Ml.prototype[t]=n}else if("layout"===e){for(var i=function(e){this.options=e,n.call(this,e),$(this._private)||(this._private={}),this._private.cy=e.cy,this._private.listeners=[],this.createEmitter()},o=i.prototype=Object.create(n.prototype),s=[],l=0;l<s.length;l++){var u=s[l];o[u]=o[u]||function(){return this}}o.start&&!o.run?o.run=function(){return this.start(),this}:!o.start&&o.run&&(o.start=function(){return this.run(),this});var c=n.prototype.stop;o.stop=function(){var e=this.options;if(e&&e.animate){var t=this.animations;if(t)for(var n=0;n<t.length;n++)t[n].stop()}return c?c.call(this):this.emit("layoutstop"),this},o.destroy||(o.destroy=function(){return this}),o.cy=function(){return this._private.cy};var d=function(e){return e._private.cy},h={addEventFields:function(e,t){t.layout=e,t.cy=d(e),t.target=e},bubble:function(){return!0},parent:function(e){return d(e)}};me(o,{createEmitter:function(){return this._private.emitter=new Zs(h,this),this},emitter:function(){return this._private.emitter},on:function(e,t){return this.emitter().on(e,t),this},one:function(e,t){return this.emitter().one(e,t),this},once:function(e,t){return this.emitter().one(e,t),this},removeListener:function(e,t){return this.emitter().removeListener(e,t),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},emit:function(e,t){return this.emitter().emit(e,t),this}}),vo.eventAliasesOn(o),r=i}else if("renderer"===e&&"null"!==t&&"base"!==t){var f=Ih("renderer","base"),p=f.prototype,g=n,v=n.prototype,y=function(){f.apply(this,arguments),g.apply(this,arguments)},m=y.prototype;for(var b in p){var x=p[b];if(null!=v[b])return a(b);m[b]=x}for(var w in v)m[w]=v[w];p.clientFunctions.forEach(function(e){m[e]=m[e]||function(){nt("Renderer does not implement `renderer."+e+"()` on its prototype")}}),r=y}else if("__proto__"===e||"constructor"===e||"prototype"===e)return nt(e+" is an illegal type to be registered, possibly lead to prototype pollutions");return we({map:Ah,keys:[e,t],value:r})}function Ih(e,t){return Ee({map:Ah,keys:[e,t]})}function Nh(e,t,n,r,a){return we({map:Mh,keys:[e,t,n,r],value:a})}function Lh(e,t,n,r){return Ee({map:Mh,keys:[e,t,n,r]})}var zh=function(){return 2===arguments.length?Ih.apply(null,arguments):3===arguments.length?Rh.apply(null,arguments):4===arguments.length?Lh.apply(null,arguments):5===arguments.length?Nh.apply(null,arguments):void nt("Invalid extension access syntax")};vu.prototype.extension=zh,_h.forEach(function(e){e.extensions.forEach(function(t){Rh(e.type,t.name,t.impl)})});var Oh=function(){if(!(this instanceof Oh))return new Oh;this.length=0},Vh=Oh.prototype;Vh.instanceString=function(){return"stylesheet"},Vh.selector=function(e){return this[this.length++]={selector:e,properties:[]},this},Vh.css=function(e,t){var n=this.length-1;if(K(e))this[n].properties.push({name:e,value:t});else if($(e))for(var r=e,a=Object.keys(r),i=0;i<a.length;i++){var o=a[i],s=r[o];if(null!=s){var l=du.properties[o]||du.properties[ue(o)];if(null!=l){var u=l.name,c=s;this[n].properties.push({name:u,value:c})}}}return this},Vh.style=Vh.css,Vh.generateStyle=function(e){var t=new du(e);return this.appendToStyle(t)},Vh.appendToStyle=function(e){for(var t=0;t<this.length;t++){var n=this[t],r=n.selector,a=n.properties;e.selector(r);for(var i=0;i<a.length;i++){var o=a[i];e.css(o.name,o.value)}}return e};var Fh=function(e){return void 0===e&&(e={}),$(e)?new vu(e):K(e)?zh.apply(zh,arguments):void 0};Fh.use=function(e){var t=Array.prototype.slice.call(arguments,1);return t.unshift(Fh),e.apply(null,t),this},Fh.warnings=function(e){return rt(e)},Fh.version="3.32.0",Fh.stylesheet=Fh.Stylesheet=Oh}}]); \ No newline at end of file diff --git a/assets/js/8090.2e2b6ff8.js.LICENSE.txt b/assets/js/8090.2e2b6ff8.js.LICENSE.txt new file mode 100644 index 0000000000..a9f6f12447 --- /dev/null +++ b/assets/js/8090.2e2b6ff8.js.LICENSE.txt @@ -0,0 +1,9 @@ +/*! +Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable +Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) +Licensed under The MIT License (http://opensource.org/licenses/MIT) +*/ + +/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */ + +/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ diff --git a/assets/js/8134.afb4adcb.js b/assets/js/8134.afb4adcb.js new file mode 100644 index 0000000000..5092742e88 --- /dev/null +++ b/assets/js/8134.afb4adcb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8134],{18134:(e,c,k)=>{k.d(c,{createInfoServices:()=>s.v});var s=k(5236);k(34939)}}]); \ No newline at end of file diff --git a/assets/js/8297.828b60c2.js b/assets/js/8297.828b60c2.js new file mode 100644 index 0000000000..869930dcac --- /dev/null +++ b/assets/js/8297.828b60c2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8297],{7391:(t,e,a)=>{a.d(e,{CP:()=>l,HT:()=>d,PB:()=>h,aC:()=>c,lC:()=>n,m:()=>o,tk:()=>i});var s=a(27293),r=a(41407),i=(0,s.K2)((t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),e.name&&a.attr("name",e.name),e.rx&&a.attr("rx",e.rx),e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const s in e.attrs)a.attr(s,e.attrs[s]);return e.class&&a.attr("class",e.class),a},"drawRect"),n=(0,s.K2)((t,e)=>{const a={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};i(t,a).lower()},"drawBackgroundRect"),o=(0,s.K2)((t,e)=>{const a=e.text.replace(s.H1," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.attr("class","legend"),r.style("text-anchor",e.anchor),e.class&&r.attr("class",e.class);const i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(a),r},"drawText"),c=(0,s.K2)((t,e,a,s)=>{const i=t.append("image");i.attr("x",e),i.attr("y",a);const n=(0,r.J)(s);i.attr("xlink:href",n)},"drawImage"),l=(0,s.K2)((t,e,a,s)=>{const i=t.append("use");i.attr("x",e),i.attr("y",a);const n=(0,r.J)(s);i.attr("xlink:href",`#${n}`)},"drawEmbeddedImage"),h=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),d=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")},28844:(t,e,a)=>{a.d(e,{m:()=>r});var s=a(27293),r=class{constructor(t){this.init=t,this.records=this.init()}static{(0,s.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},88297:(t,e,a)=>{a.d(e,{diagram:()=>mt});var s=a(7391),r=a(28844),i=a(47794),n=a(27293),o=a(61274),c=a(41407),l=function(){var t=(0,n.K2)(function(t,e,a,s){for(a=a||{},s=t.length;s--;a[t[s]]=e);return a},"o"),e=[1,2],a=[1,3],s=[1,4],r=[2,4],i=[1,9],o=[1,11],c=[1,13],l=[1,14],h=[1,16],d=[1,17],p=[1,18],g=[1,24],u=[1,25],x=[1,26],y=[1,27],m=[1,28],b=[1,29],T=[1,30],E=[1,31],f=[1,32],w=[1,33],I=[1,34],L=[1,35],P=[1,36],_=[1,37],k=[1,38],A=[1,39],N=[1,41],v=[1,42],M=[1,43],D=[1,44],O=[1,45],S=[1,46],R=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],Y=[4,5,16,50,52,53],K=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],C=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],B=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],$=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],V=[68,69,70],F=[1,122],W={trace:(0,n.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,BIDIRECTIONAL_SOLID_ARROW:74,DOTTED_ARROW:75,BIDIRECTIONAL_DOTTED_ARROW:76,SOLID_CROSS:77,DOTTED_CROSS:78,SOLID_POINT:79,DOTTED_POINT:80,TXT:81,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"BIDIRECTIONAL_SOLID_ARROW",75:"DOTTED_ARROW",76:"BIDIRECTIONAL_DOTTED_ARROW",77:"SOLID_CROSS",78:"DOTTED_CROSS",79:"SOLID_POINT",80:"DOTTED_POINT",81:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:(0,n.K2)(function(t,e,a,s,r,i,n){var o=i.length-1;switch(r){case 3:return s.apply(i[o]),i[o];case 4:case 9:case 8:case 13:this.$=[];break;case 5:case 10:i[o-1].push(i[o]),this.$=i[o-1];break;case 6:case 7:case 11:case 12:case 62:this.$=i[o];break;case 15:i[o].type="createParticipant",this.$=i[o];break;case 16:i[o-1].unshift({type:"boxStart",boxData:s.parseBoxData(i[o-2])}),i[o-1].push({type:"boxEnd",boxText:i[o-2]}),this.$=i[o-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-2]),sequenceIndexStep:Number(i[o-1]),sequenceVisible:!0,signalType:s.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:s.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:s.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:s.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:s.LINETYPE.ACTIVE_START,actor:i[o-1].actor};break;case 23:this.$={type:"activeEnd",signalType:s.LINETYPE.ACTIVE_END,actor:i[o-1].actor};break;case 29:s.setDiagramTitle(i[o].substring(6)),this.$=i[o].substring(6);break;case 30:s.setDiagramTitle(i[o].substring(7)),this.$=i[o].substring(7);break;case 31:this.$=i[o].trim(),s.setAccTitle(this.$);break;case 32:case 33:this.$=i[o].trim(),s.setAccDescription(this.$);break;case 34:i[o-1].unshift({type:"loopStart",loopText:s.parseMessage(i[o-2]),signalType:s.LINETYPE.LOOP_START}),i[o-1].push({type:"loopEnd",loopText:i[o-2],signalType:s.LINETYPE.LOOP_END}),this.$=i[o-1];break;case 35:i[o-1].unshift({type:"rectStart",color:s.parseMessage(i[o-2]),signalType:s.LINETYPE.RECT_START}),i[o-1].push({type:"rectEnd",color:s.parseMessage(i[o-2]),signalType:s.LINETYPE.RECT_END}),this.$=i[o-1];break;case 36:i[o-1].unshift({type:"optStart",optText:s.parseMessage(i[o-2]),signalType:s.LINETYPE.OPT_START}),i[o-1].push({type:"optEnd",optText:s.parseMessage(i[o-2]),signalType:s.LINETYPE.OPT_END}),this.$=i[o-1];break;case 37:i[o-1].unshift({type:"altStart",altText:s.parseMessage(i[o-2]),signalType:s.LINETYPE.ALT_START}),i[o-1].push({type:"altEnd",signalType:s.LINETYPE.ALT_END}),this.$=i[o-1];break;case 38:i[o-1].unshift({type:"parStart",parText:s.parseMessage(i[o-2]),signalType:s.LINETYPE.PAR_START}),i[o-1].push({type:"parEnd",signalType:s.LINETYPE.PAR_END}),this.$=i[o-1];break;case 39:i[o-1].unshift({type:"parStart",parText:s.parseMessage(i[o-2]),signalType:s.LINETYPE.PAR_OVER_START}),i[o-1].push({type:"parEnd",signalType:s.LINETYPE.PAR_END}),this.$=i[o-1];break;case 40:i[o-1].unshift({type:"criticalStart",criticalText:s.parseMessage(i[o-2]),signalType:s.LINETYPE.CRITICAL_START}),i[o-1].push({type:"criticalEnd",signalType:s.LINETYPE.CRITICAL_END}),this.$=i[o-1];break;case 41:i[o-1].unshift({type:"breakStart",breakText:s.parseMessage(i[o-2]),signalType:s.LINETYPE.BREAK_START}),i[o-1].push({type:"breakEnd",optText:s.parseMessage(i[o-2]),signalType:s.LINETYPE.BREAK_END}),this.$=i[o-1];break;case 43:this.$=i[o-3].concat([{type:"option",optionText:s.parseMessage(i[o-1]),signalType:s.LINETYPE.CRITICAL_OPTION},i[o]]);break;case 45:this.$=i[o-3].concat([{type:"and",parText:s.parseMessage(i[o-1]),signalType:s.LINETYPE.PAR_AND},i[o]]);break;case 47:this.$=i[o-3].concat([{type:"else",altText:s.parseMessage(i[o-1]),signalType:s.LINETYPE.ALT_ELSE},i[o]]);break;case 48:i[o-3].draw="participant",i[o-3].type="addParticipant",i[o-3].description=s.parseMessage(i[o-1]),this.$=i[o-3];break;case 49:i[o-1].draw="participant",i[o-1].type="addParticipant",this.$=i[o-1];break;case 50:i[o-3].draw="actor",i[o-3].type="addParticipant",i[o-3].description=s.parseMessage(i[o-1]),this.$=i[o-3];break;case 51:i[o-1].draw="actor",i[o-1].type="addParticipant",this.$=i[o-1];break;case 52:i[o-1].type="destroyParticipant",this.$=i[o-1];break;case 53:this.$=[i[o-1],{type:"addNote",placement:i[o-2],actor:i[o-1].actor,text:i[o]}];break;case 54:i[o-2]=[].concat(i[o-1],i[o-1]).slice(0,2),i[o-2][0]=i[o-2][0].actor,i[o-2][1]=i[o-2][1].actor,this.$=[i[o-1],{type:"addNote",placement:s.PLACEMENT.OVER,actor:i[o-2].slice(0,2),text:i[o]}];break;case 55:this.$=[i[o-1],{type:"addLinks",actor:i[o-1].actor,text:i[o]}];break;case 56:this.$=[i[o-1],{type:"addALink",actor:i[o-1].actor,text:i[o]}];break;case 57:this.$=[i[o-1],{type:"addProperties",actor:i[o-1].actor,text:i[o]}];break;case 58:this.$=[i[o-1],{type:"addDetails",actor:i[o-1].actor,text:i[o]}];break;case 61:this.$=[i[o-2],i[o]];break;case 63:this.$=s.PLACEMENT.LEFTOF;break;case 64:this.$=s.PLACEMENT.RIGHTOF;break;case 65:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o],activate:!0},{type:"activeStart",signalType:s.LINETYPE.ACTIVE_START,actor:i[o-1].actor}];break;case 66:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o]},{type:"activeEnd",signalType:s.LINETYPE.ACTIVE_END,actor:i[o-4].actor}];break;case 67:this.$=[i[o-3],i[o-1],{type:"addMessage",from:i[o-3].actor,to:i[o-1].actor,signalType:i[o-2],msg:i[o]}];break;case 68:this.$={type:"addParticipant",actor:i[o]};break;case 69:this.$=s.LINETYPE.SOLID_OPEN;break;case 70:this.$=s.LINETYPE.DOTTED_OPEN;break;case 71:this.$=s.LINETYPE.SOLID;break;case 72:this.$=s.LINETYPE.BIDIRECTIONAL_SOLID;break;case 73:this.$=s.LINETYPE.DOTTED;break;case 74:this.$=s.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 75:this.$=s.LINETYPE.SOLID_CROSS;break;case 76:this.$=s.LINETYPE.DOTTED_CROSS;break;case 77:this.$=s.LINETYPE.SOLID_POINT;break;case 78:this.$=s.LINETYPE.DOTTED_POINT;break;case 79:this.$=s.parseMessage(i[o].trim().substring(1))}},"anonymous"),table:[{3:1,4:e,5:a,6:s},{1:[3]},{3:5,4:e,5:a,6:s},{3:6,4:e,5:a,6:s},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],r,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:i,5:o,8:8,9:10,12:12,13:c,14:l,17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:E,39:f,41:w,43:I,44:L,46:P,50:_,52:k,53:A,54:N,59:v,60:M,61:D,62:O,70:S},t(R,[2,5]),{9:47,12:12,13:c,14:l,17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:E,39:f,41:w,43:I,44:L,46:P,50:_,52:k,53:A,54:N,59:v,60:M,61:D,62:O,70:S},t(R,[2,7]),t(R,[2,8]),t(R,[2,14]),{12:48,50:_,52:k,53:A},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:S},{22:55,70:S},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(R,[2,29]),t(R,[2,30]),{32:[1,61]},{34:[1,62]},t(R,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:S},{22:72,70:S},{22:73,70:S},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82],79:[1,83],80:[1,84]},{55:85,57:[1,86],65:[1,87],66:[1,88]},{22:89,70:S},{22:90,70:S},{22:91,70:S},{22:92,70:S},t([5,51,64,71,72,73,74,75,76,77,78,79,80,81],[2,68]),t(R,[2,6]),t(R,[2,15]),t(Y,[2,9],{10:93}),t(R,[2,17]),{5:[1,95],19:[1,94]},{5:[1,96]},t(R,[2,21]),{5:[1,97]},{5:[1,98]},t(R,[2,24]),t(R,[2,25]),t(R,[2,26]),t(R,[2,27]),t(R,[2,28]),t(R,[2,31]),t(R,[2,32]),t(K,r,{7:99}),t(K,r,{7:100}),t(K,r,{7:101}),t(C,r,{40:102,7:103}),t(B,r,{42:104,7:105}),t(B,r,{7:105,42:106}),t($,r,{45:107,7:108}),t(K,r,{7:109}),{5:[1,111],51:[1,110]},{5:[1,113],51:[1,112]},{5:[1,114]},{22:117,68:[1,115],69:[1,116],70:S},t(V,[2,69]),t(V,[2,70]),t(V,[2,71]),t(V,[2,72]),t(V,[2,73]),t(V,[2,74]),t(V,[2,75]),t(V,[2,76]),t(V,[2,77]),t(V,[2,78]),{22:118,70:S},{22:120,58:119,70:S},{70:[2,63]},{70:[2,64]},{56:121,81:F},{56:123,81:F},{56:124,81:F},{56:125,81:F},{4:[1,128],5:[1,130],11:127,12:129,16:[1,126],50:_,52:k,53:A},{5:[1,131]},t(R,[2,19]),t(R,[2,20]),t(R,[2,22]),t(R,[2,23]),{4:i,5:o,8:8,9:10,12:12,13:c,14:l,16:[1,132],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:E,39:f,41:w,43:I,44:L,46:P,50:_,52:k,53:A,54:N,59:v,60:M,61:D,62:O,70:S},{4:i,5:o,8:8,9:10,12:12,13:c,14:l,16:[1,133],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:E,39:f,41:w,43:I,44:L,46:P,50:_,52:k,53:A,54:N,59:v,60:M,61:D,62:O,70:S},{4:i,5:o,8:8,9:10,12:12,13:c,14:l,16:[1,134],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:E,39:f,41:w,43:I,44:L,46:P,50:_,52:k,53:A,54:N,59:v,60:M,61:D,62:O,70:S},{16:[1,135]},{4:i,5:o,8:8,9:10,12:12,13:c,14:l,16:[2,46],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:E,39:f,41:w,43:I,44:L,46:P,49:[1,136],50:_,52:k,53:A,54:N,59:v,60:M,61:D,62:O,70:S},{16:[1,137]},{4:i,5:o,8:8,9:10,12:12,13:c,14:l,16:[2,44],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:E,39:f,41:w,43:I,44:L,46:P,48:[1,138],50:_,52:k,53:A,54:N,59:v,60:M,61:D,62:O,70:S},{16:[1,139]},{16:[1,140]},{4:i,5:o,8:8,9:10,12:12,13:c,14:l,16:[2,42],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:E,39:f,41:w,43:I,44:L,46:P,47:[1,141],50:_,52:k,53:A,54:N,59:v,60:M,61:D,62:O,70:S},{4:i,5:o,8:8,9:10,12:12,13:c,14:l,16:[1,142],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:E,39:f,41:w,43:I,44:L,46:P,50:_,52:k,53:A,54:N,59:v,60:M,61:D,62:O,70:S},{15:[1,143]},t(R,[2,49]),{15:[1,144]},t(R,[2,51]),t(R,[2,52]),{22:145,70:S},{22:146,70:S},{56:147,81:F},{56:148,81:F},{56:149,81:F},{64:[1,150],81:[2,62]},{5:[2,55]},{5:[2,79]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(R,[2,16]),t(Y,[2,10]),{12:151,50:_,52:k,53:A},t(Y,[2,12]),t(Y,[2,13]),t(R,[2,18]),t(R,[2,34]),t(R,[2,35]),t(R,[2,36]),t(R,[2,37]),{15:[1,152]},t(R,[2,38]),{15:[1,153]},t(R,[2,39]),t(R,[2,40]),{15:[1,154]},t(R,[2,41]),{5:[1,155]},{5:[1,156]},{56:157,81:F},{56:158,81:F},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:159,70:S},t(Y,[2,11]),t(C,r,{7:103,40:160}),t(B,r,{7:105,42:161}),t($,r,{7:108,45:162}),t(R,[2,48]),t(R,[2,50]),{5:[2,65]},{5:[2,66]},{81:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],87:[2,63],88:[2,64],121:[2,55],122:[2,79],123:[2,56],124:[2,57],125:[2,58],147:[2,67],148:[2,53],149:[2,54],157:[2,65],158:[2,66],159:[2,61],160:[2,47],161:[2,45],162:[2,43]},parseError:(0,n.K2)(function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)},"parseError"),parse:(0,n.K2)(function(t){var e=this,a=[0],s=[],r=[null],i=[],o=this.table,c="",l=0,h=0,d=0,p=i.slice.call(arguments,1),g=Object.create(this.lexer),u={yy:{}};for(var x in this.yy)Object.prototype.hasOwnProperty.call(this.yy,x)&&(u.yy[x]=this.yy[x]);g.setInput(t,u.yy),u.yy.lexer=g,u.yy.parser=this,void 0===g.yylloc&&(g.yylloc={});var y=g.yylloc;i.push(y);var m=g.options&&g.options.ranges;function b(){var t;return"number"!=typeof(t=s.pop()||g.lex()||1)&&(t instanceof Array&&(t=(s=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof u.yy.parseError?this.parseError=u.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,n.K2)(function(t){a.length=a.length-2*t,r.length=r.length-t,i.length=i.length-t},"popStack"),(0,n.K2)(b,"lex");for(var T,E,f,w,I,L,P,_,k,A={};;){if(f=a[a.length-1],this.defaultActions[f]?w=this.defaultActions[f]:(null==T&&(T=b()),w=o[f]&&o[f][T]),void 0===w||!w.length||!w[0]){var N="";for(L in k=[],o[f])this.terminals_[L]&&L>2&&k.push("'"+this.terminals_[L]+"'");N=g.showPosition?"Parse error on line "+(l+1)+":\n"+g.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[T]||T)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==T?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(N,{text:g.match,token:this.terminals_[T]||T,line:g.yylineno,loc:y,expected:k})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+f+", token: "+T);switch(w[0]){case 1:a.push(T),r.push(g.yytext),i.push(g.yylloc),a.push(w[1]),T=null,E?(T=E,E=null):(h=g.yyleng,c=g.yytext,l=g.yylineno,y=g.yylloc,d>0&&d--);break;case 2:if(P=this.productions_[w[1]][1],A.$=r[r.length-P],A._$={first_line:i[i.length-(P||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(P||1)].first_column,last_column:i[i.length-1].last_column},m&&(A._$.range=[i[i.length-(P||1)].range[0],i[i.length-1].range[1]]),void 0!==(I=this.performAction.apply(A,[c,h,l,u.yy,w[1],r,i].concat(p))))return I;P&&(a=a.slice(0,-1*P*2),r=r.slice(0,-1*P),i=i.slice(0,-1*P)),a.push(this.productions_[w[1]][0]),r.push(A.$),i.push(A._$),_=o[a[a.length-2]][a[a.length-1]],a.push(_);break;case 3:return!0}}return!0},"parse")},q=function(){return{EOF:1,parseError:(0,n.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,n.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,n.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,n.K2)(function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===s.length?this.yylloc.first_column:0)+s[s.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,n.K2)(function(){return this._more=!0,this},"more"),reject:(0,n.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,n.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,n.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,n.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,n.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,n.K2)(function(t,e){var a,s,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(s=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var i in r)this[i]=r[i];return!1}return!1},"test_match"),next:(0,n.K2)(function(){if(this.done)return this.EOF;var t,e,a,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),i=0;i<r.length;i++)if((a=this._input.match(this.rules[r[i]]))&&(!e||a[0].length>e[0].length)){if(e=a,s=i,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,r[i])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[s]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,n.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,n.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,n.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,n.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,n.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,n.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,n.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,n.K2)(function(t,e,a,s){switch(a){case 0:case 51:case 67:return 5;case 1:case 2:case 3:case 4:case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;case 8:return this.begin("ID"),50;case 9:return this.begin("ID"),52;case 10:return 13;case 11:return this.begin("ID"),53;case 12:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),70;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;case 14:return this.popState(),this.popState(),5;case 15:return this.begin("LINE"),36;case 16:return this.begin("LINE"),37;case 17:return this.begin("LINE"),38;case 18:return this.begin("LINE"),39;case 19:return this.begin("LINE"),49;case 20:return this.begin("LINE"),41;case 21:return this.begin("LINE"),43;case 22:return this.begin("LINE"),48;case 23:return this.begin("LINE"),44;case 24:return this.begin("LINE"),47;case 25:return this.begin("LINE"),46;case 26:return this.popState(),15;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;case 37:return this.begin("ID"),23;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;case 41:return this.popState(),"acc_title_value";case 42:return this.begin("acc_descr"),33;case 43:return this.popState(),"acc_descr_value";case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 52:return e.yytext=e.yytext.trim(),70;case 53:return 73;case 54:return 74;case 55:return 75;case 56:return 76;case 57:return 71;case 58:return 72;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 80;case 63:case 64:return 81;case 65:return 68;case 66:return 69;case 68:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\<->\->:\n,;]+?([\-]*[^\<->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\<->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\<->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68],inclusive:!0}}}}();function z(){this.yy={}}return W.lexer=q,(0,n.K2)(z,"Parser"),z.prototype=W,W.Parser=z,new z}();l.parser=l;var h=l,d={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},p={FILLED:0,OPEN:1},g={LEFTOF:0,RIGHTOF:1,OVER:2},u=class{constructor(){this.state=new r.m(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),this.setAccTitle=n.SV,this.setAccDescription=n.EI,this.setDiagramTitle=n.ke,this.getAccTitle=n.iN,this.getAccDescription=n.m7,this.getDiagramTitle=n.ab,this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap((0,n.D7)().wrap),this.LINETYPE=d,this.ARROWTYPE=p,this.PLACEMENT=g}static{(0,n.K2)(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,e,a,s){let r=this.state.records.currentBox;const i=this.state.records.actors.get(t);if(i){if(this.state.records.currentBox&&i.box&&this.state.records.currentBox!==i.box)throw new Error(`A same participant should only be defined in one Box: ${i.name} can't be in '${i.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(r=i.box?i.box:this.state.records.currentBox,i.box=r,i&&e===i.name&&null==a)return}if(null==a?.text&&(a={text:e,type:s}),null!=s&&null!=a.text||(a={text:e,type:s}),this.state.records.actors.set(t,{box:r,name:e,description:a.text,wrap:a.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:s??"participant"}),this.state.records.prevActor){const e=this.state.records.actors.get(this.state.records.prevActor);e&&(e.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let e,a=0;if(!t)return 0;for(e=0;e<this.state.records.messages.length;e++)this.state.records.messages[e].type===this.LINETYPE.ACTIVE_START&&this.state.records.messages[e].from===t&&a++,this.state.records.messages[e].type===this.LINETYPE.ACTIVE_END&&this.state.records.messages[e].from===t&&a--;return a}addMessage(t,e,a,s){this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:e,message:a.text,wrap:a.wrap??this.autoWrap(),answer:s})}addSignal(t,e,a,s,r=!1){if(s===this.LINETYPE.ACTIVE_END){if(this.activationCount(t??"")<1){const e=new Error("Trying to inactivate an inactive participant ("+t+")");throw e.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:e,message:a?.text??"",wrap:a?.wrap??this.autoWrap(),type:s,activate:r}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(void 0===t)return{};t=t.trim();const e=null!==/^:?wrap:/.exec(t)||null===/^:?nowrap:/.exec(t)&&void 0;return{cleanedText:(void 0===e?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:e}}autoWrap(){return void 0!==this.state.records.wrapEnabled?this.state.records.wrapEnabled:(0,n.D7)().sequence?.wrap??!1}clear(){this.state.reset(),(0,n.IU)()}parseMessage(t){const e=t.trim(),{wrap:a,cleanedText:s}=this.extractWrap(e),r={text:s,wrap:a};return n.Rm.debug(`parseMessage: ${JSON.stringify(r)}`),r}parseBoxData(t){const e=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t);let a=e?.[1]?e[1].trim():"transparent",s=e?.[2]?e[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",a)||(a="transparent",s=t.trim());else{const e=(new Option).style;e.color=a,e.color!==a&&(a="transparent",s=t.trim())}const{wrap:r,cleanedText:i}=this.extractWrap(s);return{text:i?(0,n.jZ)(i,(0,n.D7)()):void 0,color:a,wrap:r}}addNote(t,e,a){const s={actor:t,placement:e,message:a.text,wrap:a.wrap??this.autoWrap()},r=[].concat(t,t);this.state.records.notes.push(s),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:r[0],to:r[1],message:a.text,wrap:a.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:e})}addLinks(t,e){const a=this.getActor(t);try{let t=(0,n.jZ)(e.text,(0,n.D7)());t=t.replace(/=/g,"="),t=t.replace(/&/g,"&");const s=JSON.parse(t);this.insertLinks(a,s)}catch(s){n.Rm.error("error while parsing actor link text",s)}}addALink(t,e){const a=this.getActor(t);try{const t={};let s=(0,n.jZ)(e.text,(0,n.D7)());const r=s.indexOf("@");s=s.replace(/=/g,"="),s=s.replace(/&/g,"&");const i=s.slice(0,r-1).trim(),o=s.slice(r+1).trim();t[i]=o,this.insertLinks(a,t)}catch(s){n.Rm.error("error while parsing actor link text",s)}}insertLinks(t,e){if(null==t.links)t.links=e;else for(const a in e)t.links[a]=e[a]}addProperties(t,e){const a=this.getActor(t);try{const t=(0,n.jZ)(e.text,(0,n.D7)()),s=JSON.parse(t);this.insertProperties(a,s)}catch(s){n.Rm.error("error while parsing actor properties text",s)}}insertProperties(t,e){if(null==t.properties)t.properties=e;else for(const a in e)t.properties[a]=e[a]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,e){const a=this.getActor(t),s=document.getElementById(e.text);try{const t=s.innerHTML,e=JSON.parse(t);e.properties&&this.insertProperties(a,e.properties),e.links&&this.insertLinks(a,e.links)}catch(r){n.Rm.error("error while parsing actor details text",r)}}getActorProperty(t,e){if(void 0!==t?.properties)return t.properties[e]}apply(t){if(Array.isArray(t))t.forEach(t=>{this.apply(t)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":(0,n.SV)(t.text);break;case"parStart":case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType)}}getConfig(){return(0,n.D7)().sequence}},x=(0,n.K2)(t=>`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n`,"getStyles"),y="actor-top",m="actor-bottom",b="actor-man",T=(0,n.K2)(function(t,e){return(0,s.tk)(t,e)},"drawRect"),E=(0,n.K2)(function(t,e,a,s,r){if(void 0===e.links||null===e.links||0===Object.keys(e.links).length)return{height:0,width:0};const i=e.links,n=e.actorCnt,o=e.rectData;var l="none";r&&(l="block !important");const h=t.append("g");h.attr("id","actor"+n+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",l);var d="";void 0!==o.class&&(d=" "+o.class);let p=o.width>a?o.width:a;const g=h.append("rect");if(g.attr("class","actorPopupMenuPanel"+d),g.attr("x",o.x),g.attr("y",o.height),g.attr("fill",o.fill),g.attr("stroke",o.stroke),g.attr("width",p),g.attr("height",o.height),g.attr("rx",o.rx),g.attr("ry",o.ry),null!=i){var u=20;for(let t in i){var x=h.append("a"),y=(0,c.J)(i[t]);x.attr("xlink:href",y),x.attr("target","_blank"),z(s)(t,x,o.x+10,o.height+u,p,20,{class:"actor"},s),u+=30}}return g.attr("height",u),{height:o.height+u,width:p}},"drawPopup"),f=(0,n.K2)(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),w=(0,n.K2)(async function(t,e,a=null){let s=t.append("foreignObject");const r=await(0,n.VJ)(e.text,(0,n.zj)()),i=s.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(r).node().getBoundingClientRect();if(s.attr("height",Math.round(i.height)).attr("width",Math.round(i.width)),"noteText"===e.class){const a=t.node().firstChild;a.setAttribute("height",i.height+2*e.textMargin);const r=a.getBBox();s.attr("x",Math.round(r.x+r.width/2-i.width/2)).attr("y",Math.round(r.y+r.height/2-i.height/2))}else if(a){let{startx:t,stopx:r,starty:n}=a;if(t>r){const e=t;t=r,r=e}s.attr("x",Math.round(t+Math.abs(t-r)/2-i.width/2)),"loopText"===e.class?s.attr("y",Math.round(n)):s.attr("y",Math.round(n-i.height))}return[s]},"drawKatex"),I=(0,n.K2)(function(t,e){let a=0,s=0;const r=e.text.split(n.Y2.lineBreakRegex),[o,c]=(0,i.I5)(e.fontSize);let l=[],h=0,d=(0,n.K2)(()=>e.y,"yfunc");if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":d=(0,n.K2)(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":d=(0,n.K2)(()=>Math.round(e.y+(a+s+e.textMargin)/2),"yfunc");break;case"bottom":case"end":d=(0,n.K2)(()=>Math.round(e.y+(a+s+2*e.textMargin)-e.textMargin),"yfunc")}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[n,p]of r.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==o&&(h=n*o);const r=t.append("text");r.attr("x",e.x),r.attr("y",d()),void 0!==e.anchor&&r.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&r.style("font-family",e.fontFamily),void 0!==c&&r.style("font-size",c),void 0!==e.fontWeight&&r.style("font-weight",e.fontWeight),void 0!==e.fill&&r.attr("fill",e.fill),void 0!==e.class&&r.attr("class",e.class),void 0!==e.dy?r.attr("dy",e.dy):0!==h&&r.attr("dy",h);const g=p||i.pe;if(e.tspan){const t=r.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(g)}else r.text(g);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(s+=(r._groups||r)[0][0].getBBox().height,a=s),l.push(r)}return l},"drawText"),L=(0,n.K2)(function(t,e){function a(t,e,a,s,r){return t+","+e+" "+(t+a)+","+e+" "+(t+a)+","+(e+s-r)+" "+(t+a-1.2*r)+","+(e+s)+" "+t+","+(e+s)}(0,n.K2)(a,"genPoints");const s=t.append("polygon");return s.attr("points",a(e.x,e.y,e.width,e.height,7)),s.attr("class","labelBox"),e.y=e.y+e.height/2,I(t,e),s},"drawLabel"),P=-1,_=(0,n.K2)((t,e,a,s)=>{t.select&&a.forEach(a=>{const r=e.get(a),i=t.select("#actor"+r.actorCnt);!s.mirrorActors&&r.stopy?i.attr("y2",r.stopy+r.height/2):s.mirrorActors&&i.attr("y2",r.stopy)})},"fixLifeLineHeights"),k=(0,n.K2)(function(t,e,a,r){const i=r?e.stopy:e.starty,o=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();var h=l;r||(P++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",f(`actor${P}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+P).attr("x1",o).attr("y1",c).attr("x2",o).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=P,null!=e.links&&h.attr("id","root-"+P));const d=(0,s.PB)();var p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=r?` ${m}`:` ${y}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.rx=3,d.ry=3,d.name=e.name;const g=T(h,d);if(e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?(0,s.CP)(h,d.x+d.width-20,d.y+10,t.substr(1)):(0,s.aC)(h,d.x+d.width-20,d.y+10,t)}q(a,(0,n.Wi)(e.description))(e.description,h,d.x,d.y,d.width,d.height,{class:"actor actor-box"},a);let u=e.height;if(g.node){const t=g.node().getBBox();e.height=t.height,u=t.height}return u},"drawActorTypeParticipant"),A=(0,n.K2)(function(t,e,a,r){const i=r?e.stopy:e.starty,o=e.x+e.width/2,c=i+80,l=t.append("g").lower();r||(P++,l.append("line").attr("id","actor"+P).attr("x1",o).attr("y1",c).attr("x2",o).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=P);const h=t.append("g");let d=b;d+=r?` ${m}`:` ${y}`,h.attr("class",d),h.attr("name",e.name);const p=(0,s.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor",p.rx=3,p.ry=3,h.append("line").attr("id","actor-man-torso"+P).attr("x1",o).attr("y1",i+25).attr("x2",o).attr("y2",i+45),h.append("line").attr("id","actor-man-arms"+P).attr("x1",o-18).attr("y1",i+33).attr("x2",o+18).attr("y2",i+33),h.append("line").attr("x1",o-18).attr("y1",i+60).attr("x2",o).attr("y2",i+45),h.append("line").attr("x1",o).attr("y1",i+45).attr("x2",o+18-2).attr("y2",i+60);const g=h.append("circle");g.attr("cx",e.x+e.width/2),g.attr("cy",i+10),g.attr("r",15),g.attr("width",e.width),g.attr("height",e.height);const u=h.node().getBBox();return e.height=u.height,q(a,(0,n.Wi)(e.description))(e.description,h,p.x,p.y+35,p.width,p.height,{class:`actor ${b}`},a),e.height},"drawActorTypeActor"),N=(0,n.K2)(async function(t,e,a,s){switch(e.type){case"actor":return await A(t,e,a,s);case"participant":return await k(t,e,a,s)}},"drawActor"),v=(0,n.K2)(function(t,e,a){const s=t.append("g");S(s,e),e.name&&q(a)(e.name,s,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},a),s.lower()},"drawBox"),M=(0,n.K2)(function(t){return t.append("g")},"anchorElement"),D=(0,n.K2)(function(t,e,a,r,i){const n=(0,s.PB)(),o=e.anchored;n.x=e.startx,n.y=e.starty,n.class="activation"+i%3,n.width=e.stopx-e.startx,n.height=a-e.starty,T(o,n)},"drawActivation"),O=(0,n.K2)(async function(t,e,a,r){const{boxMargin:i,boxTextMargin:o,labelBoxHeight:c,labelBoxWidth:l,messageFontFamily:h,messageFontSize:d,messageFontWeight:p}=r,g=t.append("g"),u=(0,n.K2)(function(t,e,a,s){return g.append("line").attr("x1",t).attr("y1",e).attr("x2",a).attr("y2",s).attr("class","loopLine")},"drawLoopLine");u(e.startx,e.starty,e.stopx,e.starty),u(e.stopx,e.starty,e.stopx,e.stopy),u(e.startx,e.stopy,e.stopx,e.stopy),u(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach(function(t){u(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")});let x=(0,s.HT)();x.text=a,x.x=e.startx,x.y=e.starty,x.fontFamily=h,x.fontSize=d,x.fontWeight=p,x.anchor="middle",x.valign="middle",x.tspan=!1,x.width=l||50,x.height=c||20,x.textMargin=o,x.class="labelText",L(g,x),x=F(),x.text=e.title,x.x=e.startx+l/2+(e.stopx-e.startx)/2,x.y=e.starty+i+o,x.anchor="middle",x.valign="middle",x.textMargin=o,x.class="loopText",x.fontFamily=h,x.fontSize=d,x.fontWeight=p,x.wrap=!0;let y=(0,n.Wi)(x.text)?await w(g,x,e):I(g,x);if(void 0!==e.sectionTitles)for(const[s,m]of Object.entries(e.sectionTitles))if(m.message){x.text=m.message,x.x=e.startx+(e.stopx-e.startx)/2,x.y=e.sections[s].y+i+o,x.class="loopText",x.anchor="middle",x.valign="middle",x.tspan=!1,x.fontFamily=h,x.fontSize=d,x.fontWeight=p,x.wrap=e.wrap,(0,n.Wi)(x.text)?(e.starty=e.sections[s].y,await w(g,x,e)):I(g,x);let t=Math.round(y.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e));e.sections[s].height+=t-(i+o)}return e.height=Math.round(e.stopy-e.starty),g},"drawLoop"),S=(0,n.K2)(function(t,e){(0,s.lC)(t,e)},"drawBackgroundRect"),R=(0,n.K2)(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),Y=(0,n.K2)(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),K=(0,n.K2)(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),C=(0,n.K2)(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),B=(0,n.K2)(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),$=(0,n.K2)(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),V=(0,n.K2)(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),F=(0,n.K2)(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),W=(0,n.K2)(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),q=function(){function t(t,e,a,s,i,n,o){r(e.append("text").attr("x",a+i/2).attr("y",s+n/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,a,s,o,c,l,h){const{actorFontSize:d,actorFontFamily:p,actorFontWeight:g}=h,[u,x]=(0,i.I5)(d),y=t.split(n.Y2.lineBreakRegex);for(let i=0;i<y.length;i++){const t=i*u-u*(y.length-1)/2,n=e.append("text").attr("x",a+o/2).attr("y",s).style("text-anchor","middle").style("font-size",x).style("font-weight",g).style("font-family",p);n.append("tspan").attr("x",a+o/2).attr("dy",t).text(y[i]),n.attr("y",s+c/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(n,l)}}function a(t,a,s,i,n,o,c,l){const h=a.append("switch"),d=h.append("foreignObject").attr("x",s).attr("y",i).attr("width",n).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");d.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,h,s,i,n,o,c,l),r(d,c)}async function s(t,a,s,i,o,c,l,h){const d=await(0,n.Dl)(t,(0,n.zj)()),p=a.append("switch"),g=p.append("foreignObject").attr("x",s+o/2-d.width/2).attr("y",i+c/2-d.height/2).attr("width",d.width).attr("height",d.height).append("xhtml:div").style("height","100%").style("width","100%");g.append("div").style("text-align","center").style("vertical-align","middle").html(await(0,n.VJ)(t,(0,n.zj)())),e(t,p,s,i,o,c,l,h),r(g,l)}function r(t,e){for(const a in e)e.hasOwnProperty(a)&&t.attr(a,e[a])}return(0,n.K2)(t,"byText"),(0,n.K2)(e,"byTspan"),(0,n.K2)(a,"byFo"),(0,n.K2)(s,"byKatex"),(0,n.K2)(r,"_setTextAttrs"),function(r,i=!1){return i?s:"fo"===r.textPlacement?a:"old"===r.textPlacement?t:e}}(),z=function(){function t(t,e,a,r,i,n,o){s(e.append("text").attr("x",a).attr("y",r).style("text-anchor","start").text(t),o)}function e(t,e,a,r,i,o,c,l){const{actorFontSize:h,actorFontFamily:d,actorFontWeight:p}=l,g=t.split(n.Y2.lineBreakRegex);for(let n=0;n<g.length;n++){const t=n*h-h*(g.length-1)/2,i=e.append("text").attr("x",a).attr("y",r).style("text-anchor","start").style("font-size",h).style("font-weight",p).style("font-family",d);i.append("tspan").attr("x",a).attr("dy",t).text(g[n]),i.attr("y",r+o/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),s(i,c)}}function a(t,a,r,i,n,o,c,l){const h=a.append("switch"),d=h.append("foreignObject").attr("x",r).attr("y",i).attr("width",n).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");d.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,h,r,i,0,o,c,l),s(d,c)}function s(t,e){for(const a in e)e.hasOwnProperty(a)&&t.attr(a,e[a])}return(0,n.K2)(t,"byText"),(0,n.K2)(e,"byTspan"),(0,n.K2)(a,"byFo"),(0,n.K2)(s,"_setTextAttrs"),function(s){return"fo"===s.textPlacement?a:"old"===s.textPlacement?t:e}}(),H={drawRect:T,drawText:I,drawLabel:L,drawActor:N,drawBox:v,drawPopup:E,anchorElement:M,drawActivation:D,drawLoop:O,drawBackgroundRect:S,insertArrowHead:C,insertArrowFilledHead:B,insertSequenceNumber:$,insertArrowCrossHead:V,insertDatabaseIcon:R,insertComputerIcon:Y,insertClockIcon:K,getTextObj:F,getNoteRect:W,fixLifeLineHeights:_,sanitizeUrl:c.J},j={},U={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:(0,n.K2)(function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map(t=>t.height||0))+(0===this.loops.length?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.messages.length?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.notes.length?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:(0,n.K2)(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:(0,n.K2)(function(t){this.boxes.push(t)},"addBox"),addActor:(0,n.K2)(function(t){this.actors.push(t)},"addActor"),addLoop:(0,n.K2)(function(t){this.loops.push(t)},"addLoop"),addMessage:(0,n.K2)(function(t){this.messages.push(t)},"addMessage"),addNote:(0,n.K2)(function(t){this.notes.push(t)},"addNote"),lastActor:(0,n.K2)(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:(0,n.K2)(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:(0,n.K2)(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:(0,n.K2)(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:(0,n.K2)(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,rt((0,n.D7)())},"init"),updateVal:(0,n.K2)(function(t,e,a,s){void 0===t[e]?t[e]=a:t[e]=s(a,t[e])},"updateVal"),updateBounds:(0,n.K2)(function(t,e,a,s){const r=this;let i=0;function o(o){return(0,n.K2)(function(n){i++;const c=r.sequenceItems.length-i+1;r.updateVal(n,"starty",e-c*j.boxMargin,Math.min),r.updateVal(n,"stopy",s+c*j.boxMargin,Math.max),r.updateVal(U.data,"startx",t-c*j.boxMargin,Math.min),r.updateVal(U.data,"stopx",a+c*j.boxMargin,Math.max),"activation"!==o&&(r.updateVal(n,"startx",t-c*j.boxMargin,Math.min),r.updateVal(n,"stopx",a+c*j.boxMargin,Math.max),r.updateVal(U.data,"starty",e-c*j.boxMargin,Math.min),r.updateVal(U.data,"stopy",s+c*j.boxMargin,Math.max))},"updateItemBounds")}(0,n.K2)(o,"updateFn"),this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},"updateBounds"),insert:(0,n.K2)(function(t,e,a,s){const r=n.Y2.getMin(t,a),i=n.Y2.getMax(t,a),o=n.Y2.getMin(e,s),c=n.Y2.getMax(e,s);this.updateVal(U.data,"startx",r,Math.min),this.updateVal(U.data,"starty",o,Math.min),this.updateVal(U.data,"stopx",i,Math.max),this.updateVal(U.data,"stopy",c,Math.max),this.updateBounds(r,o,i,c)},"insert"),newActivation:(0,n.K2)(function(t,e,a){const s=a.get(t.from),r=it(t.from).length||0,i=s.x+s.width/2+(r-1)*j.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+j.activationWidth,stopy:void 0,actor:t.from,anchored:H.anchorElement(e)})},"newActivation"),endActivation:(0,n.K2)(function(t){const e=this.activations.map(function(t){return t.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:(0,n.K2)(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:(0,n.K2)(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:(0,n.K2)(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:(0,n.K2)(function(){return!!this.sequenceItems.length&&this.sequenceItems[this.sequenceItems.length-1].overlap},"isLoopOverlap"),addSectionToLoop:(0,n.K2)(function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:U.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:(0,n.K2)(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:(0,n.K2)(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:(0,n.K2)(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=n.Y2.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:(0,n.K2)(function(){return this.verticalPos},"getVerticalPos"),getBounds:(0,n.K2)(function(){return{bounds:this.data,models:this.models}},"getBounds")},X=(0,n.K2)(async function(t,e){U.bumpVerticalPos(j.boxMargin),e.height=j.boxMargin,e.starty=U.getVerticalPos();const a=(0,s.PB)();a.x=e.startx,a.y=e.starty,a.width=e.width||j.width,a.class="note";const r=t.append("g"),i=H.drawRect(r,a),o=(0,s.HT)();o.x=e.startx,o.y=e.starty,o.width=a.width,o.dy="1em",o.text=e.message,o.class="noteText",o.fontFamily=j.noteFontFamily,o.fontSize=j.noteFontSize,o.fontWeight=j.noteFontWeight,o.anchor=j.noteAlign,o.textMargin=j.noteMargin,o.valign="center";const c=(0,n.Wi)(o.text)?await w(r,o):I(r,o),l=Math.round(c.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e));i.attr("height",l+2*j.noteMargin),e.height+=l+2*j.noteMargin,U.bumpVerticalPos(l+2*j.noteMargin),e.stopy=e.starty+l+2*j.noteMargin,e.stopx=e.startx+a.width,U.insert(e.startx,e.starty,e.stopx,e.stopy),U.models.addNote(e)},"drawNote"),J=(0,n.K2)(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),G=(0,n.K2)(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),Z=(0,n.K2)(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");async function Q(t,e){U.bumpVerticalPos(10);const{startx:a,stopx:s,message:r}=e,o=n.Y2.splitBreaks(r).length,c=(0,n.Wi)(r),l=c?await(0,n.Dl)(r,(0,n.D7)()):i._K.calculateTextDimensions(r,J(j));if(!c){const t=l.height/o;e.height+=t,U.bumpVerticalPos(t)}let h,d=l.height-10;const p=l.width;if(a===s){h=U.getVerticalPos()+d,j.rightAngles||(d+=j.boxMargin,h=U.getVerticalPos()+d),d+=30;const t=n.Y2.getMax(p/2,j.width/2);U.insert(a-t,U.getVerticalPos()-10+d,s+t,U.getVerticalPos()+30+d)}else d+=j.boxMargin,h=U.getVerticalPos()+d,U.insert(a,h-10,s,h);return U.bumpVerticalPos(d),e.height+=d,e.stopy=e.starty+e.height,U.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),h}(0,n.K2)(Q,"boundMessage");var tt=(0,n.K2)(async function(t,e,a,r){const{startx:o,stopx:c,starty:l,message:h,type:d,sequenceIndex:p,sequenceVisible:g}=e,u=i._K.calculateTextDimensions(h,J(j)),x=(0,s.HT)();x.x=o,x.y=l+10,x.width=c-o,x.class="messageText",x.dy="1em",x.text=h,x.fontFamily=j.messageFontFamily,x.fontSize=j.messageFontSize,x.fontWeight=j.messageFontWeight,x.anchor=j.messageAlign,x.valign="center",x.textMargin=j.wrapPadding,x.tspan=!1,(0,n.Wi)(x.text)?await w(t,x,{startx:o,stopx:c,starty:a}):I(t,x);const y=u.width;let m;o===c?m=j.rightAngles?t.append("path").attr("d",`M ${o},${a} H ${o+n.Y2.getMax(j.width/2,y/2)} V ${a+25} H ${o}`):t.append("path").attr("d","M "+o+","+a+" C "+(o+60)+","+(a-10)+" "+(o+60)+","+(a+30)+" "+o+","+(a+20)):(m=t.append("line"),m.attr("x1",o),m.attr("y1",a),m.attr("x2",c),m.attr("y2",a)),d===r.db.LINETYPE.DOTTED||d===r.db.LINETYPE.DOTTED_CROSS||d===r.db.LINETYPE.DOTTED_POINT||d===r.db.LINETYPE.DOTTED_OPEN||d===r.db.LINETYPE.BIDIRECTIONAL_DOTTED?(m.style("stroke-dasharray","3, 3"),m.attr("class","messageLine1")):m.attr("class","messageLine0");let b="";j.arrowMarkerAbsolute&&(b=(0,n.ID)(!0)),m.attr("stroke-width",2),m.attr("stroke","none"),m.style("fill","none"),d!==r.db.LINETYPE.SOLID&&d!==r.db.LINETYPE.DOTTED||m.attr("marker-end","url("+b+"#arrowhead)"),d!==r.db.LINETYPE.BIDIRECTIONAL_SOLID&&d!==r.db.LINETYPE.BIDIRECTIONAL_DOTTED||(m.attr("marker-start","url("+b+"#arrowhead)"),m.attr("marker-end","url("+b+"#arrowhead)")),d!==r.db.LINETYPE.SOLID_POINT&&d!==r.db.LINETYPE.DOTTED_POINT||m.attr("marker-end","url("+b+"#filled-head)"),d!==r.db.LINETYPE.SOLID_CROSS&&d!==r.db.LINETYPE.DOTTED_CROSS||m.attr("marker-end","url("+b+"#crosshead)"),(g||j.showSequenceNumbers)&&(m.attr("marker-start","url("+b+"#sequencenumber)"),t.append("text").attr("x",o).attr("y",a+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(p))},"drawMessage"),et=(0,n.K2)(function(t,e,a,s,r,i,o){let c,l=0,h=0,d=0;for(const p of s){const t=e.get(p),s=t.box;c&&c!=s&&(o||U.models.addBox(c),h+=j.boxMargin+c.margin),s&&s!=c&&(o||(s.x=l+h,s.y=r),h+=s.margin),t.width=t.width||j.width,t.height=n.Y2.getMax(t.height||j.height,j.height),t.margin=t.margin||j.actorMargin,d=n.Y2.getMax(d,t.height),a.get(t.name)&&(h+=t.width/2),t.x=l+h,t.starty=U.getVerticalPos(),U.insert(t.x,r,t.x+t.width,t.height),l+=t.width+h,t.box&&(t.box.width=l+s.margin-t.box.x),h=t.margin,c=t.box,U.models.addActor(t)}c&&!o&&U.models.addBox(c),U.bumpVerticalPos(d)},"addActorRenderingData"),at=(0,n.K2)(async function(t,e,a,s){if(s){let s=0;U.bumpVerticalPos(2*j.boxMargin);for(const r of a){const a=e.get(r);a.stopy||(a.stopy=U.getVerticalPos());const i=await H.drawActor(t,a,j,!0);s=n.Y2.getMax(s,i)}U.bumpVerticalPos(s+j.boxMargin)}else for(const r of a){const a=e.get(r);await H.drawActor(t,a,j,!1)}},"drawActors"),st=(0,n.K2)(function(t,e,a,s){let r=0,i=0;for(const n of a){const a=e.get(n),o=dt(a),c=H.drawPopup(t,a,o,j,j.forceMenus,s);c.height>r&&(r=c.height),c.width+a.x>i&&(i=c.width+a.x)}return{maxHeight:r,maxWidth:i}},"drawActorsPopup"),rt=(0,n.K2)(function(t){(0,n.hH)(j,t),t.fontFamily&&(j.actorFontFamily=j.noteFontFamily=j.messageFontFamily=t.fontFamily),t.fontSize&&(j.actorFontSize=j.noteFontSize=j.messageFontSize=t.fontSize),t.fontWeight&&(j.actorFontWeight=j.noteFontWeight=j.messageFontWeight=t.fontWeight)},"setConf"),it=(0,n.K2)(function(t){return U.activations.filter(function(e){return e.actor===t})},"actorActivations"),nt=(0,n.K2)(function(t,e){const a=e.get(t),s=it(t);return[s.reduce(function(t,e){return n.Y2.getMin(t,e.startx)},a.x+a.width/2-1),s.reduce(function(t,e){return n.Y2.getMax(t,e.stopx)},a.x+a.width/2+1)]},"activationBounds");function ot(t,e,a,s,r){U.bumpVerticalPos(a);let o=s;if(e.id&&e.message&&t[e.id]){const a=t[e.id].width,r=J(j);e.message=i._K.wrapLabel(`[${e.message}]`,a-2*j.wrapPadding,r),e.width=a,e.wrap=!0;const c=i._K.calculateTextDimensions(e.message,r),l=n.Y2.getMax(c.height,j.labelBoxHeight);o=s+l,n.Rm.debug(`${l} - ${e.message}`)}r(e),U.bumpVerticalPos(o)}function ct(t,e,a,s,r,i,o){function c(a,s){a.x<r.get(t.from).x?(U.insert(e.stopx-s,e.starty,e.startx,e.stopy+a.height/2+j.noteMargin),e.stopx=e.stopx+s):(U.insert(e.startx,e.starty,e.stopx+s,e.stopy+a.height/2+j.noteMargin),e.stopx=e.stopx-s)}function l(a,s){a.x<r.get(t.to).x?(U.insert(e.startx-s,e.starty,e.stopx,e.stopy+a.height/2+j.noteMargin),e.startx=e.startx+s):(U.insert(e.stopx,e.starty,e.startx+s,e.stopy+a.height/2+j.noteMargin),e.startx=e.startx-s)}if((0,n.K2)(c,"receiverAdjustment"),(0,n.K2)(l,"senderAdjustment"),i.get(t.to)==s){const e=r.get(t.to);c(e,"actor"==e.type?21:e.width/2+3),e.starty=a-e.height/2,U.bumpVerticalPos(e.height/2)}else if(o.get(t.from)==s){const e=r.get(t.from);if(j.mirrorActors){l(e,"actor"==e.type?18:e.width/2)}e.stopy=a-e.height/2,U.bumpVerticalPos(e.height/2)}else if(o.get(t.to)==s){const e=r.get(t.to);if(j.mirrorActors){c(e,"actor"==e.type?21:e.width/2+3)}e.stopy=a-e.height/2,U.bumpVerticalPos(e.height/2)}}(0,n.K2)(ot,"adjustLoopHeightForWrap"),(0,n.K2)(ct,"adjustCreatedDestroyedData");var lt=(0,n.K2)(async function(t,e,a,s){const{securityLevel:r,sequence:i}=(0,n.D7)();let c;j=i,"sandbox"===r&&(c=(0,o.Ltv)("#i"+e));const l="sandbox"===r?(0,o.Ltv)(c.nodes()[0].contentDocument.body):(0,o.Ltv)("body"),h="sandbox"===r?c.nodes()[0].contentDocument:document;U.init(),n.Rm.debug(s.db);const d="sandbox"===r?l.select(`[id="${e}"]`):(0,o.Ltv)(`[id="${e}"]`),p=s.db.getActors(),g=s.db.getCreatedActors(),u=s.db.getDestroyedActors(),x=s.db.getBoxes();let y=s.db.getActorKeys();const m=s.db.getMessages(),b=s.db.getDiagramTitle(),T=s.db.hasAtLeastOneBox(),E=s.db.hasAtLeastOneBoxWithTitle(),f=await ht(p,m,s);if(j.height=await pt(p,f,x),H.insertComputerIcon(d),H.insertDatabaseIcon(d),H.insertClockIcon(d),T&&(U.bumpVerticalPos(j.boxMargin),E&&U.bumpVerticalPos(x[0].textMaxHeight)),!0===j.hideUnusedParticipants){const t=new Set;m.forEach(e=>{t.add(e.from),t.add(e.to)}),y=y.filter(e=>t.has(e))}et(d,p,g,y,0,m,!1);const w=await xt(m,p,f,s);function I(t,e){const a=U.endActivation(t);a.starty+18>e&&(a.starty=e-6,e+=12),H.drawActivation(d,a,e,j,it(t.from).length),U.insert(a.startx,e-10,a.stopx,e)}H.insertArrowHead(d),H.insertArrowCrossHead(d),H.insertArrowFilledHead(d),H.insertSequenceNumber(d),(0,n.K2)(I,"activeEnd");let L=1,P=1;const k=[],A=[];let N=0;for(const o of m){let t,e,a;switch(o.type){case s.db.LINETYPE.NOTE:U.resetVerticalPos(),e=o.noteModel,await X(d,e);break;case s.db.LINETYPE.ACTIVE_START:U.newActivation(o,d,p);break;case s.db.LINETYPE.ACTIVE_END:I(o,U.getVerticalPos());break;case s.db.LINETYPE.LOOP_START:ot(w,o,j.boxMargin,j.boxMargin+j.boxTextMargin,t=>U.newLoop(t));break;case s.db.LINETYPE.LOOP_END:t=U.endLoop(),await H.drawLoop(d,t,"loop",j),U.bumpVerticalPos(t.stopy-U.getVerticalPos()),U.models.addLoop(t);break;case s.db.LINETYPE.RECT_START:ot(w,o,j.boxMargin,j.boxMargin,t=>U.newLoop(void 0,t.message));break;case s.db.LINETYPE.RECT_END:t=U.endLoop(),A.push(t),U.models.addLoop(t),U.bumpVerticalPos(t.stopy-U.getVerticalPos());break;case s.db.LINETYPE.OPT_START:ot(w,o,j.boxMargin,j.boxMargin+j.boxTextMargin,t=>U.newLoop(t));break;case s.db.LINETYPE.OPT_END:t=U.endLoop(),await H.drawLoop(d,t,"opt",j),U.bumpVerticalPos(t.stopy-U.getVerticalPos()),U.models.addLoop(t);break;case s.db.LINETYPE.ALT_START:ot(w,o,j.boxMargin,j.boxMargin+j.boxTextMargin,t=>U.newLoop(t));break;case s.db.LINETYPE.ALT_ELSE:ot(w,o,j.boxMargin+j.boxTextMargin,j.boxMargin,t=>U.addSectionToLoop(t));break;case s.db.LINETYPE.ALT_END:t=U.endLoop(),await H.drawLoop(d,t,"alt",j),U.bumpVerticalPos(t.stopy-U.getVerticalPos()),U.models.addLoop(t);break;case s.db.LINETYPE.PAR_START:case s.db.LINETYPE.PAR_OVER_START:ot(w,o,j.boxMargin,j.boxMargin+j.boxTextMargin,t=>U.newLoop(t)),U.saveVerticalPos();break;case s.db.LINETYPE.PAR_AND:ot(w,o,j.boxMargin+j.boxTextMargin,j.boxMargin,t=>U.addSectionToLoop(t));break;case s.db.LINETYPE.PAR_END:t=U.endLoop(),await H.drawLoop(d,t,"par",j),U.bumpVerticalPos(t.stopy-U.getVerticalPos()),U.models.addLoop(t);break;case s.db.LINETYPE.AUTONUMBER:L=o.message.start||L,P=o.message.step||P,o.message.visible?s.db.enableSequenceNumbers():s.db.disableSequenceNumbers();break;case s.db.LINETYPE.CRITICAL_START:ot(w,o,j.boxMargin,j.boxMargin+j.boxTextMargin,t=>U.newLoop(t));break;case s.db.LINETYPE.CRITICAL_OPTION:ot(w,o,j.boxMargin+j.boxTextMargin,j.boxMargin,t=>U.addSectionToLoop(t));break;case s.db.LINETYPE.CRITICAL_END:t=U.endLoop(),await H.drawLoop(d,t,"critical",j),U.bumpVerticalPos(t.stopy-U.getVerticalPos()),U.models.addLoop(t);break;case s.db.LINETYPE.BREAK_START:ot(w,o,j.boxMargin,j.boxMargin+j.boxTextMargin,t=>U.newLoop(t));break;case s.db.LINETYPE.BREAK_END:t=U.endLoop(),await H.drawLoop(d,t,"break",j),U.bumpVerticalPos(t.stopy-U.getVerticalPos()),U.models.addLoop(t);break;default:try{a=o.msgModel,a.starty=U.getVerticalPos(),a.sequenceIndex=L,a.sequenceVisible=s.db.showSequenceNumbers();const t=await Q(0,a);ct(o,a,t,N,p,g,u),k.push({messageModel:a,lineStartY:t}),U.models.addMessage(a)}catch(K){n.Rm.error("error while drawing message",K)}}[s.db.LINETYPE.SOLID_OPEN,s.db.LINETYPE.DOTTED_OPEN,s.db.LINETYPE.SOLID,s.db.LINETYPE.DOTTED,s.db.LINETYPE.SOLID_CROSS,s.db.LINETYPE.DOTTED_CROSS,s.db.LINETYPE.SOLID_POINT,s.db.LINETYPE.DOTTED_POINT,s.db.LINETYPE.BIDIRECTIONAL_SOLID,s.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(o.type)&&(L+=P),N++}n.Rm.debug("createdActors",g),n.Rm.debug("destroyedActors",u),await at(d,p,y,!1);for(const n of k)await tt(d,n.messageModel,n.lineStartY,s);j.mirrorActors&&await at(d,p,y,!0),A.forEach(t=>H.drawBackgroundRect(d,t)),_(d,p,y,j);for(const n of U.models.boxes)n.height=U.getVerticalPos()-n.y,U.insert(n.x,n.y,n.x+n.width,n.height),n.startx=n.x,n.starty=n.y,n.stopx=n.startx+n.width,n.stopy=n.starty+n.height,n.stroke="rgb(0,0,0, 0.5)",H.drawBox(d,n,j);T&&U.bumpVerticalPos(j.boxMargin);const v=st(d,p,y,h),{bounds:M}=U.getBounds();void 0===M.startx&&(M.startx=0),void 0===M.starty&&(M.starty=0),void 0===M.stopx&&(M.stopx=0),void 0===M.stopy&&(M.stopy=0);let D=M.stopy-M.starty;D<v.maxHeight&&(D=v.maxHeight);let O=D+2*j.diagramMarginY;j.mirrorActors&&(O=O-j.boxMargin+j.bottomMarginAdj);let S=M.stopx-M.startx;S<v.maxWidth&&(S=v.maxWidth);const R=S+2*j.diagramMarginX;b&&d.append("text").text(b).attr("x",(M.stopx-M.startx)/2-2*j.diagramMarginX).attr("y",-25),(0,n.a$)(d,O,R,j.useMaxWidth);const Y=b?40:0;d.attr("viewBox",M.startx-j.diagramMarginX+" -"+(j.diagramMarginY+Y)+" "+R+" "+(O+Y)),n.Rm.debug("models:",U.models)},"draw");async function ht(t,e,a){const s={};for(const r of e)if(t.get(r.to)&&t.get(r.from)){const e=t.get(r.to);if(r.placement===a.db.PLACEMENT.LEFTOF&&!e.prevActor)continue;if(r.placement===a.db.PLACEMENT.RIGHTOF&&!e.nextActor)continue;const o=void 0!==r.placement,c=!o,l=o?G(j):J(j),h=r.wrap?i._K.wrapLabel(r.message,j.width-2*j.wrapPadding,l):r.message,d=((0,n.Wi)(h)?await(0,n.Dl)(r.message,(0,n.D7)()):i._K.calculateTextDimensions(h,l)).width+2*j.wrapPadding;c&&r.from===e.nextActor?s[r.to]=n.Y2.getMax(s[r.to]||0,d):c&&r.from===e.prevActor?s[r.from]=n.Y2.getMax(s[r.from]||0,d):c&&r.from===r.to?(s[r.from]=n.Y2.getMax(s[r.from]||0,d/2),s[r.to]=n.Y2.getMax(s[r.to]||0,d/2)):r.placement===a.db.PLACEMENT.RIGHTOF?s[r.from]=n.Y2.getMax(s[r.from]||0,d):r.placement===a.db.PLACEMENT.LEFTOF?s[e.prevActor]=n.Y2.getMax(s[e.prevActor]||0,d):r.placement===a.db.PLACEMENT.OVER&&(e.prevActor&&(s[e.prevActor]=n.Y2.getMax(s[e.prevActor]||0,d/2)),e.nextActor&&(s[r.from]=n.Y2.getMax(s[r.from]||0,d/2)))}return n.Rm.debug("maxMessageWidthPerActor:",s),s}(0,n.K2)(ht,"getMaxMessageWidthPerActor");var dt=(0,n.K2)(function(t){let e=0;const a=Z(j);for(const s in t.links){const t=i._K.calculateTextDimensions(s,a).width+2*j.wrapPadding+2*j.boxMargin;e<t&&(e=t)}return e},"getRequiredPopupWidth");async function pt(t,e,a){let s=0;for(const o of t.keys()){const e=t.get(o);e.wrap&&(e.description=i._K.wrapLabel(e.description,j.width-2*j.wrapPadding,Z(j)));const a=(0,n.Wi)(e.description)?await(0,n.Dl)(e.description,(0,n.D7)()):i._K.calculateTextDimensions(e.description,Z(j));e.width=e.wrap?j.width:n.Y2.getMax(j.width,a.width+2*j.wrapPadding),e.height=e.wrap?n.Y2.getMax(a.height,j.height):j.height,s=n.Y2.getMax(s,e.height)}for(const i in e){const a=t.get(i);if(!a)continue;const s=t.get(a.nextActor);if(!s){const t=e[i]+j.actorMargin-a.width/2;a.margin=n.Y2.getMax(t,j.actorMargin);continue}const r=e[i]+j.actorMargin-a.width/2-s.width/2;a.margin=n.Y2.getMax(r,j.actorMargin)}let r=0;return a.forEach(e=>{const a=J(j);let s=e.actorKeys.reduce((e,a)=>e+(t.get(a).width+(t.get(a).margin||0)),0);s-=2*j.boxTextMargin,e.wrap&&(e.name=i._K.wrapLabel(e.name,s-2*j.wrapPadding,a));const o=i._K.calculateTextDimensions(e.name,a);r=n.Y2.getMax(o.height,r);const c=n.Y2.getMax(s,o.width+2*j.wrapPadding);if(e.margin=j.boxTextMargin,s<c){const t=(c-s)/2;e.margin+=t}}),a.forEach(t=>t.textMaxHeight=r),n.Y2.getMax(s,j.height)}(0,n.K2)(pt,"calculateActorMargins");var gt=(0,n.K2)(async function(t,e,a){const s=e.get(t.from),r=e.get(t.to),o=s.x,c=r.x,l=t.wrap&&t.message;let h=(0,n.Wi)(t.message)?await(0,n.Dl)(t.message,(0,n.D7)()):i._K.calculateTextDimensions(l?i._K.wrapLabel(t.message,j.width,G(j)):t.message,G(j));const d={width:l?j.width:n.Y2.getMax(j.width,h.width+2*j.noteMargin),height:0,startx:s.x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===a.db.PLACEMENT.RIGHTOF?(d.width=l?n.Y2.getMax(j.width,h.width):n.Y2.getMax(s.width/2+r.width/2,h.width+2*j.noteMargin),d.startx=o+(s.width+j.actorMargin)/2):t.placement===a.db.PLACEMENT.LEFTOF?(d.width=l?n.Y2.getMax(j.width,h.width+2*j.noteMargin):n.Y2.getMax(s.width/2+r.width/2,h.width+2*j.noteMargin),d.startx=o-d.width+(s.width-j.actorMargin)/2):t.to===t.from?(h=i._K.calculateTextDimensions(l?i._K.wrapLabel(t.message,n.Y2.getMax(j.width,s.width),G(j)):t.message,G(j)),d.width=l?n.Y2.getMax(j.width,s.width):n.Y2.getMax(s.width,j.width,h.width+2*j.noteMargin),d.startx=o+(s.width-d.width)/2):(d.width=Math.abs(o+s.width/2-(c+r.width/2))+j.actorMargin,d.startx=o<c?o+s.width/2-j.actorMargin/2:c+r.width/2-j.actorMargin/2),l&&(d.message=i._K.wrapLabel(t.message,d.width-2*j.wrapPadding,G(j))),n.Rm.debug(`NM:[${d.startx},${d.stopx},${d.starty},${d.stopy}:${d.width},${d.height}=${t.message}]`),d},"buildNoteModel"),ut=(0,n.K2)(function(t,e,a){if(![a.db.LINETYPE.SOLID_OPEN,a.db.LINETYPE.DOTTED_OPEN,a.db.LINETYPE.SOLID,a.db.LINETYPE.DOTTED,a.db.LINETYPE.SOLID_CROSS,a.db.LINETYPE.DOTTED_CROSS,a.db.LINETYPE.SOLID_POINT,a.db.LINETYPE.DOTTED_POINT,a.db.LINETYPE.BIDIRECTIONAL_SOLID,a.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type))return{};const[s,r]=nt(t.from,e),[o,c]=nt(t.to,e),l=s<=o;let h=l?r:s,d=l?o:c;const p=Math.abs(o-c)>2,g=(0,n.K2)(t=>l?-t:t,"adjustValue");t.from===t.to?d=h:(t.activate&&!p&&(d+=g(j.activationWidth/2-1)),[a.db.LINETYPE.SOLID_OPEN,a.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(d+=g(3)),[a.db.LINETYPE.BIDIRECTIONAL_SOLID,a.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(h-=g(3)));const u=[s,r,o,c],x=Math.abs(h-d);t.wrap&&t.message&&(t.message=i._K.wrapLabel(t.message,n.Y2.getMax(x+2*j.wrapPadding,j.width),J(j)));const y=i._K.calculateTextDimensions(t.message,J(j));return{width:n.Y2.getMax(t.wrap?0:y.width+2*j.wrapPadding,x+2*j.wrapPadding,j.width),height:0,startx:h,stopx:d,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,u),toBounds:Math.max.apply(null,u)}},"buildMessageModel"),xt=(0,n.K2)(async function(t,e,a,s){const r={},i=[];let o,c,l;for(const h of t){switch(h.type){case s.db.LINETYPE.LOOP_START:case s.db.LINETYPE.ALT_START:case s.db.LINETYPE.OPT_START:case s.db.LINETYPE.PAR_START:case s.db.LINETYPE.PAR_OVER_START:case s.db.LINETYPE.CRITICAL_START:case s.db.LINETYPE.BREAK_START:i.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case s.db.LINETYPE.ALT_ELSE:case s.db.LINETYPE.PAR_AND:case s.db.LINETYPE.CRITICAL_OPTION:h.message&&(o=i.pop(),r[o.id]=o,r[h.id]=o,i.push(o));break;case s.db.LINETYPE.LOOP_END:case s.db.LINETYPE.ALT_END:case s.db.LINETYPE.OPT_END:case s.db.LINETYPE.PAR_END:case s.db.LINETYPE.CRITICAL_END:case s.db.LINETYPE.BREAK_END:o=i.pop(),r[o.id]=o;break;case s.db.LINETYPE.ACTIVE_START:{const t=e.get(h.from?h.from:h.to.actor),a=it(h.from?h.from:h.to.actor).length,s=t.x+t.width/2+(a-1)*j.activationWidth/2,r={startx:s,stopx:s+j.activationWidth,actor:h.from,enabled:!0};U.activations.push(r)}break;case s.db.LINETYPE.ACTIVE_END:{const t=U.activations.map(t=>t.actor).lastIndexOf(h.from);U.activations.splice(t,1).splice(0,1)}}void 0!==h.placement?(c=await gt(h,e,s),h.noteModel=c,i.forEach(t=>{o=t,o.from=n.Y2.getMin(o.from,c.startx),o.to=n.Y2.getMax(o.to,c.startx+c.width),o.width=n.Y2.getMax(o.width,Math.abs(o.from-o.to))-j.labelBoxWidth})):(l=ut(h,e,s),h.msgModel=l,l.startx&&l.stopx&&i.length>0&&i.forEach(t=>{if(o=t,l.startx===l.stopx){const t=e.get(h.from),a=e.get(h.to);o.from=n.Y2.getMin(t.x-l.width/2,t.x-t.width/2,o.from),o.to=n.Y2.getMax(a.x+l.width/2,a.x+t.width/2,o.to),o.width=n.Y2.getMax(o.width,Math.abs(o.to-o.from))-j.labelBoxWidth}else o.from=n.Y2.getMin(l.startx,o.from),o.to=n.Y2.getMax(l.stopx,o.to),o.width=n.Y2.getMax(o.width,l.width)-j.labelBoxWidth}))}return U.activations=[],n.Rm.debug("Loop type widths:",r),r},"calculateLoopBounds"),yt={bounds:U,drawActors:at,drawActorsPopup:st,setConf:rt,draw:lt},mt={parser:h,get db(){return new u},renderer:yt,styles:x,init:(0,n.K2)(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,(0,n.XV)({sequence:{wrap:t.wrap}}))},"init")}}}]); \ No newline at end of file diff --git a/assets/js/84fb41f0.22512b68.js b/assets/js/84fb41f0.22512b68.js new file mode 100644 index 0000000000..d046e760a3 --- /dev/null +++ b/assets/js/84fb41f0.22512b68.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6040],{37080:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>d,toc:()=>a});const d=JSON.parse('{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.12.2/rules/android/disable_view_binding.md","sourceDirName":"rules/android","slug":"/rules/disable_view_binding","permalink":"/ModuleCheck/docs/0.12.2/rules/disable_view_binding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/android/disable_view_binding.md","tags":[],"version":"0.12.2","frontMatter":{"id":"disable_view_binding","slug":"/rules/disable_view_binding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.2/rules/disable_android_resources"},"next":{"title":"Unused Kotlin Android Extensions","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_kotlin_android_extensions"}}');var s=i(23420),t=i(65404);const o={id:"disable_view_binding",slug:"/rules/disable_view_binding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,l={},a=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},65404:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var d=i(36672);const s={},t=d.createContext(s);function o(e){const n=d.useContext(t);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),d.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/86c82c9a.704cb880.js b/assets/js/86c82c9a.704cb880.js new file mode 100644 index 0000000000..0a981a0599 --- /dev/null +++ b/assets/js/86c82c9a.704cb880.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9603],{18961:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.12.4/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/0.12.4/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/must_be_api.md","tags":[],"version":"0.12.4","frontMatter":{"id":"must_be_api","slug":"/rules/must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_dependency"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",slug:"/rules/must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/871.5341b1ea.js b/assets/js/871.5341b1ea.js new file mode 100644 index 0000000000..4757d1253e --- /dev/null +++ b/assets/js/871.5341b1ea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[871],{20871:(t,e,a)=>{a.d(e,{diagram:()=>K});var i,n=a(25314),r=(a(97576),a(57442),a(84982),a(43545),a(61598),a(70837),a(24199),a(47794)),d=a(27293),s=a(61274),o=a(74326),g=a(57420),h=(0,d.K2)(t=>t.append("circle").attr("class","start-state").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit),"drawStartState"),p=(0,d.K2)(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",(0,d.D7)().state.textHeight).attr("class","divider").attr("x2",2*(0,d.D7)().state.textHeight).attr("y1",0).attr("y2",0),"drawDivider"),c=(0,d.K2)((t,e)=>{const a=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+2*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),i=a.node().getBBox();return t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",i.width+2*(0,d.D7)().state.padding).attr("height",i.height+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),a},"drawSimpleState"),l=(0,d.K2)((t,e)=>{const a=(0,d.K2)(function(t,e,a){const i=t.append("tspan").attr("x",2*(0,d.D7)().state.padding).text(e);a||i.attr("dy",(0,d.D7)().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+1.3*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),n=i.height,r=t.append("text").attr("x",(0,d.D7)().state.padding).attr("y",n+.4*(0,d.D7)().state.padding+(0,d.D7)().state.dividerMargin+(0,d.D7)().state.textHeight).attr("class","state-description");let s=!0,o=!0;e.descriptions.forEach(function(t){s||(a(r,t,o),o=!1),s=!1});const g=t.append("line").attr("x1",(0,d.D7)().state.padding).attr("y1",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("y2",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("class","descr-divider"),h=r.node().getBBox(),p=Math.max(h.width,i.width);return g.attr("x2",p+3*(0,d.D7)().state.padding),t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",p+2*(0,d.D7)().state.padding).attr("height",h.height+n+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),t},"drawDescrState"),x=(0,d.K2)((t,e,a)=>{const i=(0,d.D7)().state.padding,n=2*(0,d.D7)().state.padding,r=t.node().getBBox(),s=r.width,o=r.x,g=t.append("text").attr("x",0).attr("y",(0,d.D7)().state.titleShift).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),h=g.node().getBBox().width+n;let p,c=Math.max(h,s);c===s&&(c+=n);const l=t.node().getBBox();e.doc,p=o-i,h>s&&(p=(s-c)/2+i),Math.abs(o-l.x)<i&&h>s&&(p=o-(h-s)/2);const x=1-(0,d.D7)().state.textHeight;return t.insert("rect",":first-child").attr("x",p).attr("y",x).attr("class",a?"alt-composit":"composit").attr("width",c).attr("height",l.height+(0,d.D7)().state.textHeight+(0,d.D7)().state.titleShift+1).attr("rx","0"),g.attr("x",p+i),h<=s&&g.attr("x",o+(c-n)/2-h/2+i),t.insert("rect",":first-child").attr("x",p).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",3*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t.insert("rect",":first-child").attr("x",p).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",l.height+3+2*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t},"addTitleAndBox"),D=(0,d.K2)(t=>(t.append("circle").attr("class","end-state-outer").attr("r",(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2)),"drawEndState"),u=(0,d.K2)((t,e)=>{let a=(0,d.D7)().state.forkWidth,i=(0,d.D7)().state.forkHeight;if(e.parentId){let t=a;a=i,i=t}return t.append("rect").style("stroke","black").style("fill","black").attr("width",a).attr("height",i).attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding)},"drawForkJoinState"),f=(0,d.K2)((t,e,a,i)=>{let n=0;const r=i.append("text");r.style("text-anchor","start"),r.attr("class","noteText");let s=t.replace(/\r\n/g,"<br/>");s=s.replace(/\n/g,"<br/>");const o=s.split(d.Y2.lineBreakRegex);let g=1.25*(0,d.D7)().state.noteMargin;for(const h of o){const t=h.trim();if(t.length>0){const i=r.append("tspan");if(i.text(t),0===g){g+=i.node().getBBox().height}n+=g,i.attr("x",e+(0,d.D7)().state.noteMargin),i.attr("y",a+n+1.25*(0,d.D7)().state.noteMargin)}}return{textWidth:r.node().getBBox().width,textHeight:n}},"_drawLongText"),y=(0,d.K2)((t,e)=>{e.attr("class","state-note");const a=e.append("rect").attr("x",0).attr("y",(0,d.D7)().state.padding),i=e.append("g"),{textWidth:n,textHeight:r}=f(t,0,0,i);return a.attr("height",r+2*(0,d.D7)().state.noteMargin),a.attr("width",n+2*(0,d.D7)().state.noteMargin),a},"drawNote"),w=(0,d.K2)(function(t,e){const a=e.id,i={id:a,label:e.id,width:0,height:0},n=t.append("g").attr("id",a).attr("class","stateGroup");"start"===e.type&&h(n),"end"===e.type&&D(n),"fork"!==e.type&&"join"!==e.type||u(n,e),"note"===e.type&&y(e.note.text,n),"divider"===e.type&&p(n),"default"===e.type&&0===e.descriptions.length&&c(n,e),"default"===e.type&&e.descriptions.length>0&&l(n,e);const r=n.node().getBBox();return i.width=r.width+2*(0,d.D7)().state.padding,i.height=r.height+2*(0,d.D7)().state.padding,i},"drawState"),m=0,b=(0,d.K2)(function(t,e,a){const i=(0,d.K2)(function(t){switch(t){case n.u4.relationType.AGGREGATION:return"aggregation";case n.u4.relationType.EXTENSION:return"extension";case n.u4.relationType.COMPOSITION:return"composition";case n.u4.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(t=>!Number.isNaN(t.y));const o=e.points,g=(0,s.n8j)().x(function(t){return t.x}).y(function(t){return t.y}).curve(s.qrM),h=t.append("path").attr("d",g(o)).attr("id","edge"+m).attr("class","transition");let p="";if((0,d.D7)().state.arrowMarkerAbsolute&&(p=(0,d.ID)(!0)),h.attr("marker-end","url("+p+"#"+i(n.u4.relationType.DEPENDENCY)+"End)"),void 0!==a.title){const i=t.append("g").attr("class","stateLabel"),{x:n,y:s}=r._K.calcLabelPosition(e.points),o=d.Y2.getRows(a.title);let g=0;const h=[];let p=0,c=0;for(let t=0;t<=o.length;t++){const e=i.append("text").attr("text-anchor","middle").text(o[t]).attr("x",n).attr("y",s+g),a=e.node().getBBox();if(p=Math.max(p,a.width),c=Math.min(c,a.x),d.Rm.info(a.x,n,s+g),0===g){const t=e.node().getBBox();g=t.height,d.Rm.info("Title height",g,s)}h.push(e)}let l=g*o.length;if(o.length>1){const t=(o.length-1)*g*.5;h.forEach((e,a)=>e.attr("y",s+a*g-t)),l=g*o.length}const x=i.node().getBBox();i.insert("rect",":first-child").attr("class","box").attr("x",n-p/2-(0,d.D7)().state.padding/2).attr("y",s-l/2-(0,d.D7)().state.padding/2-3.5).attr("width",p+(0,d.D7)().state.padding).attr("height",l+(0,d.D7)().state.padding),d.Rm.info(x)}m++},"drawEdge"),B={},k=(0,d.K2)(function(){},"setConf"),S=(0,d.K2)(function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),N=(0,d.K2)(function(t,e,a,n){i=(0,d.D7)().state;const r=(0,d.D7)().securityLevel;let o;"sandbox"===r&&(o=(0,s.Ltv)("#i"+e));const g="sandbox"===r?(0,s.Ltv)(o.nodes()[0].contentDocument.body):(0,s.Ltv)("body"),h="sandbox"===r?o.nodes()[0].contentDocument:document;d.Rm.debug("Rendering diagram "+t);const p=g.select(`[id='${e}']`);S(p);const c=n.db.getRootDoc();M(c,p,void 0,!1,g,h,n);const l=i.padding,x=p.node().getBBox(),D=x.width+2*l,u=x.height+2*l,f=1.75*D;(0,d.a$)(p,u,f,i.useMaxWidth),p.attr("viewBox",`${x.x-i.padding} ${x.y-i.padding} `+D+" "+u)},"draw"),E=(0,d.K2)(t=>t?t.length*i.fontSizeFactor:1,"getLabelWidth"),M=(0,d.K2)((t,e,a,n,r,s,h)=>{const p=new g.T({compound:!0,multigraph:!0});let c,l=!0;for(c=0;c<t.length;c++)if("relation"===t[c].stmt){l=!1;break}a?p.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:l?1:i.edgeLengthFactor,nodeSep:l?1:50,isMultiGraph:!0}):p.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:l?1:i.edgeLengthFactor,nodeSep:l?1:50,ranker:"tight-tree",isMultiGraph:!0}),p.setDefaultEdgeLabel(function(){return{}});const D=h.db.getStates(),u=h.db.getRelations(),f=Object.keys(D);for(const d of f){const t=D[d];let o;if(a&&(t.parentId=a),t.doc){let a=e.append("g").attr("id",t.id).attr("class","stateGroup");o=M(t.doc,a,t.id,!n,r,s,h);{a=x(a,t,n);let e=a.node().getBBox();o.width=e.width,o.height=e.height+i.padding/2,B[t.id]={y:i.compositTitleSize}}}else o=w(e,t,p);if(t.note){const a={descriptions:[],id:t.id+"-note",note:t.note,type:"note"},i=w(e,a,p);"left of"===t.note.position?(p.setNode(o.id+"-note",i),p.setNode(o.id,o)):(p.setNode(o.id,o),p.setNode(o.id+"-note",i)),p.setParent(o.id,o.id+"-group"),p.setParent(o.id+"-note",o.id+"-group")}else p.setNode(o.id,o)}d.Rm.debug("Count=",p.nodeCount(),p);let y=0;u.forEach(function(t){y++,d.Rm.debug("Setting edge",t),p.setEdge(t.id1,t.id2,{relation:t,width:E(t.title),height:i.labelHeight*d.Y2.getRows(t.title).length,labelpos:"c"},"id"+y)}),(0,o.Zp)(p),d.Rm.debug("Graph after layout",p.nodes());const m=e.node();p.nodes().forEach(function(t){if(void 0!==t&&void 0!==p.node(t)){d.Rm.warn("Node "+t+": "+JSON.stringify(p.node(t))),r.select("#"+m.id+" #"+t).attr("transform","translate("+(p.node(t).x-p.node(t).width/2)+","+(p.node(t).y+(B[t]?B[t].y:0)-p.node(t).height/2)+" )"),r.select("#"+m.id+" #"+t).attr("data-x-shift",p.node(t).x-p.node(t).width/2);s.querySelectorAll("#"+m.id+" #"+t+" .divider").forEach(t=>{const e=t.parentElement;let a=0,i=0;e&&(e.parentElement&&(a=e.parentElement.getBBox().width),i=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(i)&&(i=0)),t.setAttribute("x1",0-i+8),t.setAttribute("x2",a-i-8)})}else d.Rm.debug("No Node "+t+": "+JSON.stringify(p.node(t)))});let k=m.getBBox();p.edges().forEach(function(t){void 0!==t&&void 0!==p.edge(t)&&(d.Rm.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(p.edge(t))),b(e,p.edge(t),p.edge(t).relation))}),k=m.getBBox();const S={id:a||"root",label:a||"root",width:0,height:0};return S.width=k.width+2*i.padding,S.height=k.height+2*i.padding,d.Rm.debug("Doc rendered",S,p),S},"renderDoc"),v={setConf:k,draw:N},K={parser:n.Zk,get db(){return new n.u4(1)},renderer:v,styles:n.tM,init:(0,d.K2)(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/assets/js/87c27ff4.6e6a9d5f.js b/assets/js/87c27ff4.6e6a9d5f.js new file mode 100644 index 0000000000..ad55f19a28 --- /dev/null +++ b/assets/js/87c27ff4.6e6a9d5f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2410],{58118:(e,n,r)=>{r.d(n,{A:()=>s});r(36672);var t=r(13526);const a={tabItem:"tabItem_qogc"};var l=r(23420);function s({children:e,hidden:n,className:r}){return(0,l.jsx)("div",{role:"tabpanel",className:(0,t.A)(a.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>s,x:()=>o});var t=r(36672);const a={},l=t.createContext(a);function s(e){const n=t.useContext(l);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),t.createElement(l.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>y});var t=r(36672),a=r(13526),l=r(10452),s=r(85291),o=r(10914),i=r(41201),u=r(40622),c=r(42925);function d(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:t}})=>({value:e,label:n,attributes:r,default:t}))}(r);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,s.W6)(),a=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,i.aZ)(a),(0,t.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})},[a,r])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:a}=e,l=h(e),[s,i]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l})),[u,d]=g({queryString:r,groupId:a}),[m,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,a]=(0,c.Dv)(n);return[r,(0,t.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),b=(()=>{const e=u??m;return p({value:e,tabValues:l})?e:null})();(0,o.A)(()=>{b&&i(b)},[b]);return{selectedValue:s,selectValue:(0,t.useCallback)(e=>{if(!p({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)},[d,f,l]),tabValues:l}}var f=r(74682);const b={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:t,tabValues:s}){const o=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),u=e=>{const n=e.currentTarget,a=o.indexOf(n),l=s[a].value;l!==r&&(i(n),t(l))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:s.map(({value:e,label:n,attributes:t})=>(0,v.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...t,className:(0,a.A)("tabs__item",b.tabItem,t?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=l.find(e=>e.props.value===r);return e?(0,t.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,v.jsx)(x,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(n))}},85729:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>p,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"Dependencies","source":"@site/versioned_docs/version-0.12.0/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.12.0/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/quickstart.mdx","tags":[],"version":"0.12.0","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.0/configuration"}}');var a=r(23420),l=r(65404),s=r(65780),o=r(58118);const i={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},u=void 0,c={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",...(0,l.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,a.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // used for Android Gradle Plugin internally\n google()\n // Add for SNAPSHOT builds\n maven("https://oss.sonatype.org/content/repositories/snapshots/")\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.12.0"\n}\n'})})]}),(0,a.jsxs)(o.A,{value:"Groovy",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:'// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // used for Android Gradle Plugin internally\n google()\n // Add for SNAPSHOT builds\n maven {\n url "https://oss.sonatype.org/content/repositories/snapshots"\n }\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.12.0'\n}\n"})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,a.jsx)(n.p,{children:"all checks"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,a.jsx)(n.p,{children:"all checks with auto-correct"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"check sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,a.jsx)(n.p,{children:"apply sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"report depths of each module"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckDepths\n"})}),"\n",(0,a.jsx)(n.p,{children:"generate (module-only) dependency graphs"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckGraphs\n"})}),"\n",(0,a.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,a.jsxs)(n.p,{children:["See ",(0,a.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.0/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,a.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,a.jsx)(n.p,{children:"--or--"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,a.jsx)(o.A,{value:"Groovy",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/8824.a09ae4d0.js b/assets/js/8824.a09ae4d0.js new file mode 100644 index 0000000000..0fad6471b8 --- /dev/null +++ b/assets/js/8824.a09ae4d0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8824],{78824:(e,r,t)=>{t.d(r,{diagram:()=>u});var a=t(25314),s=(t(97576),t(57442),t(84982),t(43545),t(61598),t(70837),t(24199),t(47794),t(27293)),u={parser:a.Zk,get db(){return new a.u4(2)},renderer:a.q7,styles:a.tM,init:(0,s.K2)(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/assets/js/8886.44c26cb4.js b/assets/js/8886.44c26cb4.js new file mode 100644 index 0000000000..b44a168230 --- /dev/null +++ b/assets/js/8886.44c26cb4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8886],{6505:(e,n,t)=>{t.r(n),t.d(n,{render:()=>k});var r=t(84982),i=(t(43545),t(61598)),a=t(70837),o=(t(24199),t(47794),t(27293)),d=t(74326),s=t(60707),c=t(64350),g=t(72185);t(19641);function l(e){var n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:f(e),edges:h(e)};return s.A(e.graph())||(n.value=c.A(e.graph())),n}function f(e){return g.A(e.nodes(),function(n){var t=e.node(n),r=e.parent(n),i={v:n};return s.A(t)||(i.value=t),s.A(r)||(i.parent=r),i})}function h(e){return g.A(e.edges(),function(n){var t=e.edge(n),r={v:n.v,w:n.w};return s.A(n.name)||(r.name=n.name),s.A(t)||(r.value=t),r})}var u=t(57420),p=new Map,m=new Map,w=new Map,R=(0,o.K2)(()=>{m.clear(),w.clear(),p.clear()},"clear"),v=(0,o.K2)((e,n)=>{const t=m.get(n)||[];return o.Rm.trace("In isDescendant",n," ",e," = ",t.includes(e)),t.includes(e)},"isDescendant"),y=(0,o.K2)((e,n)=>{const t=m.get(n)||[];return o.Rm.info("Descendants of ",n," is ",t),o.Rm.info("Edge is ",e),e.v!==n&&e.w!==n&&(t?t.includes(e.v)||v(e.v,n)||v(e.w,n)||t.includes(e.w):(o.Rm.debug("Tilt, ",n,",not in descendants"),!1))},"edgeInCluster"),X=(0,o.K2)((e,n,t,r)=>{o.Rm.warn("Copying children of ",e,"root",r,"data",n.node(e),r);const i=n.children(e)||[];e!==r&&i.push(e),o.Rm.warn("Copying (nodes) clusterId",e,"nodes",i),i.forEach(i=>{if(n.children(i).length>0)X(i,n,t,r);else{const a=n.node(i);o.Rm.info("cp ",i," to ",r," with parent ",e),t.setNode(i,a),r!==n.parent(i)&&(o.Rm.warn("Setting parent",i,n.parent(i)),t.setParent(i,n.parent(i))),e!==r&&i!==e?(o.Rm.debug("Setting parent",i,e),t.setParent(i,e)):(o.Rm.info("In copy ",e,"root",r,"data",n.node(e),r),o.Rm.debug("Not Setting parent for node=",i,"cluster!==rootId",e!==r,"node!==clusterId",i!==e));const d=n.edges(i);o.Rm.debug("Copying Edges",d),d.forEach(i=>{o.Rm.info("Edge",i);const a=n.edge(i.v,i.w,i.name);o.Rm.info("Edge data",a,r);try{y(i,r)?(o.Rm.info("Copying as ",i.v,i.w,a,i.name),t.setEdge(i.v,i.w,a,i.name),o.Rm.info("newGraph edges ",t.edges(),t.edge(t.edges()[0]))):o.Rm.info("Skipping copy of edge ",i.v,"--\x3e",i.w," rootId: ",r," clusterId:",e)}catch(d){o.Rm.error(d)}})}o.Rm.debug("Removing node",i),n.removeNode(i)})},"copy"),b=(0,o.K2)((e,n)=>{const t=n.children(e);let r=[...t];for(const i of t)w.set(i,e),r=[...r,...b(i,n)];return r},"extractDescendants"),E=(0,o.K2)((e,n,t)=>{const r=e.edges().filter(e=>e.v===n||e.w===n),i=e.edges().filter(e=>e.v===t||e.w===t),a=r.map(e=>({v:e.v===n?t:e.v,w:e.w===n?n:e.w})),o=i.map(e=>({v:e.v,w:e.w}));return a.filter(e=>o.some(n=>e.v===n.v&&e.w===n.w))},"findCommonEdges"),N=(0,o.K2)((e,n,t)=>{const r=n.children(e);if(o.Rm.trace("Searching children of id ",e,r),r.length<1)return e;let i;for(const a of r){const e=N(a,n,t),r=E(n,t,e);if(e){if(!(r.length>0))return e;i=e}}return i},"findNonClusterChild"),C=(0,o.K2)(e=>p.has(e)&&p.get(e).externalConnections&&p.has(e)?p.get(e).id:e,"getAnchorId"),S=(0,o.K2)((e,n)=>{if(!e||n>10)o.Rm.debug("Opting out, no graph ");else{o.Rm.debug("Opting in, graph "),e.nodes().forEach(function(n){e.children(n).length>0&&(o.Rm.warn("Cluster identified",n," Replacement id in edges: ",N(n,e,n)),m.set(n,b(n,e)),p.set(n,{id:N(n,e,n),clusterData:e.node(n)}))}),e.nodes().forEach(function(n){const t=e.children(n),r=e.edges();t.length>0?(o.Rm.debug("Cluster identified",n,m),r.forEach(e=>{v(e.v,n)^v(e.w,n)&&(o.Rm.warn("Edge: ",e," leaves cluster ",n),o.Rm.warn("Descendants of XXX ",n,": ",m.get(n)),p.get(n).externalConnections=!0)})):o.Rm.debug("Not a cluster ",n,m)});for(let n of p.keys()){const t=p.get(n).id,r=e.parent(t);r!==n&&p.has(r)&&!p.get(r).externalConnections&&(p.get(n).id=r)}e.edges().forEach(function(n){const t=e.edge(n);o.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),o.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let r=n.v,i=n.w;if(o.Rm.warn("Fix XXX",p,"ids:",n.v,n.w,"Translating: ",p.get(n.v)," --- ",p.get(n.w)),p.get(n.v)||p.get(n.w)){if(o.Rm.warn("Fixing and trying - removing XXX",n.v,n.w,n.name),r=C(n.v),i=C(n.w),e.removeEdge(n.v,n.w,n.name),r!==n.v){const i=e.parent(r);p.get(i).externalConnections=!0,t.fromCluster=n.v}if(i!==n.w){const r=e.parent(i);p.get(r).externalConnections=!0,t.toCluster=n.w}o.Rm.warn("Fix Replacing with XXX",r,i,n.name),e.setEdge(r,i,t,n.name)}}),o.Rm.warn("Adjusted Graph",l(e)),x(e,0),o.Rm.trace(p)}},"adjustClustersAndEdges"),x=(0,o.K2)((e,n)=>{if(o.Rm.warn("extractor - ",n,l(e),e.children("D")),n>10)return void o.Rm.error("Bailing out");let t=e.nodes(),r=!1;for(const i of t){const n=e.children(i);r=r||n.length>0}if(r){o.Rm.debug("Nodes = ",t,n);for(const r of t)if(o.Rm.debug("Extracting node",r,p,p.has(r)&&!p.get(r).externalConnections,!e.parent(r),e.node(r),e.children("D")," Depth ",n),p.has(r))if(!p.get(r).externalConnections&&e.children(r)&&e.children(r).length>0){o.Rm.warn("Cluster without external connections, without a parent and with children",r,n);let t="TB"===e.graph().rankdir?"LR":"TB";p.get(r)?.clusterData?.dir&&(t=p.get(r).clusterData.dir,o.Rm.warn("Fixing dir",p.get(r).clusterData.dir,t));const i=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:t,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});o.Rm.warn("Old graph before copy",l(e)),X(r,e,i,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:p.get(r).clusterData,label:p.get(r).label,graph:i}),o.Rm.warn("New graph after copy node: (",r,")",l(i)),o.Rm.debug("Old graph after copy",l(e))}else o.Rm.warn("Cluster ** ",r," **not meeting the criteria !externalConnections:",!p.get(r).externalConnections," no parent: ",!e.parent(r)," children ",e.children(r)&&e.children(r).length>0,e.children("D"),n),o.Rm.debug(p);else o.Rm.debug("Not a cluster",r,n);t=e.nodes(),o.Rm.warn("New list of nodes",t);for(const r of t){const t=e.node(r);o.Rm.warn(" Now next level",r,t),t?.clusterNode&&x(t.graph,n+1)}}else o.Rm.debug("Done, no node has children",e.nodes())},"extractor"),I=(0,o.K2)((e,n)=>{if(0===n.length)return[];let t=Object.assign([],n);return n.forEach(n=>{const r=e.children(n),i=I(e,r);t=[...t,...i]}),t},"sorter"),D=(0,o.K2)(e=>I(e,e.children()),"sortNodesByHierarchy"),A=(0,o.K2)(async(e,n,t,s,c,g)=>{o.Rm.warn("Graph in recursive render:XAX",l(n),c);const f=n.graph().rankdir;o.Rm.trace("Dir in recursive render - dir:",f);const h=e.insert("g").attr("class","root");n.nodes()?o.Rm.info("Recursive render XXX",n.nodes()):o.Rm.info("No nodes found for",n),n.edges().length>0&&o.Rm.info("Recursive edges",n.edge(n.edges()[0]));const u=h.insert("g").attr("class","clusters"),m=h.insert("g").attr("class","edgePaths"),w=h.insert("g").attr("class","edgeLabels"),R=h.insert("g").attr("class","nodes");await Promise.all(n.nodes().map(async function(e){const r=n.node(e);if(void 0!==c){const t=JSON.parse(JSON.stringify(c.clusterData));o.Rm.trace("Setting data for parent cluster XXX\n Node.id = ",e,"\n data=",t.height,"\nParent cluster",c.height),n.setNode(c.id,t),n.parent(e)||(o.Rm.trace("Setting parent",e,c.id),n.setParent(e,c.id,t))}if(o.Rm.info("(Insert) Node XXX"+e+": "+JSON.stringify(n.node(e))),r?.clusterNode){o.Rm.info("Cluster identified XBX",e,r.width,n.node(e));const{ranksep:a,nodesep:d}=n.graph();r.graph.setGraph({...r.graph.graph(),ranksep:a+25,nodesep:d});const c=await A(R,r.graph,t,s,n.node(e),g),l=c.elem;(0,i.lC)(r,l),r.diff=c.diff||0,o.Rm.info("New compound node after recursive render XAX",e,"width",r.width,"height",r.height),(0,i.U7)(l,r)}else n.children(e).length>0?(o.Rm.trace("Cluster - the non recursive path XBX",e,r.id,r,r.width,"Graph:",n),o.Rm.trace(N(r.id,n)),p.set(r.id,{id:N(r.id,n),node:r})):(o.Rm.trace("Node - the non recursive path XAX",e,R,n.node(e),f),await(0,i.on)(R,n.node(e),{config:g,dir:f}))}));const v=(0,o.K2)(async()=>{const e=n.edges().map(async function(e){const t=n.edge(e.v,e.w,e.name);o.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),o.Rm.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(n.edge(e))),o.Rm.info("Fix",p,"ids:",e.v,e.w,"Translating: ",p.get(e.v),p.get(e.w)),await(0,r.jP)(w,t)});await Promise.all(e)},"processEdges");await v(),o.Rm.info("Graph before layout:",JSON.stringify(l(n))),o.Rm.info("############################################# XXX"),o.Rm.info("### Layout ### XXX"),o.Rm.info("############################################# XXX"),(0,d.Zp)(n),o.Rm.info("Graph after layout:",JSON.stringify(l(n)));let y=0,{subGraphTitleTotalMargin:X}=(0,a.O)(g);return await Promise.all(D(n).map(async function(e){const t=n.node(e);if(o.Rm.info("Position XBX => "+e+": ("+t.x,","+t.y,") width: ",t.width," height: ",t.height),t?.clusterNode)t.y+=X,o.Rm.info("A tainted cluster node XBX1",e,t.id,t.width,t.height,t.x,t.y,n.parent(e)),p.get(t.id).node=t,(0,i.U_)(t);else if(n.children(e).length>0){o.Rm.info("A pure cluster node XBX1",e,t.id,t.x,t.y,t.width,t.height,n.parent(e)),t.height+=X,n.node(t.parentId);const r=t?.padding/2||0,a=t?.labelBBox?.height||0,d=a-r||0;o.Rm.debug("OffsetY",d,"labelHeight",a,"halfPadding",r),await(0,i.U)(u,t),p.get(t.id).node=t}else{const e=n.node(t.parentId);t.y+=X/2,o.Rm.info("A regular node XBX1 - using the padding",t.id,"parent",t.parentId,t.width,t.height,t.x,t.y,"offsetY",t.offsetY,"parent",e,e?.offsetY,t),(0,i.U_)(t)}})),n.edges().forEach(function(e){const i=n.edge(e);o.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(i),i),i.points.forEach(e=>e.y+=X/2);const a=n.node(e.v);var d=n.node(e.w);const c=(0,r.Jo)(m,i,p,t,a,d,s);(0,r.T_)(i,c)}),n.nodes().forEach(function(e){const t=n.node(e);o.Rm.info(e,t.type,t.diff),t.isGroup&&(y=t.diff)}),o.Rm.warn("Returning from recursive render XAX",h,y),{elem:h,diff:y}},"recursiveRender"),k=(0,o.K2)(async(e,n)=>{const t=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=n.select("g");(0,r.g0)(a,e.markers,e.type,e.diagramId),(0,i.gh)(),(0,r.IU)(),(0,i.IU)(),R(),e.nodes.forEach(e=>{t.setNode(e.id,{...e}),e.parentId&&t.setParent(e.id,e.parentId)}),o.Rm.debug("Edges:",e.edges),e.edges.forEach(e=>{if(e.start===e.end){const n=e.start,r=n+"---"+n+"---1",i=n+"---"+n+"---2",a=t.node(n);t.setNode(r,{domId:r,id:r,parentId:a.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),t.setParent(r,a.parentId),t.setNode(i,{domId:i,id:i,parentId:a.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),t.setParent(i,a.parentId);const o=structuredClone(e),d=structuredClone(e),s=structuredClone(e);o.label="",o.arrowTypeEnd="none",o.id=n+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=n+"-cyclic-special-mid",s.label="",a.isGroup&&(o.fromCluster=n,s.toCluster=n),s.id=n+"-cyclic-special-2",s.arrowTypeStart="none",t.setEdge(n,r,o,n+"-cyclic-special-0"),t.setEdge(r,i,d,n+"-cyclic-special-1"),t.setEdge(i,n,s,n+"-cyc<lic-special-2")}else t.setEdge(e.start,e.end,{...e},e.id)}),o.Rm.warn("Graph at first:",JSON.stringify(l(t))),S(t),o.Rm.warn("Graph after XAX:",JSON.stringify(l(t)));const d=(0,o.D7)();await A(a,t,e.type,e.diagramId,void 0,d)},"render")},64350:(e,n,t)=>{t.d(n,{A:()=>i});var r=t(98020);const i=function(e){return(0,r.A)(e,4)}}}]); \ No newline at end of file diff --git a/assets/js/896d06c5.7c4b3f7f.js b/assets/js/896d06c5.7c4b3f7f.js new file mode 100644 index 0000000000..b19491017b --- /dev/null +++ b/assets/js/896d06c5.7c4b3f7f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8374],{65404:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>c});var n=s(36672);const r={},o=n.createContext(r);function i(e){const t=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:t},e.children)}},73033:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.12.4/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sort_dependencies","permalink":"/ModuleCheck/docs/0.12.4/rules/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/sorting/sort_dependencies.md","tags":[],"version":"0.12.4","frontMatter":{"id":"sort_dependencies","slug":"/rules/sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.4/rules/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.4/rules/sort_plugins"}}');var r=s(23420),o=s(65404);const i={id:"sort_dependencies",slug:"/rules/sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l()}}}]); \ No newline at end of file diff --git a/assets/js/89d14484.675e28e5.js b/assets/js/89d14484.675e28e5.js new file mode 100644 index 0000000000..436f862b12 --- /dev/null +++ b/assets/js/89d14484.675e28e5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[679],{19346:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>d,toc:()=>a});const d=JSON.parse('{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.12.1/rules/android/disable_view_binding.md","sourceDirName":"rules/android","slug":"/rules/disable_view_binding","permalink":"/ModuleCheck/docs/0.12.1/rules/disable_view_binding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/android/disable_view_binding.md","tags":[],"version":"0.12.1","frontMatter":{"id":"disable_view_binding","slug":"/rules/disable_view_binding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.1/rules/disable_android_resources"},"next":{"title":"Unused Kotlin Android Extensions","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_kotlin_android_extensions"}}');var s=i(23420),t=i(65404);const o={id:"disable_view_binding",slug:"/rules/disable_view_binding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,l={},a=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},65404:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var d=i(36672);const s={},t=d.createContext(s);function o(e){const n=d.useContext(t);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),d.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8dac98b9.6fa92e78.js b/assets/js/8dac98b9.6fa92e78.js new file mode 100644 index 0000000000..98be8fb020 --- /dev/null +++ b/assets/js/8dac98b9.6fa92e78.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3623],{53605:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>d,toc:()=>a});const d=JSON.parse('{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.12.5/rules/android/disable_view_binding.md","sourceDirName":"rules/android","slug":"/rules/disable_view_binding","permalink":"/ModuleCheck/docs/rules/disable_view_binding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/android/disable_view_binding.md","tags":[],"version":"0.12.5","frontMatter":{"id":"disable_view_binding","slug":"/rules/disable_view_binding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/rules/disable_android_resources"},"next":{"title":"Unused Kotlin Android Extensions","permalink":"/ModuleCheck/docs/rules/unused_kotlin_android_extensions"}}');var s=i(23420),t=i(65404);const o={id:"disable_view_binding",slug:"/rules/disable_view_binding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,l={},a=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},65404:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var d=i(36672);const s={},t=d.createContext(s);function o(e){const n=d.useContext(t);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),d.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8e56f135.7be2c54b.js b/assets/js/8e56f135.7be2c54b.js new file mode 100644 index 0000000000..9e8b7114e2 --- /dev/null +++ b/assets/js/8e56f135.7be2c54b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8028],{45876:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.11.0/rules/compiler/could_use_anvil_factory.md","sourceDirName":"rules/compiler","slug":"/rules/compiler/could_use_anvil_factory","permalink":"/ModuleCheck/docs/0.11.0/rules/compiler/could_use_anvil_factory","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/compiler/could_use_anvil_factory.md","tags":[],"version":"0.11.0","frontMatter":{"id":"could_use_anvil_factory","title":"Could Use Anvil Factory","sidebar_label":"Could Use Anvil Factory"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.11.0/rules/inherited_dependency"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_processor"}}');var r=o(23420),s=o(65404);const i={id:"could_use_anvil_factory",title:"Could Use Anvil Factory",sidebar_label:"Could Use Anvil Factory"},c=void 0,l={},a=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or Subcomponents,\nand it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},65404:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>c});var t=o(36672);const r={},s=t.createContext(r);function i(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9111.dd16d8c7.js b/assets/js/9111.dd16d8c7.js new file mode 100644 index 0000000000..5f64b8e952 --- /dev/null +++ b/assets/js/9111.dd16d8c7.js @@ -0,0 +1 @@ +(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9111],{21707:function(t){t.exports=function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,i=/\d\d/,s=/\d\d?/,r=/\d*[^-_:/,()\s\d]+/,a={},o=function(t){return(t=+t)+(t>68?1900:2e3)},c=function(t){return function(e){this[t]=+e}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:"+"===e[0]?-n:n}(t)}],d=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},u=function(t,e){var n,i=a.meridiem;if(i){for(var s=1;s<=24;s+=1)if(t.indexOf(i(s,0,e))>-1){n=s>12;break}}else n=t===(e?"pm":"PM");return n},h={A:[r,function(t){this.afternoon=u(t,!1)}],a:[r,function(t){this.afternoon=u(t,!0)}],Q:[n,function(t){this.month=3*(t-1)+1}],S:[n,function(t){this.milliseconds=100*+t}],SS:[i,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[s,c("seconds")],ss:[s,c("seconds")],m:[s,c("minutes")],mm:[s,c("minutes")],H:[s,c("hours")],h:[s,c("hours")],HH:[s,c("hours")],hh:[s,c("hours")],D:[s,c("day")],DD:[i,c("day")],Do:[r,function(t){var e=a.ordinal,n=t.match(/\d+/);if(this.day=n[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],w:[s,c("week")],ww:[i,c("week")],M:[s,c("month")],MM:[i,c("month")],MMM:[r,function(t){var e=d("months"),n=(d("monthsShort")||e.map(function(t){return t.slice(0,3)})).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[r,function(t){var e=d("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,c("year")],YY:[i,function(t){this.year=o(t)}],YYYY:[/\d{4}/,c("year")],Z:l,ZZ:l};function f(n){var i,s;i=n,s=a&&a.formats;for(var r=(n=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(e,n,i){var r=i&&i.toUpperCase();return n||s[i]||t[i]||s[r].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(t,e,n){return e||n.slice(1)})})).match(e),o=r.length,c=0;c<o;c+=1){var l=r[c],d=h[l],u=d&&d[0],f=d&&d[1];r[c]=f?{regex:u,parser:f}:l.replace(/^\[|\]$/g,"")}return function(t){for(var e={},n=0,i=0;n<o;n+=1){var s=r[n];if("string"==typeof s)i+=s.length;else{var a=s.regex,c=s.parser,l=t.slice(i),d=a.exec(l)[0];c.call(e,d),t=t.replace(d,"")}}return function(t){var e=t.afternoon;if(void 0!==e){var n=t.hours;e?n<12&&(t.hours+=12):12===n&&(t.hours=0),delete t.afternoon}}(e),e}}return function(t,e,n){n.p.customParseFormat=!0,t&&t.parseTwoDigitYear&&(o=t.parseTwoDigitYear);var i=e.prototype,s=i.parse;i.parse=function(t){var e=t.date,i=t.utc,r=t.args;this.$u=i;var o=r[1];if("string"==typeof o){var c=!0===r[2],l=!0===r[3],d=c||l,u=r[2];l&&(u=r[2]),a=this.$locale(),!c&&u&&(a=n.Ls[u]),this.$d=function(t,e,n,i){try{if(["x","X"].indexOf(e)>-1)return new Date(("X"===e?1e3:1)*t);var s=f(e)(t),r=s.year,a=s.month,o=s.day,c=s.hours,l=s.minutes,d=s.seconds,u=s.milliseconds,h=s.zone,y=s.week,k=new Date,m=o||(r||a?1:k.getDate()),p=r||k.getFullYear(),g=0;r&&!a||(g=a>0?a-1:k.getMonth());var b,v=c||0,T=l||0,x=d||0,w=u||0;return h?new Date(Date.UTC(p,g,m,v,T,x,w+60*h.offset*1e3)):n?new Date(Date.UTC(p,g,m,v,T,x,w)):(b=new Date(p,g,m,v,T,x,w),y&&(b=i(b).week(y).toDate()),b)}catch(t){return new Date("")}}(e,o,i,n),this.init(),u&&!0!==u&&(this.$L=this.locale(u).$L),d&&e!=this.format(o)&&(this.$d=new Date("")),a={}}else if(o instanceof Array)for(var h=o.length,y=1;y<=h;y+=1){r[1]=o[y-1];var k=n.apply(this,r);if(k.isValid()){this.$d=k.$d,this.$L=k.$L,this.init();break}y===h&&(this.$d=new Date(""))}else s.call(this,t)}}}()},78353:function(t){t.exports=function(){"use strict";return function(t,e){var n=e.prototype,i=n.format;n.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return i.bind(this)(t);var s=this.$utils(),r=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(t){switch(t){case"Q":return Math.ceil((e.$M+1)/3);case"Do":return n.ordinal(e.$D);case"gggg":return e.weekYear();case"GGGG":return e.isoWeekYear();case"wo":return n.ordinal(e.week(),"W");case"w":case"ww":return s.s(e.week(),"w"===t?1:2,"0");case"W":case"WW":return s.s(e.isoWeek(),"W"===t?1:2,"0");case"k":case"kk":return s.s(String(0===e.$H?24:e.$H),"k"===t?1:2,"0");case"X":return Math.floor(e.$d.getTime()/1e3);case"x":return e.$d.getTime();case"z":return"["+e.offsetName()+"]";case"zzz":return"["+e.offsetName("long")+"]";default:return t}});return i.bind(this)(r)}}}()},84527:function(t){t.exports=function(){"use strict";var t="day";return function(e,n,i){var s=function(e){return e.add(4-e.isoWeekday(),t)},r=n.prototype;r.isoWeekYear=function(){return s(this).year()},r.isoWeek=function(e){if(!this.$utils().u(e))return this.add(7*(e-this.isoWeek()),t);var n,r,a,o=s(this),c=(n=this.isoWeekYear(),a=4-(r=(this.$u?i.utc:i)().year(n).startOf("year")).isoWeekday(),r.isoWeekday()>4&&(a+=7),r.add(a,t));return o.diff(c,"week")+1},r.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var a=r.startOf;r.startOf=function(t,e){var n=this.$utils(),i=!!n.u(e)||e;return"isoweek"===n.p(t)?i?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):a.bind(this)(t,e)}}}()},89111:(t,e,n)=>{"use strict";n.d(e,{diagram:()=>Yt});var i=n(47794),s=n(27293),r=n(41407),a=n(56287),o=n(84527),c=n(21707),l=n(78353),d=n(61274),u=function(){var t=(0,s.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],i=[1,27],r=[1,28],a=[1,29],o=[1,30],c=[1,31],l=[1,32],d=[1,33],u=[1,34],h=[1,9],f=[1,10],y=[1,11],k=[1,12],m=[1,13],p=[1,14],g=[1,15],b=[1,16],v=[1,19],T=[1,20],x=[1,21],w=[1,22],_=[1,23],D=[1,25],$=[1,35],C={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:(0,s.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setWeekday("monday");break;case 9:i.setWeekday("tuesday");break;case 10:i.setWeekday("wednesday");break;case 11:i.setWeekday("thursday");break;case 12:i.setWeekday("friday");break;case 13:i.setWeekday("saturday");break;case 14:i.setWeekday("sunday");break;case 15:i.setWeekend("friday");break;case 16:i.setWeekend("saturday");break;case 17:i.setDateFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 18:i.enableInclusiveEndDates(),this.$=r[o].substr(18);break;case 19:i.TopAxis(),this.$=r[o].substr(8);break;case 20:i.setAxisFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 21:i.setTickInterval(r[o].substr(13)),this.$=r[o].substr(13);break;case 22:i.setExcludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 23:i.setIncludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 24:i.setTodayMarker(r[o].substr(12)),this.$=r[o].substr(12);break;case 27:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 28:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 29:case 30:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 31:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 33:i.addTask(r[o-1],r[o]),this.$="task";break;case 34:this.$=r[o-1],i.setClickEvent(r[o-1],r[o],null);break;case 35:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],r[o]);break;case 36:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],null),i.setLink(r[o-2],r[o]);break;case 37:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-2],r[o-1]),i.setLink(r[o-3],r[o]);break;case 38:this.$=r[o-2],i.setClickEvent(r[o-2],r[o],null),i.setLink(r[o-2],r[o-1]);break;case 39:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-1],r[o]),i.setLink(r[o-3],r[o-2]);break;case 40:this.$=r[o-1],i.setLink(r[o-1],r[o]);break;case 41:case 47:this.$=r[o-1]+" "+r[o];break;case 42:case 43:case 45:this.$=r[o-2]+" "+r[o-1]+" "+r[o];break;case 44:case 46:this.$=r[o-3]+" "+r[o-2]+" "+r[o-1]+" "+r[o]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:i,14:r,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:y,25:k,26:m,27:p,28:g,29:b,30:v,31:T,33:x,35:w,36:_,37:24,38:D,40:$},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:n,13:i,14:r,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:y,25:k,26:m,27:p,28:g,29:b,30:v,31:T,33:x,35:w,36:_,37:24,38:D,40:$},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:(0,s.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,s.K2)(function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,c="",l=0,d=0,u=0,h=a.slice.call(arguments,1),f=Object.create(this.lexer),y={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(y.yy[k]=this.yy[k]);f.setInput(t,y.yy),y.yy.lexer=f,y.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var m=f.yylloc;a.push(m);var p=f.options&&f.options.ranges;function g(){var t;return"number"!=typeof(t=i.pop()||f.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)(function(t){n.length=n.length-2*t,r.length=r.length-t,a.length=a.length-t},"popStack"),(0,s.K2)(g,"lex");for(var b,v,T,x,w,_,D,$,C,S={};;){if(T=n[n.length-1],this.defaultActions[T]?x=this.defaultActions[T]:(null==b&&(b=g()),x=o[T]&&o[T][b]),void 0===x||!x.length||!x[0]){var K="";for(_ in C=[],o[T])this.terminals_[_]&&_>2&&C.push("'"+this.terminals_[_]+"'");K=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+C.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(K,{text:f.match,token:this.terminals_[b]||b,line:f.yylineno,loc:m,expected:C})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+T+", token: "+b);switch(x[0]){case 1:n.push(b),r.push(f.yytext),a.push(f.yylloc),n.push(x[1]),b=null,v?(b=v,v=null):(d=f.yyleng,c=f.yytext,l=f.yylineno,m=f.yylloc,u>0&&u--);break;case 2:if(D=this.productions_[x[1]][1],S.$=r[r.length-D],S._$={first_line:a[a.length-(D||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(D||1)].first_column,last_column:a[a.length-1].last_column},p&&(S._$.range=[a[a.length-(D||1)].range[0],a[a.length-1].range[1]]),void 0!==(w=this.performAction.apply(S,[c,d,l,y.yy,x[1],r,a].concat(h))))return w;D&&(n=n.slice(0,-1*D*2),r=r.slice(0,-1*D),a=a.slice(0,-1*D)),n.push(this.productions_[x[1]][0]),r.push(S.$),a.push(S._$),$=o[n[n.length-2]][n[n.length-1]],n.push($);break;case 3:return!0}}return!0},"parse")},S=function(){return{EOF:1,parseError:(0,s.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,s.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K2)(function(){return this._more=!0,this},"more"),reject:(0,s.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,s.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,s.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;r<s.length;r++)if((n=this._input.match(this.rules[s[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K2)(function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),"open_directive";case 1:return this.begin("acc_title"),31;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),33;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 15:case 18:case 21:case 24:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:case 9:case 10:case 12:case 13:break;case 11:return 10;case 14:this.begin("href");break;case 16:return 43;case 17:this.begin("callbackname");break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 22:return 42;case 23:this.begin("click");break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}}}();function K(){this.yy={}}return C.lexer=S,(0,s.K2)(K,"Parser"),K.prototype=C,C.Parser=K,new K}();u.parser=u;var h=u;a.extend(o),a.extend(c),a.extend(l);var f,y,k={friday:5,saturday:6},m="",p="",g=void 0,b="",v=[],T=[],x=new Map,w=[],_=[],D="",$="",C=["active","done","crit","milestone","vert"],S=[],K=!1,E=!1,M="sunday",A="saturday",L=0,Y=(0,s.K2)(function(){w=[],_=[],D="",S=[],ht=0,f=void 0,y=void 0,mt=[],m="",p="",$="",g=void 0,b="",v=[],T=[],K=!1,E=!1,L=0,x=new Map,(0,s.IU)(),M="sunday",A="saturday"},"clear"),I=(0,s.K2)(function(t){p=t},"setAxisFormat"),F=(0,s.K2)(function(){return p},"getAxisFormat"),W=(0,s.K2)(function(t){g=t},"setTickInterval"),O=(0,s.K2)(function(){return g},"getTickInterval"),P=(0,s.K2)(function(t){b=t},"setTodayMarker"),B=(0,s.K2)(function(){return b},"getTodayMarker"),z=(0,s.K2)(function(t){m=t},"setDateFormat"),G=(0,s.K2)(function(){K=!0},"enableInclusiveEndDates"),N=(0,s.K2)(function(){return K},"endDatesAreInclusive"),H=(0,s.K2)(function(){E=!0},"enableTopAxis"),R=(0,s.K2)(function(){return E},"topAxisEnabled"),j=(0,s.K2)(function(t){$=t},"setDisplayMode"),U=(0,s.K2)(function(){return $},"getDisplayMode"),V=(0,s.K2)(function(){return m},"getDateFormat"),Z=(0,s.K2)(function(t){v=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),X=(0,s.K2)(function(){return v},"getIncludes"),q=(0,s.K2)(function(t){T=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),Q=(0,s.K2)(function(){return T},"getExcludes"),J=(0,s.K2)(function(){return x},"getLinks"),tt=(0,s.K2)(function(t){D=t,w.push(t)},"addSection"),et=(0,s.K2)(function(){return w},"getSections"),nt=(0,s.K2)(function(){let t=Tt();let e=0;for(;!t&&e<10;)t=Tt(),e++;return _=mt},"getTasks"),it=(0,s.K2)(function(t,e,n,i){return!i.includes(t.format(e.trim()))&&(!(!n.includes("weekends")||t.isoWeekday()!==k[A]&&t.isoWeekday()!==k[A]+1)||(!!n.includes(t.format("dddd").toLowerCase())||n.includes(t.format(e.trim()))))},"isInvalidDate"),st=(0,s.K2)(function(t){M=t},"setWeekday"),rt=(0,s.K2)(function(){return M},"getWeekday"),at=(0,s.K2)(function(t){A=t},"setWeekend"),ot=(0,s.K2)(function(t,e,n,i){if(!n.length||t.manualEndTime)return;let s,r;s=t.startTime instanceof Date?a(t.startTime):a(t.startTime,e,!0),s=s.add(1,"d"),r=t.endTime instanceof Date?a(t.endTime):a(t.endTime,e,!0);const[o,c]=ct(s,r,e,n,i);t.endTime=o.toDate(),t.renderEndTime=c},"checkTaskDates"),ct=(0,s.K2)(function(t,e,n,i,s){let r=!1,a=null;for(;t<=e;)r||(a=e.toDate()),r=it(t,n,i,s),r&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,a]},"fixTaskDates"),lt=(0,s.K2)(function(t,e,n){n=n.trim();const i=/^after\s+(?<ids>[\d\w- ]+)/.exec(n);if(null!==i){let t=null;for(const n of i.groups.ids.split(" ")){let e=bt(n);void 0!==e&&(!t||e.endTime>t.endTime)&&(t=e)}if(t)return t.endTime;const e=new Date;return e.setHours(0,0,0,0),e}let r=a(n,e.trim(),!0);if(r.isValid())return r.toDate();{s.Rm.debug("Invalid date:"+n),s.Rm.debug("With date format:"+e.trim());const t=new Date(n);if(void 0===t||isNaN(t.getTime())||t.getFullYear()<-1e4||t.getFullYear()>1e4)throw new Error("Invalid date:"+n);return t}},"getStartDate"),dt=(0,s.K2)(function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return null!==e?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),ut=(0,s.K2)(function(t,e,n,i=!1){n=n.trim();const s=/^until\s+(?<ids>[\d\w- ]+)/.exec(n);if(null!==s){let t=null;for(const n of s.groups.ids.split(" ")){let e=bt(n);void 0!==e&&(!t||e.startTime<t.startTime)&&(t=e)}if(t)return t.startTime;const e=new Date;return e.setHours(0,0,0,0),e}let r=a(n,e.trim(),!0);if(r.isValid())return i&&(r=r.add(1,"d")),r.toDate();let o=a(t);const[c,l]=dt(n);if(!Number.isNaN(c)){const t=o.add(c,l);t.isValid()&&(o=t)}return o.toDate()},"getEndDate"),ht=0,ft=(0,s.K2)(function(t){return void 0===t?"task"+(ht+=1):t},"parseId"),yt=(0,s.K2)(function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const i=n.split(","),s={};Kt(i,s,C);for(let a=0;a<i.length;a++)i[a]=i[a].trim();let r="";switch(i.length){case 1:s.id=ft(),s.startTime=t.endTime,r=i[0];break;case 2:s.id=ft(),s.startTime=lt(void 0,m,i[0]),r=i[1];break;case 3:s.id=ft(i[0]),s.startTime=lt(void 0,m,i[1]),r=i[2]}return r&&(s.endTime=ut(s.startTime,m,r,K),s.manualEndTime=a(r,"YYYY-MM-DD",!0).isValid(),ot(s,m,T,v)),s},"compileData"),kt=(0,s.K2)(function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const i=n.split(","),s={};Kt(i,s,C);for(let r=0;r<i.length;r++)i[r]=i[r].trim();switch(i.length){case 1:s.id=ft(),s.startTime={type:"prevTaskEnd",id:t},s.endTime={data:i[0]};break;case 2:s.id=ft(),s.startTime={type:"getStartDate",startData:i[0]},s.endTime={data:i[1]};break;case 3:s.id=ft(i[0]),s.startTime={type:"getStartDate",startData:i[1]},s.endTime={data:i[2]}}return s},"parseData"),mt=[],pt={},gt=(0,s.K2)(function(t,e){const n={section:D,type:D,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},i=kt(y,e);n.raw.startTime=i.startTime,n.raw.endTime=i.endTime,n.id=i.id,n.prevTaskId=y,n.active=i.active,n.done=i.done,n.crit=i.crit,n.milestone=i.milestone,n.vert=i.vert,n.order=L,L++;const s=mt.push(n);y=n.id,pt[n.id]=s-1},"addTask"),bt=(0,s.K2)(function(t){const e=pt[t];return mt[e]},"findTaskById"),vt=(0,s.K2)(function(t,e){const n={section:D,type:D,description:t,task:t,classes:[]},i=yt(f,e);n.startTime=i.startTime,n.endTime=i.endTime,n.id=i.id,n.active=i.active,n.done=i.done,n.crit=i.crit,n.milestone=i.milestone,n.vert=i.vert,f=n,_.push(n)},"addTaskOrg"),Tt=(0,s.K2)(function(){const t=(0,s.K2)(function(t){const e=mt[t];let n="";switch(mt[t].raw.startTime.type){case"prevTaskEnd":{const t=bt(e.prevTaskId);e.startTime=t.endTime;break}case"getStartDate":n=lt(void 0,m,mt[t].raw.startTime.startData),n&&(mt[t].startTime=n)}return mt[t].startTime&&(mt[t].endTime=ut(mt[t].startTime,m,mt[t].raw.endTime.data,K),mt[t].endTime&&(mt[t].processed=!0,mt[t].manualEndTime=a(mt[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),ot(mt[t],m,T,v))),mt[t].processed},"compileTask");let e=!0;for(const[n,i]of mt.entries())t(n),e=e&&i.processed;return e},"compileTasks"),xt=(0,s.K2)(function(t,e){let n=e;"loose"!==(0,s.D7)().securityLevel&&(n=(0,r.J)(e)),t.split(",").forEach(function(t){void 0!==bt(t)&&(Dt(t,()=>{window.open(n,"_self")}),x.set(t,n))}),wt(t,"clickable")},"setLink"),wt=(0,s.K2)(function(t,e){t.split(",").forEach(function(t){let n=bt(t);void 0!==n&&n.classes.push(e)})},"setClass"),_t=(0,s.K2)(function(t,e,n){if("loose"!==(0,s.D7)().securityLevel)return;if(void 0===e)return;let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<r.length;t++){let e=r[t].trim();e.startsWith('"')&&e.endsWith('"')&&(e=e.substr(1,e.length-2)),r[t]=e}}0===r.length&&r.push(t),void 0!==bt(t)&&Dt(t,()=>{i._K.runFunc(e,...r)})},"setClickFun"),Dt=(0,s.K2)(function(t,e){S.push(function(){const n=document.querySelector(`[id="${t}"]`);null!==n&&n.addEventListener("click",function(){e()})},function(){const n=document.querySelector(`[id="${t}-text"]`);null!==n&&n.addEventListener("click",function(){e()})})},"pushFun"),$t=(0,s.K2)(function(t,e,n){t.split(",").forEach(function(t){_t(t,e,n)}),wt(t,"clickable")},"setClickEvent"),Ct=(0,s.K2)(function(t){S.forEach(function(e){e(t)})},"bindFunctions"),St={getConfig:(0,s.K2)(()=>(0,s.D7)().gantt,"getConfig"),clear:Y,setDateFormat:z,getDateFormat:V,enableInclusiveEndDates:G,endDatesAreInclusive:N,enableTopAxis:H,topAxisEnabled:R,setAxisFormat:I,getAxisFormat:F,setTickInterval:W,getTickInterval:O,setTodayMarker:P,getTodayMarker:B,setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,setDisplayMode:j,getDisplayMode:U,setAccDescription:s.EI,getAccDescription:s.m7,addSection:tt,getSections:et,getTasks:nt,addTask:gt,findTaskById:bt,addTaskOrg:vt,setIncludes:Z,getIncludes:X,setExcludes:q,getExcludes:Q,setClickEvent:$t,setLink:xt,getLinks:J,bindFunctions:Ct,parseDuration:dt,isInvalidDate:it,setWeekday:st,getWeekday:rt,setWeekend:at};function Kt(t,e,n){let i=!0;for(;i;)i=!1,n.forEach(function(n){const s=new RegExp("^\\s*"+n+"\\s*$");t[0].match(s)&&(e[n]=!0,t.shift(1),i=!0)})}(0,s.K2)(Kt,"getTaskTags");var Et,Mt=(0,s.K2)(function(){s.Rm.debug("Something is calling, setConf, remove the call")},"setConf"),At={monday:d.ABi,tuesday:d.PGu,wednesday:d.GuW,thursday:d.Mol,friday:d.TUC,saturday:d.rGn,sunday:d.YPH},Lt=(0,s.K2)((t,e)=>{let n=[...t].map(()=>-1/0),i=[...t].sort((t,e)=>t.startTime-e.startTime||t.order-e.order),s=0;for(const r of i)for(let t=0;t<n.length;t++)if(r.startTime>=n[t]){n[t]=r.endTime,r.order=t+e,t>s&&(s=t);break}return s},"getMaxIntersections"),Yt={parser:h,db:St,renderer:{setConf:Mt,draw:(0,s.K2)(function(t,e,n,i){const r=(0,s.D7)().gantt,o=(0,s.D7)().securityLevel;let c;"sandbox"===o&&(c=(0,d.Ltv)("#i"+e));const l="sandbox"===o?(0,d.Ltv)(c.nodes()[0].contentDocument.body):(0,d.Ltv)("body"),u="sandbox"===o?c.nodes()[0].contentDocument:document,h=u.getElementById(e);void 0===(Et=h.parentElement.offsetWidth)&&(Et=1200),void 0!==r.useWidth&&(Et=r.useWidth);const f=i.db.getTasks();let y=[];for(const s of f)y.push(s.type);y=$(y);const k={};let m=2*r.topPadding;if("compact"===i.db.getDisplayMode()||"compact"===r.displayMode){const t={};for(const n of f)void 0===t[n.section]?t[n.section]=[n]:t[n.section].push(n);let e=0;for(const n of Object.keys(t)){const i=Lt(t[n],e)+1;e+=i,m+=i*(r.barHeight+r.barGap),k[n]=i}}else{m+=f.length*(r.barHeight+r.barGap);for(const t of y)k[t]=f.filter(e=>e.type===t).length}h.setAttribute("viewBox","0 0 "+Et+" "+m);const p=l.select(`[id="${e}"]`),g=(0,d.w7C)().domain([(0,d.jkA)(f,function(t){return t.startTime}),(0,d.T9B)(f,function(t){return t.endTime})]).rangeRound([0,Et-r.leftPadding-r.rightPadding]);function b(t,e){const n=t.startTime,i=e.startTime;let s=0;return n>i?s=1:n<i&&(s=-1),s}function v(t,e,n){const s=r.barHeight,a=s+r.barGap,o=r.topPadding,c=r.leftPadding,l=(0,d.m4Y)().domain([0,y.length]).range(["#00B9FA","#F95002"]).interpolate(d.bEH);x(a,o,c,e,n,t,i.db.getExcludes(),i.db.getIncludes()),w(c,o,e,n),T(t,a,o,c,s,l,e),_(a,o),D(c,o,e,n)}function T(t,n,a,o,c,l,u){t.sort((t,e)=>t.vert===e.vert?0:t.vert?1:-1);const h=[...new Set(t.map(t=>t.order))].map(e=>t.find(t=>t.order===e));p.append("g").selectAll("rect").data(h).enter().append("rect").attr("x",0).attr("y",function(t,e){return t.order*n+a-2}).attr("width",function(){return u-r.rightPadding/2}).attr("height",n).attr("class",function(t){for(const[e,n]of y.entries())if(t.type===n)return"section section"+e%r.numberSectionStyles;return"section section0"}).enter();const k=p.append("g").selectAll("rect").data(t).enter(),m=i.db.getLinks();k.append("rect").attr("id",function(t){return t.id}).attr("rx",3).attr("ry",3).attr("x",function(t){return t.milestone?g(t.startTime)+o+.5*(g(t.endTime)-g(t.startTime))-.5*c:g(t.startTime)+o}).attr("y",function(t,e){return e=t.order,t.vert?r.gridLineStartPadding:e*n+a}).attr("width",function(t){return t.milestone?c:t.vert?.08*c:g(t.renderEndTime||t.endTime)-g(t.startTime)}).attr("height",function(t){return t.vert?f.length*(r.barHeight+r.barGap)+2*r.barHeight:c}).attr("transform-origin",function(t,e){return e=t.order,(g(t.startTime)+o+.5*(g(t.endTime)-g(t.startTime))).toString()+"px "+(e*n+a+.5*c).toString()+"px"}).attr("class",function(t){let e="";t.classes.length>0&&(e=t.classes.join(" "));let n=0;for(const[s,a]of y.entries())t.type===a&&(n=s%r.numberSectionStyles);let i="";return t.active?t.crit?i+=" activeCrit":i=" active":t.done?i=t.crit?" doneCrit":" done":t.crit&&(i+=" crit"),0===i.length&&(i=" task"),t.milestone&&(i=" milestone "+i),t.vert&&(i=" vert "+i),i+=n,i+=" "+e,"task"+i}),k.append("text").attr("id",function(t){return t.id+"-text"}).text(function(t){return t.task}).attr("font-size",r.fontSize).attr("x",function(t){let e=g(t.startTime),n=g(t.renderEndTime||t.endTime);if(t.milestone&&(e+=.5*(g(t.endTime)-g(t.startTime))-.5*c,n=e+c),t.vert)return g(t.startTime)+o;const i=this.getBBox().width;return i>n-e?n+i+1.5*r.leftPadding>u?e+o-5:n+o+5:(n-e)/2+e+o}).attr("y",function(t,e){return t.vert?r.gridLineStartPadding+f.length*(r.barHeight+r.barGap)+60:t.order*n+r.barHeight/2+(r.fontSize/2-2)+a}).attr("text-height",c).attr("class",function(t){const e=g(t.startTime);let n=g(t.endTime);t.milestone&&(n=e+c);const i=this.getBBox().width;let s="";t.classes.length>0&&(s=t.classes.join(" "));let a=0;for(const[c,l]of y.entries())t.type===l&&(a=c%r.numberSectionStyles);let o="";return t.active&&(o=t.crit?"activeCritText"+a:"activeText"+a),t.done?o=t.crit?o+" doneCritText"+a:o+" doneText"+a:t.crit&&(o=o+" critText"+a),t.milestone&&(o+=" milestoneText"),t.vert&&(o+=" vertText"),i>n-e?n+i+1.5*r.leftPadding>u?s+" taskTextOutsideLeft taskTextOutside"+a+" "+o:s+" taskTextOutsideRight taskTextOutside"+a+" "+o+" width-"+i:s+" taskText taskText"+a+" "+o+" width-"+i});if("sandbox"===(0,s.D7)().securityLevel){let t;t=(0,d.Ltv)("#i"+e);const n=t.nodes()[0].contentDocument;k.filter(function(t){return m.has(t.id)}).each(function(t){var e=n.querySelector("#"+t.id),i=n.querySelector("#"+t.id+"-text");const s=e.parentNode;var r=n.createElement("a");r.setAttribute("xlink:href",m.get(t.id)),r.setAttribute("target","_top"),s.appendChild(r),r.appendChild(e),r.appendChild(i)})}}function x(t,e,n,o,c,l,d,u){if(0===d.length&&0===u.length)return;let h,f;for(const{startTime:i,endTime:s}of l)(void 0===h||i<h)&&(h=i),(void 0===f||s>f)&&(f=s);if(!h||!f)return;if(a(f).diff(a(h),"year")>5)return void s.Rm.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");const y=i.db.getDateFormat(),k=[];let m=null,b=a(h);for(;b.valueOf()<=f;)i.db.isInvalidDate(b,y,d,u)?m?m.end=b:m={start:b,end:b}:m&&(k.push(m),m=null),b=b.add(1,"d");p.append("g").selectAll("rect").data(k).enter().append("rect").attr("id",function(t){return"exclude-"+t.start.format("YYYY-MM-DD")}).attr("x",function(t){return g(t.start)+n}).attr("y",r.gridLineStartPadding).attr("width",function(t){const e=t.end.add(1,"day");return g(e)-g(t.start)}).attr("height",c-e-r.gridLineStartPadding).attr("transform-origin",function(e,i){return(g(e.start)+n+.5*(g(e.end)-g(e.start))).toString()+"px "+(i*t+.5*c).toString()+"px"}).attr("class","exclude-range")}function w(t,e,n,s){let a=(0,d.l78)(g).tickSize(-s+e+r.gridLineStartPadding).tickFormat((0,d.DCK)(i.db.getAxisFormat()||r.axisFormat||"%Y-%m-%d"));const o=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(i.db.getTickInterval()||r.tickInterval);if(null!==o){const t=o[1],e=o[2],n=i.db.getWeekday()||r.weekday;switch(e){case"millisecond":a.ticks(d.t6C.every(t));break;case"second":a.ticks(d.ucG.every(t));break;case"minute":a.ticks(d.wXd.every(t));break;case"hour":a.ticks(d.Agd.every(t));break;case"day":a.ticks(d.UAC.every(t));break;case"week":a.ticks(At[n].every(t));break;case"month":a.ticks(d.Ui6.every(t))}}if(p.append("g").attr("class","grid").attr("transform","translate("+t+", "+(s-50)+")").call(a).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),i.db.topAxisEnabled()||r.topAxis){let n=(0,d.tlR)(g).tickSize(-s+e+r.gridLineStartPadding).tickFormat((0,d.DCK)(i.db.getAxisFormat()||r.axisFormat||"%Y-%m-%d"));if(null!==o){const t=o[1],e=o[2],s=i.db.getWeekday()||r.weekday;switch(e){case"millisecond":n.ticks(d.t6C.every(t));break;case"second":n.ticks(d.ucG.every(t));break;case"minute":n.ticks(d.wXd.every(t));break;case"hour":n.ticks(d.Agd.every(t));break;case"day":n.ticks(d.UAC.every(t));break;case"week":n.ticks(At[s].every(t));break;case"month":n.ticks(d.Ui6.every(t))}}p.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function _(t,e){let n=0;const i=Object.keys(k).map(t=>[t,k[t]]);p.append("g").selectAll("text").data(i).enter().append(function(t){const e=t[0].split(s.Y2.lineBreakRegex),n=-(e.length-1)/2,i=u.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("dy",n+"em");for(const[s,r]of e.entries()){const t=u.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttribute("alignment-baseline","central"),t.setAttribute("x","10"),s>0&&t.setAttribute("dy","1em"),t.textContent=r,i.appendChild(t)}return i}).attr("x",10).attr("y",function(s,r){if(!(r>0))return s[1]*t/2+e;for(let a=0;a<r;a++)return n+=i[r-1][1],s[1]*t/2+n*t+e}).attr("font-size",r.sectionFontSize).attr("class",function(t){for(const[e,n]of y.entries())if(t[0]===n)return"sectionTitle sectionTitle"+e%r.numberSectionStyles;return"sectionTitle"})}function D(t,e,n,s){const a=i.db.getTodayMarker();if("off"===a)return;const o=p.append("g").attr("class","today"),c=new Date,l=o.append("line");l.attr("x1",g(c)+t).attr("x2",g(c)+t).attr("y1",r.titleTopMargin).attr("y2",s-r.titleTopMargin).attr("class","today"),""!==a&&l.attr("style",a.replace(/,/g,";"))}function $(t){const e={},n=[];for(let i=0,s=t.length;i<s;++i)Object.prototype.hasOwnProperty.call(e,t[i])||(e[t[i]]=!0,n.push(t[i]));return n}(0,s.K2)(b,"taskCompare"),f.sort(b),v(f,Et,m),(0,s.a$)(p,m,Et,r.useMaxWidth),p.append("text").text(i.db.getDiagramTitle()).attr("x",Et/2).attr("y",r.titleTopMargin).attr("class","titleText"),(0,s.K2)(v,"makeGantt"),(0,s.K2)(T,"drawRects"),(0,s.K2)(x,"drawExcludeDays"),(0,s.K2)(w,"makeGrid"),(0,s.K2)(_,"vertLabels"),(0,s.K2)(D,"drawToday"),(0,s.K2)($,"checkUnique")},"draw")},styles:(0,s.K2)(t=>`\n .mermaid-main-font {\n font-family: ${t.fontFamily};\n }\n\n .exclude-range {\n fill: ${t.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${t.sectionBkgColor};\n }\n\n .section2 {\n fill: ${t.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${t.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${t.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n }\n\n .grid .tick text {\n font-family: ${t.fontFamily};\n fill: ${t.textColor};\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${t.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideRight {\n fill: ${t.taskTextDarkColor};\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideLeft {\n fill: ${t.taskTextDarkColor};\n text-anchor: end;\n }\n\n\n /* Special case clickable */\n\n .task.clickable {\n cursor: pointer;\n }\n\n .taskText.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${t.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${t.taskBkgColor};\n stroke: ${t.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${t.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${t.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${t.activeTaskBkgColor};\n stroke: ${t.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${t.doneTaskBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .vert {\n stroke: ${t.vertLineColor};\n }\n\n .vertText {\n font-size: 15px;\n text-anchor: middle;\n fill: ${t.vertLineColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.titleColor||t.textColor};\n font-family: ${t.fontFamily};\n }\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/91e5ca6b.34aeb968.js b/assets/js/91e5ca6b.34aeb968.js new file mode 100644 index 0000000000..347b702735 --- /dev/null +++ b/assets/js/91e5ca6b.34aeb968.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[259],{27994:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>a,frontMatter:()=>c,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/docs/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sort_dependencies","permalink":"/ModuleCheck/docs/next/rules/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/sorting/sort_dependencies.md","tags":[],"version":"current","frontMatter":{"id":"sort_dependencies","slug":"/rules/sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/next/rules/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/next/rules/sort_plugins"}}');var r=n(23420),o=n(65404);const c={id:"sort_dependencies",slug:"/rules/sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},i=void 0,d={},u=[];function l(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l()}},65404:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>i});var s=n(36672);const r={},o=s.createContext(r);function c(e){const t=s.useContext(o);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/91ee770c.5b0131e0.js b/assets/js/91ee770c.5b0131e0.js new file mode 100644 index 0000000000..8c7924fe25 --- /dev/null +++ b/assets/js/91ee770c.5b0131e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7950],{65404:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>a});var o=s(36672);const n={},r=o.createContext(n);function c(e){const t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:c(e.components),o.createElement(r.Provider,{value:t},e.children)}},74970:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>m,frontMatter:()=>c,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.12.1/rules/compiler/custom_kapt_matchers.md","sourceDirName":"rules/compiler","slug":"/rules/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.12.1/rules/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/compiler/custom_kapt_matchers.md","tags":[],"version":"0.12.1","frontMatter":{"id":"custom_kapt_matchers","slug":"/rules/custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.1/rules/sort_dependencies"}}');var n=s(23420),r=s(65404);const c={id:"custom_kapt_matchers",slug:"/rules/custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},a=void 0,i={},l=[];function u(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,n.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/92131bac.7edf15d9.js b/assets/js/92131bac.7edf15d9.js new file mode 100644 index 0000000000..08ba9c4e40 --- /dev/null +++ b/assets/js/92131bac.7edf15d9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9583],{30185:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.12.1/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sort_dependencies","permalink":"/ModuleCheck/docs/0.12.1/rules/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/sorting/sort_dependencies.md","tags":[],"version":"0.12.1","frontMatter":{"id":"sort_dependencies","slug":"/rules/sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.1/rules/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.1/rules/sort_plugins"}}');var r=s(23420),o=s(65404);const i={id:"sort_dependencies",slug:"/rules/sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l()}},65404:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>c});var n=s(36672);const r={},o=n.createContext(r);function i(e){const t=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9402.3e4174f5.js b/assets/js/9402.3e4174f5.js new file mode 100644 index 0000000000..4a6e79d8dd --- /dev/null +++ b/assets/js/9402.3e4174f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9402],{19402:(e,t,r)=>{r.d(t,{default:()=>rn});class a{constructor(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new a(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class n{constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}range(e,t){return new n(t,a.range(this,e))}}class i{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var r,a,n="KaTeX parse error: "+e,o=t&&t.loc;if(o&&o.start<=o.end){var s=o.lexer.input;r=o.start,a=o.end,r===s.length?n+=" at end of input: ":n+=" at position "+(r+1)+": ";var l=s.slice(r,a).replace(/[^]/g,"$&\u0332");n+=(r>15?"\u2026"+s.slice(r-15,r):s.slice(0,r))+l+(a+15<s.length?s.slice(a,a+15)+"\u2026":s.slice(a))}var h=new Error(n);return h.name="ParseError",h.__proto__=i.prototype,h.position=r,null!=r&&null!=a&&(h.length=a-r),h.rawMessage=e,h}}i.prototype.__proto__=Error.prototype;var o=/([A-Z])/g,s={"&":"&",">":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var h=function e(t){return"ordgroup"===t.type||"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},m={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(l,e=>s[e])},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:h,isCharacterBox:function(e){var t=h(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}},c={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function p(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class u{constructor(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{},c)if(c.hasOwnProperty(t)){var r=c[t];this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:p(r)}}reportNonstrict(e,t,r){var a=this.strict;if("function"==typeof a&&(a=a(e,t,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new i("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]")}}useStrictBehavior(e,t,r){var a=this.strict;if("function"==typeof a)try{a=a(e,t,r)}catch(n){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]"),!1)))}isTrusted(e){if(e.url&&!e.protocol){var t=m.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}var r="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(r)}}class d{constructor(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}sup(){return g[f[this.id]]}sub(){return g[v[this.id]]}fracNum(){return g[b[this.id]]}fracDen(){return g[y[this.id]]}cramp(){return g[x[this.id]]}text(){return g[w[this.id]]}isTight(){return this.size>=2}}var g=[new d(0,0,!1),new d(1,0,!0),new d(2,1,!1),new d(3,1,!0),new d(4,2,!1),new d(5,2,!0),new d(6,3,!1),new d(7,3,!0)],f=[4,5,4,5,6,7,6,7],v=[5,5,5,5,7,7,7,7],b=[2,3,4,5,6,7,6,7],y=[3,3,5,5,7,7,7,7],x=[1,1,3,3,5,5,7,7],w=[0,1,2,3,2,3,2,3],k={DISPLAY:g[0],TEXT:g[2],SCRIPT:g[4],SCRIPTSCRIPT:g[6]},S=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var M=[];function z(e){for(var t=0;t<M.length;t+=2)if(e>=M[t]&&e<=M[t+1])return!0;return!1}S.forEach(e=>e.blocks.forEach(e=>M.push(...e)));var A=80,T={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"};class B{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return m.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}toMarkup(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e}toText(){return this.children.map(e=>e.toText()).join("")}}var C={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},N={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},q={"\xc5":"A","\xd0":"D","\xde":"o","\xe5":"a","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function I(e,t,r){if(!C[t])throw new Error("Font metrics not found for font: "+t+".");var a=e.charCodeAt(0),n=C[t][a];if(!n&&e[0]in q&&(a=q[e[0]].charCodeAt(0),n=C[t][a]),n||"text"!==r||z(a)&&(n=C[t][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var R={};var H=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],O=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],E=function(e,t){return t.size<2?e:H[e-1][t.size-1]};class L{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||L.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=O[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return new L(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:E(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:O[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=E(L.BASESIZE,e);return this.size===t&&this.textSize===L.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==L.BASESIZE?["sizing","reset-size"+this.size,"size"+L.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!R[t=e>=5?0:e>=3?1:2]){var r=R[t]={cssEmPerMu:N.quad[t]/18};for(var a in N)N.hasOwnProperty(a)&&(r[a]=N[a][t])}return R[t]}(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}L.BASESIZE=6;var D={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},V={ex:!0,em:!0,mu:!0},P=function(e){return"string"!=typeof e&&(e=e.unit),e in D||e in V||"ex"===e},F=function(e,t){var r;if(e.unit in D)r=D[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var a;if(a=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=a.fontMetrics().xHeight;else{if("em"!==e.unit)throw new i("Invalid unit: '"+e.unit+"'");r=a.fontMetrics().quad}a!==t&&(r*=a.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},G=function(e){return+e.toFixed(4)+"em"},U=function(e){return e.filter(e=>e).join(" ")},Y=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");var a=t.getColor();a&&(this.style.color=a)}},X=function(e){var t=document.createElement(e);for(var r in t.className=U(this.classes),this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);for(var a in this.attributes)this.attributes.hasOwnProperty(a)&&t.setAttribute(a,this.attributes[a]);for(var n=0;n<this.children.length;n++)t.appendChild(this.children[n].toNode());return t},W=/[\s"'>/=\x00-\x1f]/,_=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+m.escape(U(this.classes))+'"');var r="";for(var a in this.style)this.style.hasOwnProperty(a)&&(r+=m.hyphenate(a)+":"+this.style[a]+";");for(var n in r&&(t+=' style="'+m.escape(r)+'"'),this.attributes)if(this.attributes.hasOwnProperty(n)){if(W.test(n))throw new i("Invalid attribute name '"+n+"'");t+=" "+n+'="'+m.escape(this.attributes[n])+'"'}t+=">";for(var o=0;o<this.children.length;o++)t+=this.children[o].toMarkup();return t+="</"+e+">"};class j{constructor(e,t,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,Y.call(this,e,r,a),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return m.contains(this.classes,e)}toNode(){return X.call(this,"span")}toMarkup(){return _.call(this,"span")}}class ${constructor(e,t,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Y.call(this,t,a),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return m.contains(this.classes,e)}toNode(){return X.call(this,"a")}toMarkup(){return _.call(this,"a")}}class Z{constructor(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return m.contains(this.classes,e)}toNode(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e}toMarkup(){var e='<img src="'+m.escape(this.src)+'" alt="'+m.escape(this.alt)+'"',t="";for(var r in this.style)this.style.hasOwnProperty(r)&&(t+=m.hyphenate(r)+":"+this.style[r]+";");return t&&(e+=' style="'+m.escape(t)+'"'),e+="'/>"}}var K={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};class J{constructor(e,t,r,a,n,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=r||0,this.italic=a||0,this.skew=n||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t<S.length;t++)for(var r=S[t],a=0;a<r.blocks.length;a++){var n=r.blocks[a];if(e>=n[0]&&e<=n[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=K[this.text])}hasClass(e){return m.contains(this.classes,e)}toNode(){var e=document.createTextNode(this.text),t=null;for(var r in this.italic>0&&((t=document.createElement("span")).style.marginRight=G(this.italic)),this.classes.length>0&&((t=t||document.createElement("span")).className=U(this.classes)),this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement("span")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=m.escape(U(this.classes)),t+='"');var r="";for(var a in this.italic>0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=m.hyphenate(a)+":"+this.style[a]+";");r&&(e=!0,t+=' style="'+m.escape(r)+'"');var n=m.escape(this.text);return e?(t+=">",t+=n,t+="</span>"):n}}class Q{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e}toMarkup(){var e='<svg xmlns="http://www.w3.org/2000/svg"';for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="'+m.escape(this.attributes[t])+'"');e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</svg>"}}class ee{constructor(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",T[this.pathName]),e}toMarkup(){return this.alternate?'<path d="'+m.escape(this.alternate)+'"/>':'<path d="'+m.escape(T[this.pathName])+'"/>'}}class te{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e}toMarkup(){var e="<line";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="'+m.escape(this.attributes[t])+'"');return e+="/>"}}function re(e){if(e instanceof J)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}var ae={bin:1,close:1,inner:1,open:1,punct:1,rel:1},ne={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},ie={math:{},text:{}};function oe(e,t,r,a,n,i){ie[e][n]={font:t,group:r,replace:a},i&&a&&(ie[e][a]=ie[e][n])}var se="math",le="text",he="main",me="ams",ce="accent-token",pe="bin",ue="close",de="inner",ge="mathord",fe="op-token",ve="open",be="punct",ye="rel",xe="spacing",we="textord";oe(se,he,ye,"\u2261","\\equiv",!0),oe(se,he,ye,"\u227a","\\prec",!0),oe(se,he,ye,"\u227b","\\succ",!0),oe(se,he,ye,"\u223c","\\sim",!0),oe(se,he,ye,"\u22a5","\\perp"),oe(se,he,ye,"\u2aaf","\\preceq",!0),oe(se,he,ye,"\u2ab0","\\succeq",!0),oe(se,he,ye,"\u2243","\\simeq",!0),oe(se,he,ye,"\u2223","\\mid",!0),oe(se,he,ye,"\u226a","\\ll",!0),oe(se,he,ye,"\u226b","\\gg",!0),oe(se,he,ye,"\u224d","\\asymp",!0),oe(se,he,ye,"\u2225","\\parallel"),oe(se,he,ye,"\u22c8","\\bowtie",!0),oe(se,he,ye,"\u2323","\\smile",!0),oe(se,he,ye,"\u2291","\\sqsubseteq",!0),oe(se,he,ye,"\u2292","\\sqsupseteq",!0),oe(se,he,ye,"\u2250","\\doteq",!0),oe(se,he,ye,"\u2322","\\frown",!0),oe(se,he,ye,"\u220b","\\ni",!0),oe(se,he,ye,"\u221d","\\propto",!0),oe(se,he,ye,"\u22a2","\\vdash",!0),oe(se,he,ye,"\u22a3","\\dashv",!0),oe(se,he,ye,"\u220b","\\owns"),oe(se,he,be,".","\\ldotp"),oe(se,he,be,"\u22c5","\\cdotp"),oe(se,he,we,"#","\\#"),oe(le,he,we,"#","\\#"),oe(se,he,we,"&","\\&"),oe(le,he,we,"&","\\&"),oe(se,he,we,"\u2135","\\aleph",!0),oe(se,he,we,"\u2200","\\forall",!0),oe(se,he,we,"\u210f","\\hbar",!0),oe(se,he,we,"\u2203","\\exists",!0),oe(se,he,we,"\u2207","\\nabla",!0),oe(se,he,we,"\u266d","\\flat",!0),oe(se,he,we,"\u2113","\\ell",!0),oe(se,he,we,"\u266e","\\natural",!0),oe(se,he,we,"\u2663","\\clubsuit",!0),oe(se,he,we,"\u2118","\\wp",!0),oe(se,he,we,"\u266f","\\sharp",!0),oe(se,he,we,"\u2662","\\diamondsuit",!0),oe(se,he,we,"\u211c","\\Re",!0),oe(se,he,we,"\u2661","\\heartsuit",!0),oe(se,he,we,"\u2111","\\Im",!0),oe(se,he,we,"\u2660","\\spadesuit",!0),oe(se,he,we,"\xa7","\\S",!0),oe(le,he,we,"\xa7","\\S"),oe(se,he,we,"\xb6","\\P",!0),oe(le,he,we,"\xb6","\\P"),oe(se,he,we,"\u2020","\\dag"),oe(le,he,we,"\u2020","\\dag"),oe(le,he,we,"\u2020","\\textdagger"),oe(se,he,we,"\u2021","\\ddag"),oe(le,he,we,"\u2021","\\ddag"),oe(le,he,we,"\u2021","\\textdaggerdbl"),oe(se,he,ue,"\u23b1","\\rmoustache",!0),oe(se,he,ve,"\u23b0","\\lmoustache",!0),oe(se,he,ue,"\u27ef","\\rgroup",!0),oe(se,he,ve,"\u27ee","\\lgroup",!0),oe(se,he,pe,"\u2213","\\mp",!0),oe(se,he,pe,"\u2296","\\ominus",!0),oe(se,he,pe,"\u228e","\\uplus",!0),oe(se,he,pe,"\u2293","\\sqcap",!0),oe(se,he,pe,"\u2217","\\ast"),oe(se,he,pe,"\u2294","\\sqcup",!0),oe(se,he,pe,"\u25ef","\\bigcirc",!0),oe(se,he,pe,"\u2219","\\bullet",!0),oe(se,he,pe,"\u2021","\\ddagger"),oe(se,he,pe,"\u2240","\\wr",!0),oe(se,he,pe,"\u2a3f","\\amalg"),oe(se,he,pe,"&","\\And"),oe(se,he,ye,"\u27f5","\\longleftarrow",!0),oe(se,he,ye,"\u21d0","\\Leftarrow",!0),oe(se,he,ye,"\u27f8","\\Longleftarrow",!0),oe(se,he,ye,"\u27f6","\\longrightarrow",!0),oe(se,he,ye,"\u21d2","\\Rightarrow",!0),oe(se,he,ye,"\u27f9","\\Longrightarrow",!0),oe(se,he,ye,"\u2194","\\leftrightarrow",!0),oe(se,he,ye,"\u27f7","\\longleftrightarrow",!0),oe(se,he,ye,"\u21d4","\\Leftrightarrow",!0),oe(se,he,ye,"\u27fa","\\Longleftrightarrow",!0),oe(se,he,ye,"\u21a6","\\mapsto",!0),oe(se,he,ye,"\u27fc","\\longmapsto",!0),oe(se,he,ye,"\u2197","\\nearrow",!0),oe(se,he,ye,"\u21a9","\\hookleftarrow",!0),oe(se,he,ye,"\u21aa","\\hookrightarrow",!0),oe(se,he,ye,"\u2198","\\searrow",!0),oe(se,he,ye,"\u21bc","\\leftharpoonup",!0),oe(se,he,ye,"\u21c0","\\rightharpoonup",!0),oe(se,he,ye,"\u2199","\\swarrow",!0),oe(se,he,ye,"\u21bd","\\leftharpoondown",!0),oe(se,he,ye,"\u21c1","\\rightharpoondown",!0),oe(se,he,ye,"\u2196","\\nwarrow",!0),oe(se,he,ye,"\u21cc","\\rightleftharpoons",!0),oe(se,me,ye,"\u226e","\\nless",!0),oe(se,me,ye,"\ue010","\\@nleqslant"),oe(se,me,ye,"\ue011","\\@nleqq"),oe(se,me,ye,"\u2a87","\\lneq",!0),oe(se,me,ye,"\u2268","\\lneqq",!0),oe(se,me,ye,"\ue00c","\\@lvertneqq"),oe(se,me,ye,"\u22e6","\\lnsim",!0),oe(se,me,ye,"\u2a89","\\lnapprox",!0),oe(se,me,ye,"\u2280","\\nprec",!0),oe(se,me,ye,"\u22e0","\\npreceq",!0),oe(se,me,ye,"\u22e8","\\precnsim",!0),oe(se,me,ye,"\u2ab9","\\precnapprox",!0),oe(se,me,ye,"\u2241","\\nsim",!0),oe(se,me,ye,"\ue006","\\@nshortmid"),oe(se,me,ye,"\u2224","\\nmid",!0),oe(se,me,ye,"\u22ac","\\nvdash",!0),oe(se,me,ye,"\u22ad","\\nvDash",!0),oe(se,me,ye,"\u22ea","\\ntriangleleft"),oe(se,me,ye,"\u22ec","\\ntrianglelefteq",!0),oe(se,me,ye,"\u228a","\\subsetneq",!0),oe(se,me,ye,"\ue01a","\\@varsubsetneq"),oe(se,me,ye,"\u2acb","\\subsetneqq",!0),oe(se,me,ye,"\ue017","\\@varsubsetneqq"),oe(se,me,ye,"\u226f","\\ngtr",!0),oe(se,me,ye,"\ue00f","\\@ngeqslant"),oe(se,me,ye,"\ue00e","\\@ngeqq"),oe(se,me,ye,"\u2a88","\\gneq",!0),oe(se,me,ye,"\u2269","\\gneqq",!0),oe(se,me,ye,"\ue00d","\\@gvertneqq"),oe(se,me,ye,"\u22e7","\\gnsim",!0),oe(se,me,ye,"\u2a8a","\\gnapprox",!0),oe(se,me,ye,"\u2281","\\nsucc",!0),oe(se,me,ye,"\u22e1","\\nsucceq",!0),oe(se,me,ye,"\u22e9","\\succnsim",!0),oe(se,me,ye,"\u2aba","\\succnapprox",!0),oe(se,me,ye,"\u2246","\\ncong",!0),oe(se,me,ye,"\ue007","\\@nshortparallel"),oe(se,me,ye,"\u2226","\\nparallel",!0),oe(se,me,ye,"\u22af","\\nVDash",!0),oe(se,me,ye,"\u22eb","\\ntriangleright"),oe(se,me,ye,"\u22ed","\\ntrianglerighteq",!0),oe(se,me,ye,"\ue018","\\@nsupseteqq"),oe(se,me,ye,"\u228b","\\supsetneq",!0),oe(se,me,ye,"\ue01b","\\@varsupsetneq"),oe(se,me,ye,"\u2acc","\\supsetneqq",!0),oe(se,me,ye,"\ue019","\\@varsupsetneqq"),oe(se,me,ye,"\u22ae","\\nVdash",!0),oe(se,me,ye,"\u2ab5","\\precneqq",!0),oe(se,me,ye,"\u2ab6","\\succneqq",!0),oe(se,me,ye,"\ue016","\\@nsubseteqq"),oe(se,me,pe,"\u22b4","\\unlhd"),oe(se,me,pe,"\u22b5","\\unrhd"),oe(se,me,ye,"\u219a","\\nleftarrow",!0),oe(se,me,ye,"\u219b","\\nrightarrow",!0),oe(se,me,ye,"\u21cd","\\nLeftarrow",!0),oe(se,me,ye,"\u21cf","\\nRightarrow",!0),oe(se,me,ye,"\u21ae","\\nleftrightarrow",!0),oe(se,me,ye,"\u21ce","\\nLeftrightarrow",!0),oe(se,me,ye,"\u25b3","\\vartriangle"),oe(se,me,we,"\u210f","\\hslash"),oe(se,me,we,"\u25bd","\\triangledown"),oe(se,me,we,"\u25ca","\\lozenge"),oe(se,me,we,"\u24c8","\\circledS"),oe(se,me,we,"\xae","\\circledR"),oe(le,me,we,"\xae","\\circledR"),oe(se,me,we,"\u2221","\\measuredangle",!0),oe(se,me,we,"\u2204","\\nexists"),oe(se,me,we,"\u2127","\\mho"),oe(se,me,we,"\u2132","\\Finv",!0),oe(se,me,we,"\u2141","\\Game",!0),oe(se,me,we,"\u2035","\\backprime"),oe(se,me,we,"\u25b2","\\blacktriangle"),oe(se,me,we,"\u25bc","\\blacktriangledown"),oe(se,me,we,"\u25a0","\\blacksquare"),oe(se,me,we,"\u29eb","\\blacklozenge"),oe(se,me,we,"\u2605","\\bigstar"),oe(se,me,we,"\u2222","\\sphericalangle",!0),oe(se,me,we,"\u2201","\\complement",!0),oe(se,me,we,"\xf0","\\eth",!0),oe(le,he,we,"\xf0","\xf0"),oe(se,me,we,"\u2571","\\diagup"),oe(se,me,we,"\u2572","\\diagdown"),oe(se,me,we,"\u25a1","\\square"),oe(se,me,we,"\u25a1","\\Box"),oe(se,me,we,"\u25ca","\\Diamond"),oe(se,me,we,"\xa5","\\yen",!0),oe(le,me,we,"\xa5","\\yen",!0),oe(se,me,we,"\u2713","\\checkmark",!0),oe(le,me,we,"\u2713","\\checkmark"),oe(se,me,we,"\u2136","\\beth",!0),oe(se,me,we,"\u2138","\\daleth",!0),oe(se,me,we,"\u2137","\\gimel",!0),oe(se,me,we,"\u03dd","\\digamma",!0),oe(se,me,we,"\u03f0","\\varkappa"),oe(se,me,ve,"\u250c","\\@ulcorner",!0),oe(se,me,ue,"\u2510","\\@urcorner",!0),oe(se,me,ve,"\u2514","\\@llcorner",!0),oe(se,me,ue,"\u2518","\\@lrcorner",!0),oe(se,me,ye,"\u2266","\\leqq",!0),oe(se,me,ye,"\u2a7d","\\leqslant",!0),oe(se,me,ye,"\u2a95","\\eqslantless",!0),oe(se,me,ye,"\u2272","\\lesssim",!0),oe(se,me,ye,"\u2a85","\\lessapprox",!0),oe(se,me,ye,"\u224a","\\approxeq",!0),oe(se,me,pe,"\u22d6","\\lessdot"),oe(se,me,ye,"\u22d8","\\lll",!0),oe(se,me,ye,"\u2276","\\lessgtr",!0),oe(se,me,ye,"\u22da","\\lesseqgtr",!0),oe(se,me,ye,"\u2a8b","\\lesseqqgtr",!0),oe(se,me,ye,"\u2251","\\doteqdot"),oe(se,me,ye,"\u2253","\\risingdotseq",!0),oe(se,me,ye,"\u2252","\\fallingdotseq",!0),oe(se,me,ye,"\u223d","\\backsim",!0),oe(se,me,ye,"\u22cd","\\backsimeq",!0),oe(se,me,ye,"\u2ac5","\\subseteqq",!0),oe(se,me,ye,"\u22d0","\\Subset",!0),oe(se,me,ye,"\u228f","\\sqsubset",!0),oe(se,me,ye,"\u227c","\\preccurlyeq",!0),oe(se,me,ye,"\u22de","\\curlyeqprec",!0),oe(se,me,ye,"\u227e","\\precsim",!0),oe(se,me,ye,"\u2ab7","\\precapprox",!0),oe(se,me,ye,"\u22b2","\\vartriangleleft"),oe(se,me,ye,"\u22b4","\\trianglelefteq"),oe(se,me,ye,"\u22a8","\\vDash",!0),oe(se,me,ye,"\u22aa","\\Vvdash",!0),oe(se,me,ye,"\u2323","\\smallsmile"),oe(se,me,ye,"\u2322","\\smallfrown"),oe(se,me,ye,"\u224f","\\bumpeq",!0),oe(se,me,ye,"\u224e","\\Bumpeq",!0),oe(se,me,ye,"\u2267","\\geqq",!0),oe(se,me,ye,"\u2a7e","\\geqslant",!0),oe(se,me,ye,"\u2a96","\\eqslantgtr",!0),oe(se,me,ye,"\u2273","\\gtrsim",!0),oe(se,me,ye,"\u2a86","\\gtrapprox",!0),oe(se,me,pe,"\u22d7","\\gtrdot"),oe(se,me,ye,"\u22d9","\\ggg",!0),oe(se,me,ye,"\u2277","\\gtrless",!0),oe(se,me,ye,"\u22db","\\gtreqless",!0),oe(se,me,ye,"\u2a8c","\\gtreqqless",!0),oe(se,me,ye,"\u2256","\\eqcirc",!0),oe(se,me,ye,"\u2257","\\circeq",!0),oe(se,me,ye,"\u225c","\\triangleq",!0),oe(se,me,ye,"\u223c","\\thicksim"),oe(se,me,ye,"\u2248","\\thickapprox"),oe(se,me,ye,"\u2ac6","\\supseteqq",!0),oe(se,me,ye,"\u22d1","\\Supset",!0),oe(se,me,ye,"\u2290","\\sqsupset",!0),oe(se,me,ye,"\u227d","\\succcurlyeq",!0),oe(se,me,ye,"\u22df","\\curlyeqsucc",!0),oe(se,me,ye,"\u227f","\\succsim",!0),oe(se,me,ye,"\u2ab8","\\succapprox",!0),oe(se,me,ye,"\u22b3","\\vartriangleright"),oe(se,me,ye,"\u22b5","\\trianglerighteq"),oe(se,me,ye,"\u22a9","\\Vdash",!0),oe(se,me,ye,"\u2223","\\shortmid"),oe(se,me,ye,"\u2225","\\shortparallel"),oe(se,me,ye,"\u226c","\\between",!0),oe(se,me,ye,"\u22d4","\\pitchfork",!0),oe(se,me,ye,"\u221d","\\varpropto"),oe(se,me,ye,"\u25c0","\\blacktriangleleft"),oe(se,me,ye,"\u2234","\\therefore",!0),oe(se,me,ye,"\u220d","\\backepsilon"),oe(se,me,ye,"\u25b6","\\blacktriangleright"),oe(se,me,ye,"\u2235","\\because",!0),oe(se,me,ye,"\u22d8","\\llless"),oe(se,me,ye,"\u22d9","\\gggtr"),oe(se,me,pe,"\u22b2","\\lhd"),oe(se,me,pe,"\u22b3","\\rhd"),oe(se,me,ye,"\u2242","\\eqsim",!0),oe(se,he,ye,"\u22c8","\\Join"),oe(se,me,ye,"\u2251","\\Doteq",!0),oe(se,me,pe,"\u2214","\\dotplus",!0),oe(se,me,pe,"\u2216","\\smallsetminus"),oe(se,me,pe,"\u22d2","\\Cap",!0),oe(se,me,pe,"\u22d3","\\Cup",!0),oe(se,me,pe,"\u2a5e","\\doublebarwedge",!0),oe(se,me,pe,"\u229f","\\boxminus",!0),oe(se,me,pe,"\u229e","\\boxplus",!0),oe(se,me,pe,"\u22c7","\\divideontimes",!0),oe(se,me,pe,"\u22c9","\\ltimes",!0),oe(se,me,pe,"\u22ca","\\rtimes",!0),oe(se,me,pe,"\u22cb","\\leftthreetimes",!0),oe(se,me,pe,"\u22cc","\\rightthreetimes",!0),oe(se,me,pe,"\u22cf","\\curlywedge",!0),oe(se,me,pe,"\u22ce","\\curlyvee",!0),oe(se,me,pe,"\u229d","\\circleddash",!0),oe(se,me,pe,"\u229b","\\circledast",!0),oe(se,me,pe,"\u22c5","\\centerdot"),oe(se,me,pe,"\u22ba","\\intercal",!0),oe(se,me,pe,"\u22d2","\\doublecap"),oe(se,me,pe,"\u22d3","\\doublecup"),oe(se,me,pe,"\u22a0","\\boxtimes",!0),oe(se,me,ye,"\u21e2","\\dashrightarrow",!0),oe(se,me,ye,"\u21e0","\\dashleftarrow",!0),oe(se,me,ye,"\u21c7","\\leftleftarrows",!0),oe(se,me,ye,"\u21c6","\\leftrightarrows",!0),oe(se,me,ye,"\u21da","\\Lleftarrow",!0),oe(se,me,ye,"\u219e","\\twoheadleftarrow",!0),oe(se,me,ye,"\u21a2","\\leftarrowtail",!0),oe(se,me,ye,"\u21ab","\\looparrowleft",!0),oe(se,me,ye,"\u21cb","\\leftrightharpoons",!0),oe(se,me,ye,"\u21b6","\\curvearrowleft",!0),oe(se,me,ye,"\u21ba","\\circlearrowleft",!0),oe(se,me,ye,"\u21b0","\\Lsh",!0),oe(se,me,ye,"\u21c8","\\upuparrows",!0),oe(se,me,ye,"\u21bf","\\upharpoonleft",!0),oe(se,me,ye,"\u21c3","\\downharpoonleft",!0),oe(se,he,ye,"\u22b6","\\origof",!0),oe(se,he,ye,"\u22b7","\\imageof",!0),oe(se,me,ye,"\u22b8","\\multimap",!0),oe(se,me,ye,"\u21ad","\\leftrightsquigarrow",!0),oe(se,me,ye,"\u21c9","\\rightrightarrows",!0),oe(se,me,ye,"\u21c4","\\rightleftarrows",!0),oe(se,me,ye,"\u21a0","\\twoheadrightarrow",!0),oe(se,me,ye,"\u21a3","\\rightarrowtail",!0),oe(se,me,ye,"\u21ac","\\looparrowright",!0),oe(se,me,ye,"\u21b7","\\curvearrowright",!0),oe(se,me,ye,"\u21bb","\\circlearrowright",!0),oe(se,me,ye,"\u21b1","\\Rsh",!0),oe(se,me,ye,"\u21ca","\\downdownarrows",!0),oe(se,me,ye,"\u21be","\\upharpoonright",!0),oe(se,me,ye,"\u21c2","\\downharpoonright",!0),oe(se,me,ye,"\u21dd","\\rightsquigarrow",!0),oe(se,me,ye,"\u21dd","\\leadsto"),oe(se,me,ye,"\u21db","\\Rrightarrow",!0),oe(se,me,ye,"\u21be","\\restriction"),oe(se,he,we,"\u2018","`"),oe(se,he,we,"$","\\$"),oe(le,he,we,"$","\\$"),oe(le,he,we,"$","\\textdollar"),oe(se,he,we,"%","\\%"),oe(le,he,we,"%","\\%"),oe(se,he,we,"_","\\_"),oe(le,he,we,"_","\\_"),oe(le,he,we,"_","\\textunderscore"),oe(se,he,we,"\u2220","\\angle",!0),oe(se,he,we,"\u221e","\\infty",!0),oe(se,he,we,"\u2032","\\prime"),oe(se,he,we,"\u25b3","\\triangle"),oe(se,he,we,"\u0393","\\Gamma",!0),oe(se,he,we,"\u0394","\\Delta",!0),oe(se,he,we,"\u0398","\\Theta",!0),oe(se,he,we,"\u039b","\\Lambda",!0),oe(se,he,we,"\u039e","\\Xi",!0),oe(se,he,we,"\u03a0","\\Pi",!0),oe(se,he,we,"\u03a3","\\Sigma",!0),oe(se,he,we,"\u03a5","\\Upsilon",!0),oe(se,he,we,"\u03a6","\\Phi",!0),oe(se,he,we,"\u03a8","\\Psi",!0),oe(se,he,we,"\u03a9","\\Omega",!0),oe(se,he,we,"A","\u0391"),oe(se,he,we,"B","\u0392"),oe(se,he,we,"E","\u0395"),oe(se,he,we,"Z","\u0396"),oe(se,he,we,"H","\u0397"),oe(se,he,we,"I","\u0399"),oe(se,he,we,"K","\u039a"),oe(se,he,we,"M","\u039c"),oe(se,he,we,"N","\u039d"),oe(se,he,we,"O","\u039f"),oe(se,he,we,"P","\u03a1"),oe(se,he,we,"T","\u03a4"),oe(se,he,we,"X","\u03a7"),oe(se,he,we,"\xac","\\neg",!0),oe(se,he,we,"\xac","\\lnot"),oe(se,he,we,"\u22a4","\\top"),oe(se,he,we,"\u22a5","\\bot"),oe(se,he,we,"\u2205","\\emptyset"),oe(se,me,we,"\u2205","\\varnothing"),oe(se,he,ge,"\u03b1","\\alpha",!0),oe(se,he,ge,"\u03b2","\\beta",!0),oe(se,he,ge,"\u03b3","\\gamma",!0),oe(se,he,ge,"\u03b4","\\delta",!0),oe(se,he,ge,"\u03f5","\\epsilon",!0),oe(se,he,ge,"\u03b6","\\zeta",!0),oe(se,he,ge,"\u03b7","\\eta",!0),oe(se,he,ge,"\u03b8","\\theta",!0),oe(se,he,ge,"\u03b9","\\iota",!0),oe(se,he,ge,"\u03ba","\\kappa",!0),oe(se,he,ge,"\u03bb","\\lambda",!0),oe(se,he,ge,"\u03bc","\\mu",!0),oe(se,he,ge,"\u03bd","\\nu",!0),oe(se,he,ge,"\u03be","\\xi",!0),oe(se,he,ge,"\u03bf","\\omicron",!0),oe(se,he,ge,"\u03c0","\\pi",!0),oe(se,he,ge,"\u03c1","\\rho",!0),oe(se,he,ge,"\u03c3","\\sigma",!0),oe(se,he,ge,"\u03c4","\\tau",!0),oe(se,he,ge,"\u03c5","\\upsilon",!0),oe(se,he,ge,"\u03d5","\\phi",!0),oe(se,he,ge,"\u03c7","\\chi",!0),oe(se,he,ge,"\u03c8","\\psi",!0),oe(se,he,ge,"\u03c9","\\omega",!0),oe(se,he,ge,"\u03b5","\\varepsilon",!0),oe(se,he,ge,"\u03d1","\\vartheta",!0),oe(se,he,ge,"\u03d6","\\varpi",!0),oe(se,he,ge,"\u03f1","\\varrho",!0),oe(se,he,ge,"\u03c2","\\varsigma",!0),oe(se,he,ge,"\u03c6","\\varphi",!0),oe(se,he,pe,"\u2217","*",!0),oe(se,he,pe,"+","+"),oe(se,he,pe,"\u2212","-",!0),oe(se,he,pe,"\u22c5","\\cdot",!0),oe(se,he,pe,"\u2218","\\circ",!0),oe(se,he,pe,"\xf7","\\div",!0),oe(se,he,pe,"\xb1","\\pm",!0),oe(se,he,pe,"\xd7","\\times",!0),oe(se,he,pe,"\u2229","\\cap",!0),oe(se,he,pe,"\u222a","\\cup",!0),oe(se,he,pe,"\u2216","\\setminus",!0),oe(se,he,pe,"\u2227","\\land"),oe(se,he,pe,"\u2228","\\lor"),oe(se,he,pe,"\u2227","\\wedge",!0),oe(se,he,pe,"\u2228","\\vee",!0),oe(se,he,we,"\u221a","\\surd"),oe(se,he,ve,"\u27e8","\\langle",!0),oe(se,he,ve,"\u2223","\\lvert"),oe(se,he,ve,"\u2225","\\lVert"),oe(se,he,ue,"?","?"),oe(se,he,ue,"!","!"),oe(se,he,ue,"\u27e9","\\rangle",!0),oe(se,he,ue,"\u2223","\\rvert"),oe(se,he,ue,"\u2225","\\rVert"),oe(se,he,ye,"=","="),oe(se,he,ye,":",":"),oe(se,he,ye,"\u2248","\\approx",!0),oe(se,he,ye,"\u2245","\\cong",!0),oe(se,he,ye,"\u2265","\\ge"),oe(se,he,ye,"\u2265","\\geq",!0),oe(se,he,ye,"\u2190","\\gets"),oe(se,he,ye,">","\\gt",!0),oe(se,he,ye,"\u2208","\\in",!0),oe(se,he,ye,"\ue020","\\@not"),oe(se,he,ye,"\u2282","\\subset",!0),oe(se,he,ye,"\u2283","\\supset",!0),oe(se,he,ye,"\u2286","\\subseteq",!0),oe(se,he,ye,"\u2287","\\supseteq",!0),oe(se,me,ye,"\u2288","\\nsubseteq",!0),oe(se,me,ye,"\u2289","\\nsupseteq",!0),oe(se,he,ye,"\u22a8","\\models"),oe(se,he,ye,"\u2190","\\leftarrow",!0),oe(se,he,ye,"\u2264","\\le"),oe(se,he,ye,"\u2264","\\leq",!0),oe(se,he,ye,"<","\\lt",!0),oe(se,he,ye,"\u2192","\\rightarrow",!0),oe(se,he,ye,"\u2192","\\to"),oe(se,me,ye,"\u2271","\\ngeq",!0),oe(se,me,ye,"\u2270","\\nleq",!0),oe(se,he,xe,"\xa0","\\ "),oe(se,he,xe,"\xa0","\\space"),oe(se,he,xe,"\xa0","\\nobreakspace"),oe(le,he,xe,"\xa0","\\ "),oe(le,he,xe,"\xa0"," "),oe(le,he,xe,"\xa0","\\space"),oe(le,he,xe,"\xa0","\\nobreakspace"),oe(se,he,xe,null,"\\nobreak"),oe(se,he,xe,null,"\\allowbreak"),oe(se,he,be,",",","),oe(se,he,be,";",";"),oe(se,me,pe,"\u22bc","\\barwedge",!0),oe(se,me,pe,"\u22bb","\\veebar",!0),oe(se,he,pe,"\u2299","\\odot",!0),oe(se,he,pe,"\u2295","\\oplus",!0),oe(se,he,pe,"\u2297","\\otimes",!0),oe(se,he,we,"\u2202","\\partial",!0),oe(se,he,pe,"\u2298","\\oslash",!0),oe(se,me,pe,"\u229a","\\circledcirc",!0),oe(se,me,pe,"\u22a1","\\boxdot",!0),oe(se,he,pe,"\u25b3","\\bigtriangleup"),oe(se,he,pe,"\u25bd","\\bigtriangledown"),oe(se,he,pe,"\u2020","\\dagger"),oe(se,he,pe,"\u22c4","\\diamond"),oe(se,he,pe,"\u22c6","\\star"),oe(se,he,pe,"\u25c3","\\triangleleft"),oe(se,he,pe,"\u25b9","\\triangleright"),oe(se,he,ve,"{","\\{"),oe(le,he,we,"{","\\{"),oe(le,he,we,"{","\\textbraceleft"),oe(se,he,ue,"}","\\}"),oe(le,he,we,"}","\\}"),oe(le,he,we,"}","\\textbraceright"),oe(se,he,ve,"{","\\lbrace"),oe(se,he,ue,"}","\\rbrace"),oe(se,he,ve,"[","\\lbrack",!0),oe(le,he,we,"[","\\lbrack",!0),oe(se,he,ue,"]","\\rbrack",!0),oe(le,he,we,"]","\\rbrack",!0),oe(se,he,ve,"(","\\lparen",!0),oe(se,he,ue,")","\\rparen",!0),oe(le,he,we,"<","\\textless",!0),oe(le,he,we,">","\\textgreater",!0),oe(se,he,ve,"\u230a","\\lfloor",!0),oe(se,he,ue,"\u230b","\\rfloor",!0),oe(se,he,ve,"\u2308","\\lceil",!0),oe(se,he,ue,"\u2309","\\rceil",!0),oe(se,he,we,"\\","\\backslash"),oe(se,he,we,"\u2223","|"),oe(se,he,we,"\u2223","\\vert"),oe(le,he,we,"|","\\textbar",!0),oe(se,he,we,"\u2225","\\|"),oe(se,he,we,"\u2225","\\Vert"),oe(le,he,we,"\u2225","\\textbardbl"),oe(le,he,we,"~","\\textasciitilde"),oe(le,he,we,"\\","\\textbackslash"),oe(le,he,we,"^","\\textasciicircum"),oe(se,he,ye,"\u2191","\\uparrow",!0),oe(se,he,ye,"\u21d1","\\Uparrow",!0),oe(se,he,ye,"\u2193","\\downarrow",!0),oe(se,he,ye,"\u21d3","\\Downarrow",!0),oe(se,he,ye,"\u2195","\\updownarrow",!0),oe(se,he,ye,"\u21d5","\\Updownarrow",!0),oe(se,he,fe,"\u2210","\\coprod"),oe(se,he,fe,"\u22c1","\\bigvee"),oe(se,he,fe,"\u22c0","\\bigwedge"),oe(se,he,fe,"\u2a04","\\biguplus"),oe(se,he,fe,"\u22c2","\\bigcap"),oe(se,he,fe,"\u22c3","\\bigcup"),oe(se,he,fe,"\u222b","\\int"),oe(se,he,fe,"\u222b","\\intop"),oe(se,he,fe,"\u222c","\\iint"),oe(se,he,fe,"\u222d","\\iiint"),oe(se,he,fe,"\u220f","\\prod"),oe(se,he,fe,"\u2211","\\sum"),oe(se,he,fe,"\u2a02","\\bigotimes"),oe(se,he,fe,"\u2a01","\\bigoplus"),oe(se,he,fe,"\u2a00","\\bigodot"),oe(se,he,fe,"\u222e","\\oint"),oe(se,he,fe,"\u222f","\\oiint"),oe(se,he,fe,"\u2230","\\oiiint"),oe(se,he,fe,"\u2a06","\\bigsqcup"),oe(se,he,fe,"\u222b","\\smallint"),oe(le,he,de,"\u2026","\\textellipsis"),oe(se,he,de,"\u2026","\\mathellipsis"),oe(le,he,de,"\u2026","\\ldots",!0),oe(se,he,de,"\u2026","\\ldots",!0),oe(se,he,de,"\u22ef","\\@cdots",!0),oe(se,he,de,"\u22f1","\\ddots",!0),oe(se,he,we,"\u22ee","\\varvdots"),oe(le,he,we,"\u22ee","\\varvdots"),oe(se,he,ce,"\u02ca","\\acute"),oe(se,he,ce,"\u02cb","\\grave"),oe(se,he,ce,"\xa8","\\ddot"),oe(se,he,ce,"~","\\tilde"),oe(se,he,ce,"\u02c9","\\bar"),oe(se,he,ce,"\u02d8","\\breve"),oe(se,he,ce,"\u02c7","\\check"),oe(se,he,ce,"^","\\hat"),oe(se,he,ce,"\u20d7","\\vec"),oe(se,he,ce,"\u02d9","\\dot"),oe(se,he,ce,"\u02da","\\mathring"),oe(se,he,ge,"\ue131","\\@imath"),oe(se,he,ge,"\ue237","\\@jmath"),oe(se,he,we,"\u0131","\u0131"),oe(se,he,we,"\u0237","\u0237"),oe(le,he,we,"\u0131","\\i",!0),oe(le,he,we,"\u0237","\\j",!0),oe(le,he,we,"\xdf","\\ss",!0),oe(le,he,we,"\xe6","\\ae",!0),oe(le,he,we,"\u0153","\\oe",!0),oe(le,he,we,"\xf8","\\o",!0),oe(le,he,we,"\xc6","\\AE",!0),oe(le,he,we,"\u0152","\\OE",!0),oe(le,he,we,"\xd8","\\O",!0),oe(le,he,ce,"\u02ca","\\'"),oe(le,he,ce,"\u02cb","\\`"),oe(le,he,ce,"\u02c6","\\^"),oe(le,he,ce,"\u02dc","\\~"),oe(le,he,ce,"\u02c9","\\="),oe(le,he,ce,"\u02d8","\\u"),oe(le,he,ce,"\u02d9","\\."),oe(le,he,ce,"\xb8","\\c"),oe(le,he,ce,"\u02da","\\r"),oe(le,he,ce,"\u02c7","\\v"),oe(le,he,ce,"\xa8",'\\"'),oe(le,he,ce,"\u02dd","\\H"),oe(le,he,ce,"\u25ef","\\textcircled");var ke={"--":!0,"---":!0,"``":!0,"''":!0};oe(le,he,we,"\u2013","--",!0),oe(le,he,we,"\u2013","\\textendash"),oe(le,he,we,"\u2014","---",!0),oe(le,he,we,"\u2014","\\textemdash"),oe(le,he,we,"\u2018","`",!0),oe(le,he,we,"\u2018","\\textquoteleft"),oe(le,he,we,"\u2019","'",!0),oe(le,he,we,"\u2019","\\textquoteright"),oe(le,he,we,"\u201c","``",!0),oe(le,he,we,"\u201c","\\textquotedblleft"),oe(le,he,we,"\u201d","''",!0),oe(le,he,we,"\u201d","\\textquotedblright"),oe(se,he,we,"\xb0","\\degree",!0),oe(le,he,we,"\xb0","\\degree"),oe(le,he,we,"\xb0","\\textdegree",!0),oe(se,he,we,"\xa3","\\pounds"),oe(se,he,we,"\xa3","\\mathsterling",!0),oe(le,he,we,"\xa3","\\pounds"),oe(le,he,we,"\xa3","\\textsterling",!0),oe(se,me,we,"\u2720","\\maltese"),oe(le,me,we,"\u2720","\\maltese");for(var Se='0123456789/@."',Me=0;Me<14;Me++){var ze=Se.charAt(Me);oe(se,he,we,ze,ze)}for(var Ae='0123456789!@*()-=+";:?/.,',Te=0;Te<25;Te++){var Be=Ae.charAt(Te);oe(le,he,we,Be,Be)}for(var Ce="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ne=0;Ne<52;Ne++){var qe=Ce.charAt(Ne);oe(se,he,ge,qe,qe),oe(le,he,we,qe,qe)}oe(se,me,we,"C","\u2102"),oe(le,me,we,"C","\u2102"),oe(se,me,we,"H","\u210d"),oe(le,me,we,"H","\u210d"),oe(se,me,we,"N","\u2115"),oe(le,me,we,"N","\u2115"),oe(se,me,we,"P","\u2119"),oe(le,me,we,"P","\u2119"),oe(se,me,we,"Q","\u211a"),oe(le,me,we,"Q","\u211a"),oe(se,me,we,"R","\u211d"),oe(le,me,we,"R","\u211d"),oe(se,me,we,"Z","\u2124"),oe(le,me,we,"Z","\u2124"),oe(se,he,ge,"h","\u210e"),oe(le,he,ge,"h","\u210e");for(var Ie="",Re=0;Re<52;Re++){var He=Ce.charAt(Re);oe(se,he,ge,He,Ie=String.fromCharCode(55349,56320+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56372+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56424+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56580+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56684+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56736+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56788+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56840+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56944+Re)),oe(le,he,we,He,Ie),Re<26&&(oe(se,he,ge,He,Ie=String.fromCharCode(55349,56632+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56476+Re)),oe(le,he,we,He,Ie))}oe(se,he,ge,"k",Ie=String.fromCharCode(55349,56668)),oe(le,he,we,"k",Ie);for(var Oe=0;Oe<10;Oe++){var Ee=Oe.toString();oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57294+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57314+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57324+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57334+Oe)),oe(le,he,we,Ee,Ie)}for(var Le="\xd0\xde\xfe",De=0;De<3;De++){var Ve=Le.charAt(De);oe(se,he,ge,Ve,Ve),oe(le,he,we,Ve,Ve)}var Pe=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Fe=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],Ge=function(e,t,r){return ie[r][e]&&ie[r][e].replace&&(e=ie[r][e].replace),{value:e,metrics:I(e,t,r)}},Ue=function(e,t,r,a,n){var i,o=Ge(e,t,r),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===r||a&&"mathit"===a.font)&&(l=0),i=new J(e,s.height,s.depth,l,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+r+"'"),i=new J(e,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var h=a.getColor();h&&(i.style.color=h)}return i},Ye=(e,t)=>{if(U(e.classes)!==U(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(1===e.classes.length){var r=e.classes[0];if("mbin"===r||"mord"===r)return!1}for(var a in e.style)if(e.style.hasOwnProperty(a)&&e.style[a]!==t.style[a])return!1;for(var n in t.style)if(t.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;return!0},Xe=function(e){for(var t=0,r=0,a=0,n=0;n<e.children.length;n++){var i=e.children[n];i.height>t&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=a},We=function(e,t,r,a){var n=new j(e,t,r,a);return Xe(n),n},_e=(e,t,r,a)=>new j(e,t,r,a),je=function(e){var t=new B(e);return Xe(t),t},$e=function(e,t,r){var a="";switch(e){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=e}return a+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},Ze={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ke={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Je={fontMap:Ze,makeSymbol:Ue,mathsym:function(e,t,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ge(e,"Main-Bold",t).metrics?Ue(e,"Main-Bold",t,r,a.concat(["mathbf"])):"\\"===e||"main"===ie[t][e].font?Ue(e,"Main-Regular",t,r,a):Ue(e,"AMS-Regular",t,r,a.concat(["amsrm"]))},makeSpan:We,makeSvgSpan:_e,makeLineSpan:function(e,t,r){var a=We([e],[],t);return a.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),a.style.borderBottomWidth=G(a.height),a.maxFontSize=1,a},makeAnchor:function(e,t,r,a){var n=new $(e,t,r,a);return Xe(n),n},makeFragment:je,wrapFragment:function(e,t){return e instanceof B?We([],[e],t):e},makeVList:function(e,t){for(var{children:r,depth:a}=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],a=-t[0].shift-t[0].elem.depth,n=a,i=1;i<t.length;i++){var o=-t[i].shift-n-t[i].elem.depth,s=o-(t[i-1].elem.height+t[i-1].elem.depth);n+=o,r.push({type:"kern",size:s}),r.push(t[i])}return{children:r,depth:a}}var l;if("top"===e.positionType){for(var h=e.positionData,m=0;m<e.children.length;m++){var c=e.children[m];h-="kern"===c.type?c.size:c.elem.height+c.elem.depth}l=h}else if("bottom"===e.positionType)l=-e.positionData;else{var p=e.children[0];if("elem"!==p.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)l=-p.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");l=-p.elem.depth}}return{children:e.children,depth:l}}(e),n=0,i=0;i<r.length;i++){var o=r[i];if("elem"===o.type){var s=o.elem;n=Math.max(n,s.maxFontSize,s.height)}}n+=2;var l=We(["pstrut"],[]);l.style.height=G(n);for(var h=[],m=a,c=a,p=a,u=0;u<r.length;u++){var d=r[u];if("kern"===d.type)p+=d.size;else{var g=d.elem,f=d.wrapperClasses||[],v=d.wrapperStyle||{},b=We(f,[l,g],void 0,v);b.style.top=G(-n-p-g.depth),d.marginLeft&&(b.style.marginLeft=d.marginLeft),d.marginRight&&(b.style.marginRight=d.marginRight),h.push(b),p+=g.height+g.depth}m=Math.min(m,p),c=Math.max(c,p)}var y,x=We(["vlist"],h);if(x.style.height=G(c),m<0){var w=We([],[]),k=We(["vlist"],[w]);k.style.height=G(-m);var S=We(["vlist-s"],[new J("\u200b")]);y=[We(["vlist-r"],[x,S]),We(["vlist-r"],[k])]}else y=[We(["vlist-r"],[x])];var M=We(["vlist-t"],y);return 2===y.length&&M.classes.push("vlist-t2"),M.height=c,M.depth=-m,M},makeOrd:function(e,t,r){var a=e.mode,n=e.text,o=["mord"],s="math"===a||"text"===a&&t.font,l=s?t.font:t.fontFamily,h="",m="";if(55349===n.charCodeAt(0)&&([h,m]=function(e,t){var r=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,a="math"===t?0:1;if(119808<=r&&r<120484){var n=Math.floor((r-119808)/26);return[Pe[n][2],Pe[n][a]]}if(120782<=r&&r<=120831){var o=Math.floor((r-120782)/10);return[Fe[o][2],Fe[o][a]]}if(120485===r||120486===r)return[Pe[0][2],Pe[0][a]];if(120486<r&&r<120782)return["",""];throw new i("Unsupported character: "+e)}(n,a)),h.length>0)return Ue(n,h,a,t,o.concat(m));if(l){var c,p;if("boldsymbol"===l){var u=function(e,t,r,a,n){return"textord"!==n&&Ge(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(n,a,0,0,r);c=u.fontName,p=[u.fontClass]}else s?(c=Ze[l].fontName,p=[l]):(c=$e(l,t.fontWeight,t.fontShape),p=[l,t.fontWeight,t.fontShape]);if(Ge(n,c,a).metrics)return Ue(n,c,a,t,o.concat(p));if(ke.hasOwnProperty(n)&&"Typewriter"===c.slice(0,10)){for(var d=[],g=0;g<n.length;g++)d.push(Ue(n[g],c,a,t,o.concat(p)));return je(d)}}if("mathord"===r)return Ue(n,"Math-Italic",a,t,o.concat(["mathnormal"]));if("textord"===r){var f=ie[a][n]&&ie[a][n].font;if("ams"===f){var v=$e("amsrm",t.fontWeight,t.fontShape);return Ue(n,v,a,t,o.concat("amsrm",t.fontWeight,t.fontShape))}if("main"!==f&&f){var b=$e(f,t.fontWeight,t.fontShape);return Ue(n,b,a,t,o.concat(b,t.fontWeight,t.fontShape))}var y=$e("textrm",t.fontWeight,t.fontShape);return Ue(n,y,a,t,o.concat(t.fontWeight,t.fontShape))}throw new Error("unexpected type: "+r+" in makeOrd")},makeGlue:(e,t)=>{var r=We(["mspace"],[],t),a=F(e,t);return r.style.marginRight=G(a),r},staticSvg:function(e,t){var[r,a,n]=Ke[e],i=new ee(r),o=new Q([i],{width:G(a),height:G(n),style:"width:"+G(a),viewBox:"0 0 "+1e3*a+" "+1e3*n,preserveAspectRatio:"xMinYMin"}),s=_e(["overlay"],[o],t);return s.height=n,s.style.height=G(n),s.style.width=G(a),s},svgData:Ke,tryCombineChars:e=>{for(var t=0;t<e.length-1;t++){var r=e[t],a=e[t+1];r instanceof J&&a instanceof J&&Ye(r,a)&&(r.text+=a.text,r.height=Math.max(r.height,a.height),r.depth=Math.max(r.depth,a.depth),r.italic=a.italic,e.splice(t+1,1),t--)}return e}},Qe={number:3,unit:"mu"},et={number:4,unit:"mu"},tt={number:5,unit:"mu"},rt={mord:{mop:Qe,mbin:et,mrel:tt,minner:Qe},mop:{mord:Qe,mop:Qe,mrel:tt,minner:Qe},mbin:{mord:et,mop:et,mopen:et,minner:et},mrel:{mord:tt,mop:tt,mopen:tt,minner:tt},mopen:{},mclose:{mop:Qe,mbin:et,mrel:tt,minner:Qe},mpunct:{mord:Qe,mop:Qe,mrel:tt,mopen:Qe,mclose:Qe,mpunct:Qe,minner:Qe},minner:{mord:Qe,mop:Qe,mbin:et,mrel:tt,mopen:Qe,mpunct:Qe,minner:Qe}},at={mord:{mop:Qe},mop:{mord:Qe,mop:Qe},mbin:{},mrel:{},mopen:{},mclose:{mop:Qe},mpunct:{},minner:{mop:Qe}},nt={},it={},ot={};function st(e){for(var{type:t,names:r,props:a,handler:n,htmlBuilder:i,mathmlBuilder:o}=e,s={type:t,numArgs:a.numArgs,argTypes:a.argTypes,allowedInArgument:!!a.allowedInArgument,allowedInText:!!a.allowedInText,allowedInMath:void 0===a.allowedInMath||a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,primitive:!!a.primitive,handler:n},l=0;l<r.length;++l)nt[r[l]]=s;t&&(i&&(it[t]=i),o&&(ot[t]=o))}function lt(e){var{type:t,htmlBuilder:r,mathmlBuilder:a}=e;st({type:t,names:[],props:{numArgs:0},handler(){throw new Error("Should never be called.")},htmlBuilder:r,mathmlBuilder:a})}var ht=function(e){return"ordgroup"===e.type&&1===e.body.length?e.body[0]:e},mt=function(e){return"ordgroup"===e.type?e.body:[e]},ct=Je.makeSpan,pt=["leftmost","mbin","mopen","mrel","mop","mpunct"],ut=["rightmost","mrel","mclose","mpunct"],dt={display:k.DISPLAY,text:k.TEXT,script:k.SCRIPT,scriptscript:k.SCRIPTSCRIPT},gt={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},ft=function(e,t,r,a){void 0===a&&(a=[null,null]);for(var n=[],i=0;i<e.length;i++){var o=kt(e[i],t);if(o instanceof B){var s=o.children;n.push(...s)}else n.push(o)}if(Je.tryCombineChars(n),!r)return n;var l=t;if(1===e.length){var h=e[0];"sizing"===h.type?l=t.havingSize(h.size):"styling"===h.type&&(l=t.havingStyle(dt[h.style]))}var c=ct([a[0]||"leftmost"],[],t),p=ct([a[1]||"rightmost"],[],t),u="root"===r;return vt(n,(e,t)=>{var r=t.classes[0],a=e.classes[0];"mbin"===r&&m.contains(ut,a)?t.classes[0]="mord":"mbin"===a&&m.contains(pt,r)&&(e.classes[0]="mord")},{node:c},p,u),vt(n,(e,t)=>{var r=xt(t),a=xt(e),n=r&&a?e.hasClass("mtight")?at[r][a]:rt[r][a]:null;if(n)return Je.makeGlue(n,l)},{node:c},p,u),n},vt=function e(t,r,a,n,i){n&&t.push(n);for(var o=0;o<t.length;o++){var s=t[o],l=bt(s);if(l)e(l.children,r,a,null,i);else{var h=!s.hasClass("mspace");if(h){var m=r(s,a.node);m&&(a.insertAfter?a.insertAfter(m):(t.unshift(m),o++))}h?a.node=s:i&&s.hasClass("newline")&&(a.node=ct(["leftmost"])),a.insertAfter=(e=>r=>{t.splice(e+1,0,r),o++})(o)}}n&&t.pop()},bt=function(e){return e instanceof B||e instanceof $||e instanceof j&&e.hasClass("enclosing")?e:null},yt=function e(t,r){var a=bt(t);if(a){var n=a.children;if(n.length){if("right"===r)return e(n[n.length-1],"right");if("left"===r)return e(n[0],"left")}}return t},xt=function(e,t){return e?(t&&(e=yt(e,t)),gt[e.classes[0]]||null):null},wt=function(e,t){var r=["nulldelimiter"].concat(e.baseSizingClasses());return ct(t.concat(r))},kt=function(e,t,r){if(!e)return ct();if(it[e.type]){var a=it[e.type](e,t);if(r&&t.size!==r.size){a=ct(t.sizingClasses(r),[a],t);var n=t.sizeMultiplier/r.sizeMultiplier;a.height*=n,a.depth*=n}return a}throw new i("Got group of unknown type: '"+e.type+"'")};function St(e,t){var r=ct(["base"],e,t),a=ct(["strut"]);return a.style.height=G(r.height+r.depth),r.depth&&(a.style.verticalAlign=G(-r.depth)),r.children.unshift(a),r}function Mt(e,t){var r=null;1===e.length&&"tag"===e[0].type&&(r=e[0].tag,e=e[0].body);var a,n=ft(e,t,"root");2===n.length&&n[1].hasClass("tag")&&(a=n.pop());for(var i,o=[],s=[],l=0;l<n.length;l++)if(s.push(n[l]),n[l].hasClass("mbin")||n[l].hasClass("mrel")||n[l].hasClass("allowbreak")){for(var h=!1;l<n.length-1&&n[l+1].hasClass("mspace")&&!n[l+1].hasClass("newline");)l++,s.push(n[l]),n[l].hasClass("nobreak")&&(h=!0);h||(o.push(St(s,t)),s=[])}else n[l].hasClass("newline")&&(s.pop(),s.length>0&&(o.push(St(s,t)),s=[]),o.push(n[l]));s.length>0&&o.push(St(s,t)),r?((i=St(ft(r,t,!0))).classes=["tag"],o.push(i)):a&&o.push(a);var m=ct(["katex-html"],o);if(m.setAttribute("aria-hidden","true"),i){var c=i.children[0];c.style.height=G(m.height+m.depth),m.depth&&(c.style.verticalAlign=G(-m.depth))}return m}function zt(e){return new B(e)}class At{constructor(e,t,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=U(this.classes));for(var r=0;r<this.children.length;r++)if(this.children[r]instanceof Tt&&this.children[r+1]instanceof Tt){for(var a=this.children[r].toText()+this.children[++r].toText();this.children[r+1]instanceof Tt;)a+=this.children[++r].toText();e.appendChild(new Tt(a).toNode())}else e.appendChild(this.children[r].toNode());return e}toMarkup(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=m.escape(this.attributes[t]),e+='"');this.classes.length>0&&(e+=' class ="'+m.escape(U(this.classes))+'"'),e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</"+this.type+">"}toText(){return this.children.map(e=>e.toText()).join("")}}class Tt{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return m.escape(this.toText())}toText(){return this.text}}var Bt={MathNode:At,TextNode:Tt,SpaceNode:class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?"\u200a":e>=.1666&&e<=.1667?"\u2009":e>=.2222&&e<=.2223?"\u2005":e>=.2777&&e<=.2778?"\u2005\u200a":e>=-.05556&&e<=-.05555?"\u200a\u2063":e>=-.1667&&e<=-.1666?"\u2009\u2063":e>=-.2223&&e<=-.2222?"\u205f\u2063":e>=-.2778&&e<=-.2777?"\u2005\u2063":null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",G(this.width)),e}toMarkup(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+G(this.width)+'"/>'}toText(){return this.character?this.character:" "}},newDocumentFragment:zt},Ct=function(e,t,r){return!ie[t][e]||!ie[t][e].replace||55349===e.charCodeAt(0)||ke.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=ie[t][e].replace),new Bt.TextNode(e)},Nt=function(e){return 1===e.length?e[0]:new Bt.MathNode("mrow",e)},qt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var a=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathsfit"===r)return"sans-serif-italic";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=e.text;return m.contains(["\\imath","\\jmath"],n)?null:(ie[a][n]&&ie[a][n].replace&&(n=ie[a][n].replace),I(n,Je.fontMap[r].fontName,a)?Je.fontMap[r].variant:null)};function It(e){if(!e)return!1;if("mi"===e.type&&1===e.children.length){var t=e.children[0];return t instanceof Tt&&"."===t.text}if("mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")){var r=e.children[0];return r instanceof Tt&&","===r.text}return!1}var Rt=function(e,t,r){if(1===e.length){var a=Ot(e[0],t);return r&&a instanceof At&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o<e.length;o++){var s=Ot(e[o],t);if(s instanceof At&&n instanceof At){if("mtext"===s.type&&"mtext"===n.type&&s.getAttribute("mathvariant")===n.getAttribute("mathvariant")){n.children.push(...s.children);continue}if("mn"===s.type&&"mn"===n.type){n.children.push(...s.children);continue}if(It(s)&&"mn"===n.type){n.children.push(...s.children);continue}if("mn"===s.type&&It(n))s.children=[...n.children,...s.children],i.pop();else if(("msup"===s.type||"msub"===s.type)&&s.children.length>=1&&("mn"===n.type||It(n))){var l=s.children[0];l instanceof At&&"mn"===l.type&&(l.children=[...n.children,...l.children],i.pop())}else if("mi"===n.type&&1===n.children.length){var h=n.children[0];if(h instanceof Tt&&"\u0338"===h.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var m=s.children[0];m instanceof Tt&&m.text.length>0&&(m.text=m.text.slice(0,1)+"\u0338"+m.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Ht=function(e,t,r){return Nt(Rt(e,t,r))},Ot=function(e,t){if(!e)return new Bt.MathNode("mrow");if(ot[e.type])return ot[e.type](e,t);throw new i("Got group of unknown type: '"+e.type+"'")};function Et(e,t,r,a,n){var i,o=Rt(e,r);i=1===o.length&&o[0]instanceof At&&m.contains(["mrow","mtable"],o[0].type)?o[0]:new Bt.MathNode("mrow",o);var s=new Bt.MathNode("annotation",[new Bt.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var l=new Bt.MathNode("semantics",[i,s]),h=new Bt.MathNode("math",[l]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&h.setAttribute("display","block");var c=n?"katex":"katex-mathml";return Je.makeSpan([c],[h])}var Lt=function(e){return new L({style:e.displayMode?k.DISPLAY:k.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Dt=function(e,t){if(t.displayMode){var r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=Je.makeSpan(r,[e])}return e},Vt={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},Pt={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ft=function(e,t,r,a,n){var i,o=e.height+e.depth+r+a;if(/fbox|color|angl/.test(t)){if(i=Je.makeSpan(["stretchy",t],[],n),"fbox"===t){var s=n.color&&n.getColor();s&&(i.style.borderColor=s)}}else{var l=[];/^[bx]cancel$/.test(t)&&l.push(new te({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&l.push(new te({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Q(l,{width:"100%",height:G(o)});i=Je.makeSvgSpan([],[h],n)}return i.height=o,i.style.height=G(o),i},Gt=function(e){var t=new Bt.MathNode("mo",[new Bt.TextNode(Vt[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Ut=function(e,t){var{span:r,minWidth:a,height:n}=function(){var r=4e5,a=e.label.slice(1);if(m.contains(["widehat","widecheck","widetilde","utilde"],a)){var n,i,o,s="ordgroup"===(d=e.base).type?d.body.length:1;if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var l=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][l],n=[0,239,300,360,420][l],o=[0,.24,.3,.3,.36,.42][l],i=a+l):(r=[0,600,1033,2339,2340][l],n=[0,260,286,306,312][l],o=[0,.26,.286,.3,.306,.34][l],i="tilde"+l)}var h=new ee(i),c=new Q([h],{width:"100%",height:G(o),viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Je.makeSvgSpan([],[c],t),minWidth:0,height:o}}var p,u,d,g=[],f=Pt[a],[v,b,y]=f,x=y/1e3,w=v.length;if(1===w)p=["hide-tail"],u=[f[3]];else if(2===w)p=["halfarrow-left","halfarrow-right"],u=["xMinYMin","xMaxYMin"];else{if(3!==w)throw new Error("Correct katexImagesData or update code here to support\n "+w+" children.");p=["brace-left","brace-center","brace-right"],u=["xMinYMin","xMidYMin","xMaxYMin"]}for(var k=0;k<w;k++){var S=new ee(v[k]),M=new Q([S],{width:"400em",height:G(x),viewBox:"0 0 "+r+" "+y,preserveAspectRatio:u[k]+" slice"}),z=Je.makeSvgSpan([p[k]],[M],t);if(1===w)return{span:z,minWidth:b,height:x};z.style.height=G(x),g.push(z)}return{span:Je.makeSpan(["stretchy"],g,t),minWidth:b,height:x}}();return r.height=n,r.style.height=G(n),a>0&&(r.style.minWidth=G(a)),r};function Yt(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function Xt(e){var t=Wt(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Wt(e){return e&&("atom"===e.type||ne.hasOwnProperty(e.type))?e:null}var _t=(e,t)=>{var r,a,n;e&&"supsub"===e.type?(r=(a=Yt(e.base,"accent")).base,e.base=r,n=function(e){if(e instanceof j)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}(kt(e,t)),e.base=a):r=(a=Yt(e,"accent")).base;var i=kt(r,t.havingCrampedStyle()),o=0;if(a.isShifty&&m.isCharacterBox(r)){var s=m.getBaseElem(r);o=re(kt(s,t.havingCrampedStyle())).skew}var l,h="\\c"===a.label,c=h?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight);if(a.isStretchy)l=Ut(a,t),l=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+G(2*o)+")",marginLeft:G(2*o)}:void 0}]},t);else{var p,u;"\\vec"===a.label?(p=Je.staticSvg("vec",t),u=Je.svgData.vec[1]):((p=re(p=Je.makeOrd({mode:a.mode,text:a.label},t,"textord"))).italic=0,u=p.width,h&&(c+=p.depth)),l=Je.makeSpan(["accent-body"],[p]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),c=i.height);var g=o;d||(g-=u/2),l.style.left=G(g),"\\textcircled"===a.label&&(l.style.top=".2em"),l=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-c},{type:"elem",elem:l}]},t)}var f=Je.makeSpan(["mord","accent"],[l],t);return n?(n.children[0]=f,n.height=Math.max(f.height,n.height),n.classes[0]="mord",n):f},jt=(e,t)=>{var r=e.isStretchy?Gt(e.label):new Bt.MathNode("mo",[Ct(e.label,e.mode)]),a=new Bt.MathNode("mover",[Ot(e.base,t),r]);return a.setAttribute("accent","true"),a},$t=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));st({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=ht(t[0]),a=!$t.test(e.funcName),n=!a||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:_t,mathmlBuilder:jt}),st({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],a=e.parser.mode;return"math"===a&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:_t,mathmlBuilder:jt}),st({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:(e,t)=>{var r=kt(e.base,t),a=Ut(e,t),n="\\utilde"===e.label?.12:0,i=Je.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},t);return Je.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=Gt(e.label),a=new Bt.MathNode("munder",[Ot(e.base,t),r]);return a.setAttribute("accentunder","true"),a}});var Zt=e=>{var t=new Bt.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};st({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a,funcName:n}=e;return{type:"xArrow",mode:a.mode,label:n,body:t[0],below:r[0]}},htmlBuilder(e,t){var r,a=t.style,n=t.havingStyle(a.sup()),i=Je.wrapFragment(kt(e.body,n,t),t),o="\\x"===e.label.slice(0,2)?"x":"cd";i.classes.push(o+"-arrow-pad"),e.below&&(n=t.havingStyle(a.sub()),(r=Je.wrapFragment(kt(e.below,n,t),t)).classes.push(o+"-arrow-pad"));var s,l=Ut(e,t),h=-t.fontMetrics().axisHeight+.5*l.height,m=-t.fontMetrics().axisHeight-.5*l.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(m-=i.depth),r){var c=-t.fontMetrics().axisHeight+r.height+.5*l.height+.111;s=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h},{type:"elem",elem:r,shift:c}]},t)}else s=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h}]},t);return s.children[0].children[0].children[1].classes.push("svg-align"),Je.makeSpan(["mrel","x-arrow"],[s],t)},mathmlBuilder(e,t){var r,a=Gt(e.label);if(a.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){var n=Zt(Ot(e.body,t));if(e.below){var i=Zt(Ot(e.below,t));r=new Bt.MathNode("munderover",[a,i,n])}else r=new Bt.MathNode("mover",[a,n])}else if(e.below){var o=Zt(Ot(e.below,t));r=new Bt.MathNode("munder",[a,o])}else r=Zt(),r=new Bt.MathNode("mover",[a,r]);return r}});var Kt=Je.makeSpan;function Jt(e,t){var r=ft(e.body,t,!0);return Kt([e.mclass],r,t)}function Qt(e,t){var r,a=Rt(e.body,t);return"minner"===e.mclass?r=new Bt.MathNode("mpadded",a):"mord"===e.mclass?e.isCharacterBox?(r=a[0]).type="mi":r=new Bt.MathNode("mi",a):(e.isCharacterBox?(r=a[0]).type="mo":r=new Bt.MathNode("mo",a),"mbin"===e.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}st({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+a.slice(5),body:mt(n),isCharacterBox:m.isCharacterBox(n)}},htmlBuilder:Jt,mathmlBuilder:Qt});var er=e=>{var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};st({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:er(t[0]),body:mt(t[1]),isCharacterBox:m.isCharacterBox(t[1])}}}),st({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var r,{parser:a,funcName:n}=e,i=t[1],o=t[0];r="\\stackrel"!==n?er(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==n,body:mt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===n?null:o,sub:"\\underset"===n?o:null};return{type:"mclass",mode:a.mode,mclass:r,body:[l],isCharacterBox:m.isCharacterBox(l)}},htmlBuilder:Jt,mathmlBuilder:Qt}),st({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:er(t[0]),body:mt(t[0])}},htmlBuilder(e,t){var r=ft(e.body,t,!0),a=Je.makeSpan([e.mclass],r,t);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(e,t){var r=Rt(e.body,t),a=new Bt.MathNode("mstyle",r);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var tr={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},rr=()=>({type:"styling",body:[],mode:"math",style:"display"}),ar=e=>"textord"===e.type&&"@"===e.text,nr=(e,t)=>("mathord"===e.type||"atom"===e.type)&&e.text===t;function ir(e,t,r){var a=tr[e];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(a,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var n={type:"atom",text:a,mode:"math",family:"rel"},i={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[n],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[i],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}}st({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"cdlabel",mode:r.mode,side:a.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),a=Je.wrapFragment(kt(e.label,r,t),t);return a.classes.push("cd-label-"+e.side),a.style.bottom=G(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(e,t){var r=new Bt.MathNode("mrow",[Ot(e.label,t)]);return(r=new Bt.MathNode("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new Bt.MathNode("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),st({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Je.wrapFragment(kt(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder:(e,t)=>new Bt.MathNode("mrow",[Ot(e.fragment,t)])}),st({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,a=Yt(t[0],"ordgroup").body,n="",o=0;o<a.length;o++){n+=Yt(a[o],"textord").text}var s,l=parseInt(n);if(isNaN(l))throw new i("\\@char has non-numeric argument "+n);if(l<0||l>=1114111)throw new i("\\@char with invalid code point "+n);return l<=65535?s=String.fromCharCode(l):(l-=65536,s=String.fromCharCode(55296+(l>>10),56320+(1023&l))),{type:"textord",mode:r.mode,text:s}}});var or=(e,t)=>{var r=ft(e.body,t.withColor(e.color),!1);return Je.makeFragment(r)},sr=(e,t)=>{var r=Rt(e.body,t.withColor(e.color)),a=new Bt.MathNode("mstyle",r);return a.setAttribute("mathcolor",e.color),a};st({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,a=Yt(t[0],"color-token").color,n=t[1];return{type:"color",mode:r.mode,color:a,body:mt(n)}},htmlBuilder:or,mathmlBuilder:sr}),st({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:a}=e,n=Yt(t[0],"color-token").color;r.gullet.macros.set("\\current@color",n);var i=r.parseExpression(!0,a);return{type:"color",mode:r.mode,color:n,body:i}},htmlBuilder:or,mathmlBuilder:sr}),st({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:a}=e,n="["===a.gullet.future().text?a.parseSizeGroup(!0):null,i=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:i,size:n&&Yt(n,"size").value}},htmlBuilder(e,t){var r=Je.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=G(F(e.size,t)))),r},mathmlBuilder(e,t){var r=new Bt.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",G(F(e.size,t)))),r}});var lr={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},hr=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new i("Expected a control sequence",e);return t},mr=(e,t,r,a)=>{var n=e.gullet.macros.get(r.text);null==n&&(r.noexpand=!0,n={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,n,a)};st({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var a=t.fetch();if(lr[a.text])return"\\global"!==r&&"\\\\globallong"!==r||(a.text=lr[a.text]),Yt(t.parseFunction(),"internal");throw new i("Invalid token after macro prefix",a)}}),st({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=t.gullet.popToken(),n=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new i("Expected a control sequence",a);for(var o,s=0,l=[[]];"{"!==t.gullet.future().text;)if("#"===(a=t.gullet.popToken()).text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[s].push("{");break}if(a=t.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new i('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new i('Argument number "'+a.text+'" out of order');s++,l.push([])}else{if("EOF"===a.text)throw new i("Expected a macro definition");l[s].push(a.text)}var{tokens:h}=t.gullet.consumeArg();return o&&h.unshift(o),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h)).reverse(),t.gullet.macros.set(n,{tokens:h,numArgs:s,delimiters:l},r===lr[r]),{type:"internal",mode:t.mode}}}),st({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=hr(t.gullet.popToken());t.gullet.consumeSpaces();var n=(e=>{var t=e.gullet.popToken();return"="===t.text&&" "===(t=e.gullet.popToken()).text&&(t=e.gullet.popToken()),t})(t);return mr(t,a,n,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),st({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=hr(t.gullet.popToken()),n=t.gullet.popToken(),i=t.gullet.popToken();return mr(t,a,i,"\\\\globalfuture"===r),t.gullet.pushToken(i),t.gullet.pushToken(n),{type:"internal",mode:t.mode}}});var cr=function(e,t,r){var a=I(ie.math[e]&&ie.math[e].replace||e,t,r);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return a},pr=function(e,t,r,a){var n=r.havingBaseStyle(t),i=Je.makeSpan(a.concat(n.sizingClasses(r)),[e],r),o=n.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=n.sizeMultiplier,i},ur=function(e,t,r){var a=t.havingBaseStyle(r),n=(1-t.sizeMultiplier/a.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=G(n),e.height-=n,e.depth+=n},dr=function(e,t,r,a,n,i){var o=function(e,t,r,a){return Je.makeSymbol(e,"Size"+t+"-Regular",r,a)}(e,t,n,a),s=pr(Je.makeSpan(["delimsizing","size"+t],[o],a),k.TEXT,a,i);return r&&ur(s,a,k.TEXT),s},gr=function(e,t,r){var a;return a="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Je.makeSpan(["delimsizinginner",a],[Je.makeSpan([],[Je.makeSymbol(e,t,r)])])}},fr=function(e,t,r){var a=C["Size4-Regular"][e.charCodeAt(0)]?C["Size4-Regular"][e.charCodeAt(0)][4]:C["Size1-Regular"][e.charCodeAt(0)][4],n=new ee("inner",function(e,t){switch(e){case"\u239c":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"\u239f":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23a2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23a5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23aa":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23d0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}}(e,Math.round(1e3*t))),i=new Q([n],{width:G(a),height:G(t),style:"width:"+G(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),o=Je.makeSvgSpan([],[i],r);return o.height=t,o.style.height=G(t),o.style.width=G(a),{type:"elem",elem:o}},vr={type:"kern",size:-.008},br=["|","\\lvert","\\rvert","\\vert"],yr=["\\|","\\lVert","\\rVert","\\Vert"],xr=function(e,t,r,a,n,i){var o,s,l,h,c="",p=0;o=l=h=e,s=null;var u="Size1-Regular";"\\uparrow"===e?l=h="\u23d0":"\\Uparrow"===e?l=h="\u2016":"\\downarrow"===e?o=l="\u23d0":"\\Downarrow"===e?o=l="\u2016":"\\updownarrow"===e?(o="\\uparrow",l="\u23d0",h="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="\u2016",h="\\Downarrow"):m.contains(br,e)?(l="\u2223",c="vert",p=333):m.contains(yr,e)?(l="\u2225",c="doublevert",p=556):"["===e||"\\lbrack"===e?(o="\u23a1",l="\u23a2",h="\u23a3",u="Size4-Regular",c="lbrack",p=667):"]"===e||"\\rbrack"===e?(o="\u23a4",l="\u23a5",h="\u23a6",u="Size4-Regular",c="rbrack",p=667):"\\lfloor"===e||"\u230a"===e?(l=o="\u23a2",h="\u23a3",u="Size4-Regular",c="lfloor",p=667):"\\lceil"===e||"\u2308"===e?(o="\u23a1",l=h="\u23a2",u="Size4-Regular",c="lceil",p=667):"\\rfloor"===e||"\u230b"===e?(l=o="\u23a5",h="\u23a6",u="Size4-Regular",c="rfloor",p=667):"\\rceil"===e||"\u2309"===e?(o="\u23a4",l=h="\u23a5",u="Size4-Regular",c="rceil",p=667):"("===e||"\\lparen"===e?(o="\u239b",l="\u239c",h="\u239d",u="Size4-Regular",c="lparen",p=875):")"===e||"\\rparen"===e?(o="\u239e",l="\u239f",h="\u23a0",u="Size4-Regular",c="rparen",p=875):"\\{"===e||"\\lbrace"===e?(o="\u23a7",s="\u23a8",h="\u23a9",l="\u23aa",u="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="\u23ab",s="\u23ac",h="\u23ad",l="\u23aa",u="Size4-Regular"):"\\lgroup"===e||"\u27ee"===e?(o="\u23a7",h="\u23a9",l="\u23aa",u="Size4-Regular"):"\\rgroup"===e||"\u27ef"===e?(o="\u23ab",h="\u23ad",l="\u23aa",u="Size4-Regular"):"\\lmoustache"===e||"\u23b0"===e?(o="\u23a7",h="\u23ad",l="\u23aa",u="Size4-Regular"):"\\rmoustache"!==e&&"\u23b1"!==e||(o="\u23ab",h="\u23a9",l="\u23aa",u="Size4-Regular");var d=cr(o,u,n),g=d.height+d.depth,f=cr(l,u,n),v=f.height+f.depth,b=cr(h,u,n),y=b.height+b.depth,x=0,w=1;if(null!==s){var S=cr(s,u,n);x=S.height+S.depth,w=2}var M=g+y+x,z=M+Math.max(0,Math.ceil((t-M)/(w*v)))*w*v,A=a.fontMetrics().axisHeight;r&&(A*=a.sizeMultiplier);var T=z/2-A,B=[];if(c.length>0){var C=z-g-y,N=Math.round(1e3*z),q=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v"+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v"+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z\nM367 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v"+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+" v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+" v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v602 h84z\nM403 1759 V0 H319 V1759 v"+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v602 h84z\nM347 1759 V0 h-84 V1759 v"+t+" v602 h84z";case"lparen":return"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0,"+(t+84)+"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-"+(t+92)+"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z";case"rparen":return"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,"+(t+9)+"\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-"+(t+144)+"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z";default:throw new Error("Unknown stretchy delimiter.")}}(c,Math.round(1e3*C)),I=new ee(c,q),R=(p/1e3).toFixed(3)+"em",H=(N/1e3).toFixed(3)+"em",O=new Q([I],{width:R,height:H,viewBox:"0 0 "+p+" "+N}),E=Je.makeSvgSpan([],[O],a);E.height=N/1e3,E.style.width=R,E.style.height=H,B.push({type:"elem",elem:E})}else{if(B.push(gr(h,u,n)),B.push(vr),null===s){var L=z-g-y+.016;B.push(fr(l,L,a))}else{var D=(z-g-y-x)/2+.016;B.push(fr(l,D,a)),B.push(vr),B.push(gr(s,u,n)),B.push(vr),B.push(fr(l,D,a))}B.push(vr),B.push(gr(o,u,n))}var V=a.havingBaseStyle(k.TEXT),P=Je.makeVList({positionType:"bottom",positionData:T,children:B},V);return pr(Je.makeSpan(["delimsizing","mult"],[P],V),k.TEXT,a,i)},wr=.08,kr=function(e,t,r,a,n){var i=function(e,t,r){t*=1e3;var a="";switch(e){case"sqrtMain":a=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize1":a=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize2":a=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize3":a=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize4":a=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,A);break;case"sqrtTall":a=function(e,t,r){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(r-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,A,r)}return a}(e,a,r),o=new ee(e,i),s=new Q([o],{width:"400em",height:G(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Je.makeSvgSpan(["hide-tail"],[s],n)},Sr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],Mr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],zr=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Ar=[0,1.2,1.8,2.4,3],Tr=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Br=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"stack"}],Cr=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Nr=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},qr=function(e,t,r,a){for(var n=Math.min(2,3-a.style.size);n<r.length&&"stack"!==r[n].type;n++){var i=cr(e,Nr(r[n]),"math"),o=i.height+i.depth;if("small"===r[n].type&&(o*=a.havingBaseStyle(r[n].style).sizeMultiplier),o>t)return r[n]}return r[r.length-1]},Ir=function(e,t,r,a,n,i){var o;"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=m.contains(zr,e)?Tr:m.contains(Sr,e)?Cr:Br;var s=qr(e,t,o,a);return"small"===s.type?function(e,t,r,a,n,i){var o=Je.makeSymbol(e,"Main-Regular",n,a),s=pr(o,t,a,i);return r&&ur(s,a,t),s}(e,s.style,r,a,n,i):"large"===s.type?dr(e,s.size,r,a,n,i):xr(e,t,r,a,n,i)},Rr={sqrtImage:function(e,t){var r,a,n=t.havingBaseSizing(),i=qr("\\surd",e*n.sizeMultiplier,Cr,n),o=n.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,h=0,m=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),h=(1+s)/o,(r=kr("sqrtMain",l=(1+s+wr)/o,m=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Ar[i.size],h=(Ar[i.size]+s)/o,l=(Ar[i.size]+s+wr)/o,(r=kr("sqrtSize"+i.size,l,m,s,t)).style.minWidth="1.02em",a=1/o):(l=e+s+wr,h=e+s,m=Math.floor(1e3*e+s)+80,(r=kr("sqrtTall",l,m,s,t)).style.minWidth="0.742em",a=1.056),r.height=h,r.style.height=G(l),{span:r,advanceWidth:a,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},sizedDelim:function(e,t,r,a,n){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),m.contains(Sr,e)||m.contains(zr,e))return dr(e,t,!1,r,a,n);if(m.contains(Mr,e))return xr(e,Ar[t],!1,r,a,n);throw new i("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:Ar,customSizedDelim:Ir,leftRightDelim:function(e,t,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return Ir(e,h,!0,a,n,i)}},Hr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Or=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Er(e,t){var r=Wt(e);if(r&&m.contains(Or,r.text))return r;throw new i(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function Lr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}st({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=Er(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Hr[e.funcName].size,mclass:Hr[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>"."===e.delim?Je.makeSpan([e.mclass]):Rr.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];"."!==e.delim&&t.push(Ct(e.delim,e.mode));var r=new Bt.MathNode("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var a=G(Rr.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",a),r.setAttribute("maxsize",a),r}}),st({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new i("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Er(t[0],e).text,color:r}}}),st({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Er(t[0],e),a=e.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Yt(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{Lr(e);for(var r,a,n=ft(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l<n.length;l++)n[l].isMiddle?s=!0:(i=Math.max(n[l].height,i),o=Math.max(n[l].depth,o));if(i*=t.sizeMultiplier,o*=t.sizeMultiplier,r="."===e.left?wt(t,["mopen"]):Rr.leftRightDelim(e.left,i,o,t,e.mode,["mopen"]),n.unshift(r),s)for(var h=1;h<n.length;h++){var m=n[h].isMiddle;m&&(n[h]=Rr.leftRightDelim(m.delim,i,o,m.options,e.mode,[]))}if("."===e.right)a=wt(t,["mclose"]);else{var c=e.rightColor?t.withColor(e.rightColor):t;a=Rr.leftRightDelim(e.right,i,o,c,e.mode,["mclose"])}return n.push(a),Je.makeSpan(["minner"],n,t)},mathmlBuilder:(e,t)=>{Lr(e);var r=Rt(e.body,t);if("."!==e.left){var a=new Bt.MathNode("mo",[Ct(e.left,e.mode)]);a.setAttribute("fence","true"),r.unshift(a)}if("."!==e.right){var n=new Bt.MathNode("mo",[Ct(e.right,e.mode)]);n.setAttribute("fence","true"),e.rightColor&&n.setAttribute("mathcolor",e.rightColor),r.push(n)}return Nt(r)}}),st({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Er(t[0],e);if(!e.parser.leftrightDepth)throw new i("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;if("."===e.delim)r=wt(t,[]);else{r=Rr.sizedDelim(e.delim,1,t,e.mode,[]);var a={delim:e.delim,options:t};r.isMiddle=a}return r},mathmlBuilder:(e,t)=>{var r="\\vert"===e.delim||"|"===e.delim?Ct("|","text"):Ct(e.delim,e.mode),a=new Bt.MathNode("mo",[r]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var Dr=(e,t)=>{var r,a,n,i=Je.wrapFragment(kt(e.body,t),t),o=e.label.slice(1),s=t.sizeMultiplier,l=0,h=m.isCharacterBox(e.body);if("sout"===o)(r=Je.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/s,l=-.5*t.fontMetrics().xHeight;else if("phase"===o){var c=F({number:.6,unit:"pt"},t),p=F({number:.35,unit:"ex"},t);s/=t.havingBaseSizing().sizeMultiplier;var u=i.height+i.depth+c+p;i.style.paddingLeft=G(u/2+c);var d=Math.floor(1e3*u*s),g="M400000 "+(a=d)+" H0 L"+a/2+" 0 l65 45 L145 "+(a-80)+" H400000z",f=new Q([new ee("phase",g)],{width:"400em",height:G(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});(r=Je.makeSvgSpan(["hide-tail"],[f],t)).style.height=G(u),l=i.depth+c+p}else{/cancel/.test(o)?h||i.classes.push("cancel-pad"):"angl"===o?i.classes.push("anglpad"):i.classes.push("boxpad");var v=0,b=0,y=0;/box/.test(o)?(y=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),b=v=t.fontMetrics().fboxsep+("colorbox"===o?0:y)):"angl"===o?(v=4*(y=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness)),b=Math.max(0,.25-i.depth)):b=v=h?.2:0,r=Ft(i,o,v,b,t),/fbox|boxed|fcolorbox/.test(o)?(r.style.borderStyle="solid",r.style.borderWidth=G(y)):"angl"===o&&.049!==y&&(r.style.borderTopWidth=G(y),r.style.borderRightWidth=G(y)),l=i.depth+b,e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor,e.borderColor&&(r.style.borderColor=e.borderColor))}if(e.backgroundColor)n=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:l},{type:"elem",elem:i,shift:0}]},t);else{var x=/cancel|phase/.test(o)?["svg-align"]:[];n=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:0},{type:"elem",elem:r,shift:l,wrapperClasses:x}]},t)}return/cancel/.test(o)&&(n.height=i.height,n.depth=i.depth),/cancel/.test(o)&&!h?Je.makeSpan(["mord","cancel-lap"],[n],t):Je.makeSpan(["mord"],[n],t)},Vr=(e,t)=>{var r=0,a=new Bt.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Ot(e.body,t)]);switch(e.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){var n=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(e.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&a.setAttribute("mathbackground",e.backgroundColor),a};st({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Yt(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:Dr,mathmlBuilder:Vr}),st({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Yt(t[0],"color-token").color,o=Yt(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:Dr,mathmlBuilder:Vr}),st({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}}),st({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"enclose",mode:r.mode,label:a,body:n}},htmlBuilder:Dr,mathmlBuilder:Vr}),st({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var Pr={};function Fr(e){for(var{type:t,names:r,props:a,handler:n,htmlBuilder:i,mathmlBuilder:o}=e,s={type:t,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},l=0;l<r.length;++l)Pr[r[l]]=s;i&&(it[t]=i),o&&(ot[t]=o)}var Gr={};function Ur(e,t){Gr[e]=t}function Yr(e){var t=[];e.consumeSpaces();var r=e.fetch().text;for("\\relax"===r&&(e.consume(),e.consumeSpaces(),r=e.fetch().text);"\\hline"===r||"\\hdashline"===r;)e.consume(),t.push("\\hdashline"===r),e.consumeSpaces(),r=e.fetch().text;return t}var Xr=e=>{if(!e.parser.settings.displayMode)throw new i("{"+e.envName+"} can be used only in display mode.")};function Wr(e){if(-1===e.indexOf("ed"))return-1===e.indexOf("*")}function _r(e,t,r){var{hskipBeforeAndAfter:a,addJot:o,cols:s,arraystretch:l,colSeparationType:h,autoTag:m,singleRow:c,emptySingleRow:p,maxNumCols:u,leqno:d}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!l){var g=e.gullet.expandMacroAsText("\\arraystretch");if(null==g)l=1;else if(!(l=parseFloat(g))||l<0)throw new i("Invalid \\arraystretch: "+g)}e.gullet.beginGroup();var f=[],v=[f],b=[],y=[],x=null!=m?[]:void 0;function w(){m&&e.gullet.macros.set("\\@eqnsw","1",!0)}function k(){x&&(e.gullet.macros.get("\\df@tag")?(x.push(e.subparse([new n("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):x.push(Boolean(m)&&"1"===e.gullet.macros.get("\\@eqnsw")))}for(w(),y.push(Yr(e));;){var S=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup(),S={type:"ordgroup",mode:e.mode,body:S},r&&(S={type:"styling",mode:e.mode,style:r,body:[S]}),f.push(S);var M=e.fetch().text;if("&"===M){if(u&&f.length===u){if(c||h)throw new i("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else{if("\\end"===M){k(),1===f.length&&"styling"===S.type&&0===S.body[0].body.length&&(v.length>1||!p)&&v.pop(),y.length<v.length+1&&y.push([]);break}if("\\\\"!==M)throw new i("Expected & or \\\\ or \\cr or \\end",e.nextToken);e.consume();var z=void 0;" "!==e.gullet.future().text&&(z=e.parseSizeGroup(!0)),b.push(z?z.value:null),k(),y.push(Yr(e)),f=[],v.push(f),w()}}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:o,arraystretch:l,body:v,cols:s,rowGaps:b,hskipBeforeAndAfter:a,hLinesBeforeRow:y,colSeparationType:h,tags:x,leqno:d}}function jr(e){return"d"===e.slice(0,1)?"display":"text"}var $r=function(e,t){var r,a,n=e.body.length,o=e.hLinesBeforeRow,s=0,l=new Array(n),h=[],c=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),p=1/t.fontMetrics().ptPerEm,u=5*p;e.colSeparationType&&"small"===e.colSeparationType&&(u=t.havingStyle(k.SCRIPT).sizeMultiplier/t.sizeMultiplier*.2778);var d="CD"===e.colSeparationType?F({number:3,unit:"ex"},t):12*p,g=3*p,f=e.arraystretch*d,v=.7*f,b=.3*f,y=0;function x(e){for(var t=0;t<e.length;++t)t>0&&(y+=.25),h.push({pos:y,isDashed:e[t]})}for(x(o[0]),r=0;r<e.body.length;++r){var w=e.body[r],S=v,M=b;s<w.length&&(s=w.length);var z=new Array(w.length);for(a=0;a<w.length;++a){var A=kt(w[a],t);M<A.depth&&(M=A.depth),S<A.height&&(S=A.height),z[a]=A}var T=e.rowGaps[r],B=0;T&&(B=F(T,t))>0&&(M<(B+=b)&&(M=B),B=0),e.addJot&&(M+=g),z.height=S,z.depth=M,y+=S,z.pos=y,y+=M+B,l[r]=z,x(o[r+1])}var C,N,q=y/2+t.fontMetrics().axisHeight,I=e.cols||[],R=[],H=[];if(e.tags&&e.tags.some(e=>e))for(r=0;r<n;++r){var O=l[r],E=O.pos-q,L=e.tags[r],D=void 0;(D=!0===L?Je.makeSpan(["eqn-num"],[],t):!1===L?Je.makeSpan([],[],t):Je.makeSpan([],ft(L,t,!0),t)).depth=O.depth,D.height=O.height,H.push({type:"elem",elem:D,shift:E})}for(a=0,N=0;a<s||N<I.length;++a,++N){for(var V=I[N]||{},P=!0;"separator"===V.type;){if(P||((C=Je.makeSpan(["arraycolsep"],[])).style.width=G(t.fontMetrics().doubleRuleSep),R.push(C)),"|"!==V.separator&&":"!==V.separator)throw new i("Invalid separator type: "+V.separator);var U="|"===V.separator?"solid":"dashed",Y=Je.makeSpan(["vertical-separator"],[],t);Y.style.height=G(y),Y.style.borderRightWidth=G(c),Y.style.borderRightStyle=U,Y.style.margin="0 "+G(-c/2);var X=y-q;X&&(Y.style.verticalAlign=G(-X)),R.push(Y),V=I[++N]||{},P=!1}if(!(a>=s)){var W=void 0;(a>0||e.hskipBeforeAndAfter)&&0!==(W=m.deflt(V.pregap,u))&&((C=Je.makeSpan(["arraycolsep"],[])).style.width=G(W),R.push(C));var _=[];for(r=0;r<n;++r){var j=l[r],$=j[a];if($){var Z=j.pos-q;$.depth=j.depth,$.height=j.height,_.push({type:"elem",elem:$,shift:Z})}}_=Je.makeVList({positionType:"individualShift",children:_},t),_=Je.makeSpan(["col-align-"+(V.align||"c")],[_]),R.push(_),(a<s-1||e.hskipBeforeAndAfter)&&0!==(W=m.deflt(V.postgap,u))&&((C=Je.makeSpan(["arraycolsep"],[])).style.width=G(W),R.push(C))}}if(l=Je.makeSpan(["mtable"],R),h.length>0){for(var K=Je.makeLineSpan("hline",t,c),J=Je.makeLineSpan("hdashline",t,c),Q=[{type:"elem",elem:l,shift:0}];h.length>0;){var ee=h.pop(),te=ee.pos-q;ee.isDashed?Q.push({type:"elem",elem:J,shift:te}):Q.push({type:"elem",elem:K,shift:te})}l=Je.makeVList({positionType:"individualShift",children:Q},t)}if(0===H.length)return Je.makeSpan(["mord"],[l],t);var re=Je.makeVList({positionType:"individualShift",children:H},t);return re=Je.makeSpan(["tag"],[re],t),Je.makeFragment([l,re])},Zr={c:"center ",l:"left ",r:"right "},Kr=function(e,t){for(var r=[],a=new Bt.MathNode("mtd",[],["mtr-glue"]),n=new Bt.MathNode("mtd",[],["mml-eqn-num"]),i=0;i<e.body.length;i++){for(var o=e.body[i],s=[],l=0;l<o.length;l++)s.push(new Bt.MathNode("mtd",[Ot(o[l],t)]));e.tags&&e.tags[i]&&(s.unshift(a),s.push(a),e.leqno?s.unshift(n):s.push(n)),r.push(new Bt.MathNode("mtr",s))}var h=new Bt.MathNode("mtable",r),m=.5===e.arraystretch?.1:.16+e.arraystretch-1+(e.addJot?.09:0);h.setAttribute("rowspacing",G(m));var c="",p="";if(e.cols&&e.cols.length>0){var u=e.cols,d="",g=!1,f=0,v=u.length;"separator"===u[0].type&&(c+="top ",f=1),"separator"===u[u.length-1].type&&(c+="bottom ",v-=1);for(var b=f;b<v;b++)"align"===u[b].type?(p+=Zr[u[b].align],g&&(d+="none "),g=!0):"separator"===u[b].type&&g&&(d+="|"===u[b].separator?"solid ":"dashed ",g=!1);h.setAttribute("columnalign",p.trim()),/[sd]/.test(d)&&h.setAttribute("columnlines",d.trim())}if("align"===e.colSeparationType){for(var y=e.cols||[],x="",w=1;w<y.length;w++)x+=w%2?"0em ":"1em ";h.setAttribute("columnspacing",x.trim())}else"alignat"===e.colSeparationType||"gather"===e.colSeparationType?h.setAttribute("columnspacing","0em"):"small"===e.colSeparationType?h.setAttribute("columnspacing","0.2778em"):"CD"===e.colSeparationType?h.setAttribute("columnspacing","0.5em"):h.setAttribute("columnspacing","1em");var k="",S=e.hLinesBeforeRow;c+=S[0].length>0?"left ":"",c+=S[S.length-1].length>0?"right ":"";for(var M=1;M<S.length-1;M++)k+=0===S[M].length?"none ":S[M][0]?"dashed ":"solid ";return/[sd]/.test(k)&&h.setAttribute("rowlines",k.trim()),""!==c&&(h=new Bt.MathNode("menclose",[h])).setAttribute("notation",c.trim()),e.arraystretch&&e.arraystretch<1&&(h=new Bt.MathNode("mstyle",[h])).setAttribute("scriptlevel","1"),h},Jr=function(e,t){-1===e.envName.indexOf("ed")&&Xr(e);var r,a=[],n=e.envName.indexOf("at")>-1?"alignat":"align",o="split"===e.envName,s=_r(e.parser,{cols:a,addJot:!0,autoTag:o?void 0:Wr(e.envName),emptySingleRow:!0,colSeparationType:n,maxNumCols:o?2:void 0,leqno:e.parser.settings.leqno},"display"),l=0,h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){for(var m="",c=0;c<t[0].body.length;c++){m+=Yt(t[0].body[c],"textord").text}r=Number(m),l=2*r}var p=!l;s.body.forEach(function(e){for(var t=1;t<e.length;t+=2){var a=Yt(e[t],"styling");Yt(a.body[0],"ordgroup").body.unshift(h)}if(p)l<e.length&&(l=e.length);else{var n=e.length/2;if(r<n)throw new i("Too many math in a row: expected "+r+", but got "+n,e[0])}});for(var u=0;u<l;++u){var d="r",g=0;u%2==1?d="l":u>0&&p&&(g=1),a[u]={type:"align",align:d,pregap:g,postgap:0}}return s.colSeparationType=p?"align":"alignat",s};Fr({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=(Wt(t[0])?[t[0]]:Yt(t[0],"ordgroup").body).map(function(e){var t=Xt(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new i("Unknown column alignment: "+t,e)}),a={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return _r(e.parser,a,jr(e.envName))},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){var n=e.parser;if(n.consumeSpaces(),"["===n.fetch().text){if(n.consume(),n.consumeSpaces(),r=n.fetch().text,-1==="lcr".indexOf(r))throw new i("Expected l or c or r",n.nextToken);n.consume(),n.consumeSpaces(),n.expect("]"),n.consume(),a.cols=[{type:"align",align:r}]}}var o=_r(e.parser,a,jr(e.envName)),s=Math.max(0,...o.body.map(e=>e.length));return o.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[o],left:t[0],right:t[1],rightColor:void 0}:o},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t=_r(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=(Wt(t[0])?[t[0]]:Yt(t[0],"ordgroup").body).map(function(e){var t=Xt(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new i("Unknown column alignment: "+t,e)});if(r.length>1)throw new i("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=_r(e.parser,a,"script")).body.length>0&&a.body[0].length>1)throw new i("{subarray} can contain only one column");return a},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t=_r(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},jr(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Jr,htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){m.contains(["gather","gather*"],e.envName)&&Xr(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Wr(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return _r(e.parser,t,"display")},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Jr,htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){Xr(e);var t={autoTag:Wr(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return _r(e.parser,t,"display")},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["CD"],props:{numArgs:0},handler:e=>(Xr(e),function(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new i("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}for(var a=[],n=[a],o=0;o<t.length;o++){for(var s=t[o],l=rr(),h=0;h<s.length;h++)if(ar(s[h])){a.push(l);var m=Xt(s[h+=1]).text,c=new Array(2);if(c[0]={type:"ordgroup",mode:"math",body:[]},c[1]={type:"ordgroup",mode:"math",body:[]},"=|.".indexOf(m)>-1);else{if(!("<>AV".indexOf(m)>-1))throw new i('Expected one of "<>AV=|." after @',s[h]);for(var p=0;p<2;p++){for(var u=!0,d=h+1;d<s.length;d++){if(nr(s[d],m)){u=!1,h=d;break}if(ar(s[d]))throw new i("Missing a "+m+" character to complete a CD arrow.",s[d]);c[p].body.push(s[d])}if(u)throw new i("Missing a "+m+" character to complete a CD arrow.",s[h])}}var g={type:"styling",body:[ir(m,c,e)],mode:"math",style:"display"};a.push(g),l=rr()}else l.body.push(s[h]);o%2==0?a.push(l):a.shift(),a=[],n.push(a)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:"math",body:n,arraystretch:1,addJot:!0,rowGaps:[null],cols:new Array(n[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25}),colSeparationType:"CD",hLinesBeforeRow:new Array(n.length+1).fill([])}}(e.parser)),htmlBuilder:$r,mathmlBuilder:Kr}),Ur("\\nonumber","\\gdef\\@eqnsw{0}"),Ur("\\notag","\\nonumber"),st({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new i(e.funcName+" valid only within array environment")}});var Qr=Pr;st({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];if("ordgroup"!==n.type)throw new i("Invalid environment name",n);for(var o="",s=0;s<n.body.length;++s)o+=Yt(n.body[s],"textord").text;if("\\begin"===a){if(!Qr.hasOwnProperty(o))throw new i("No such environment: "+o,n);var l=Qr[o],{args:h,optArgs:m}=r.parseArguments("\\begin{"+o+"}",l),c={mode:r.mode,envName:o,parser:r},p=l.handler(c,h,m);r.expect("\\end",!1);var u=r.nextToken,d=Yt(r.parseFunction(),"environment");if(d.name!==o)throw new i("Mismatch: \\begin{"+o+"} matched by \\end{"+d.name+"}",u);return p}return{type:"environment",mode:r.mode,name:o,nameGroup:n}}});var ea=(e,t)=>{var r=e.font,a=t.withFont(r);return kt(e.body,a)},ta=(e,t)=>{var r=e.font,a=t.withFont(r);return Ot(e.body,a)},ra={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};st({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=ht(t[0]),i=a;return i in ra&&(i=ra[i]),{type:"font",mode:r.mode,font:i.slice(1),body:n}},htmlBuilder:ea,mathmlBuilder:ta}),st({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,a=t[0],n=m.isCharacterBox(a);return{type:"mclass",mode:r.mode,mclass:er(a),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}}),st({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a,breakOnTokenText:n}=e,{mode:i}=r,o=r.parseExpression(!0,n);return{type:"font",mode:i,font:"math"+a.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:ea,mathmlBuilder:ta});var aa=(e,t)=>{var r=t;return"display"===e?r=r.id>=k.SCRIPT.id?r.text():k.DISPLAY:"text"===e&&r.size===k.DISPLAY.size?r=k.TEXT:"script"===e?r=k.SCRIPT:"scriptscript"===e&&(r=k.SCRIPTSCRIPT),r},na=(e,t)=>{var r,a=aa(e.size,t.style),n=a.fracNum(),i=a.fracDen();r=t.havingStyle(n);var o=kt(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<l?l:o.depth}r=t.havingStyle(i);var h,m,c,p,u,d,g,f,v,b,y=kt(e.denom,r,t);if(e.hasBarLine?(e.barSize?(m=F(e.barSize,t),h=Je.makeLineSpan("frac-line",t,m)):h=Je.makeLineSpan("frac-line",t),m=h.height,c=h.height):(h=null,m=0,c=t.fontMetrics().defaultRuleThickness),a.size===k.DISPLAY.size||"display"===e.size?(p=t.fontMetrics().num1,u=m>0?3*c:7*c,d=t.fontMetrics().denom1):(m>0?(p=t.fontMetrics().num2,u=c):(p=t.fontMetrics().num3,u=3*c),d=t.fontMetrics().denom2),h){var x=t.fontMetrics().axisHeight;p-o.depth-(x+.5*m)<u&&(p+=u-(p-o.depth-(x+.5*m))),x-.5*m-(y.height-d)<u&&(d+=u-(x-.5*m-(y.height-d)));var w=-(x-.5*m);g=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:y,shift:d},{type:"elem",elem:h,shift:w},{type:"elem",elem:o,shift:-p}]},t)}else{var S=p-o.depth-(y.height-d);S<u&&(p+=.5*(u-S),d+=.5*(u-S)),g=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:y,shift:d},{type:"elem",elem:o,shift:-p}]},t)}return r=t.havingStyle(a),g.height*=r.sizeMultiplier/t.sizeMultiplier,g.depth*=r.sizeMultiplier/t.sizeMultiplier,f=a.size===k.DISPLAY.size?t.fontMetrics().delim1:a.size===k.SCRIPTSCRIPT.size?t.havingStyle(k.SCRIPT).fontMetrics().delim2:t.fontMetrics().delim2,v=null==e.leftDelim?wt(t,["mopen"]):Rr.customSizedDelim(e.leftDelim,f,!0,t.havingStyle(a),e.mode,["mopen"]),b=e.continued?Je.makeSpan([]):null==e.rightDelim?wt(t,["mclose"]):Rr.customSizedDelim(e.rightDelim,f,!0,t.havingStyle(a),e.mode,["mclose"]),Je.makeSpan(["mord"].concat(r.sizingClasses(t)),[v,Je.makeSpan(["mfrac"],[g]),b],t)},ia=(e,t)=>{var r=new Bt.MathNode("mfrac",[Ot(e.numer,t),Ot(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var a=F(e.barSize,t);r.setAttribute("linethickness",G(a))}}else r.setAttribute("linethickness","0px");var n=aa(e.size,t.style);if(n.size!==t.style.size){r=new Bt.MathNode("mstyle",[r]);var i=n.size===k.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new Bt.MathNode("mo",[new Bt.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(r),null!=e.rightDelim){var l=new Bt.MathNode("mo",[new Bt.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Nt(o)}return r};st({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var r,{parser:a,funcName:n}=e,i=t[0],o=t[1],s=null,l=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",l=")";break;case"\\\\bracefrac":r=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":r=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text"}return{type:"genfrac",mode:a.mode,continued:!1,numer:i,denom:o,hasBarLine:r,leftDelim:s,rightDelim:l,size:h,barSize:null}},htmlBuilder:na,mathmlBuilder:ia}),st({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0],i=t[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:n,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}}),st({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var t,{parser:r,funcName:a,token:n}=e;switch(a){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:t,token:n}}});var oa=["display","text","script","scriptscript"],sa=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};st({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var r,{parser:a}=e,n=t[4],i=t[5],o=ht(t[0]),s="atom"===o.type&&"open"===o.family?sa(o.text):null,l=ht(t[1]),h="atom"===l.type&&"close"===l.family?sa(l.text):null,m=Yt(t[2],"size"),c=null;r=!!m.isBlank||(c=m.value).number>0;var p="auto",u=t[3];if("ordgroup"===u.type){if(u.body.length>0){var d=Yt(u.body[0],"textord");p=oa[Number(d.text)]}}else u=Yt(u,"textord"),p=oa[Number(u.text)];return{type:"genfrac",mode:a.mode,numer:n,denom:i,continued:!1,hasBarLine:r,barSize:c,leftDelim:s,rightDelim:h,size:p}},htmlBuilder:na,mathmlBuilder:ia}),st({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:a,token:n}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Yt(t[0],"size").value,token:n}}}),st({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0],i=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Yt(t[1],"infix").size),o=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:o,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:na,mathmlBuilder:ia});var la=(e,t)=>{var r,a,n=t.style;"supsub"===e.type?(r=e.sup?kt(e.sup,t.havingStyle(n.sup()),t):kt(e.sub,t.havingStyle(n.sub()),t),a=Yt(e.base,"horizBrace")):a=Yt(e,"horizBrace");var i,o=kt(a.base,t.havingBaseStyle(k.DISPLAY)),s=Ut(a,t);if(a.isOver?(i=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(i=Je.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Je.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t);i=a.isOver?Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},t):Je.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},t)}return Je.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t)};st({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:t[0]}},htmlBuilder:la,mathmlBuilder:(e,t)=>{var r=Gt(e.label);return new Bt.MathNode(e.isOver?"mover":"munder",[Ot(e.base,t),r])}}),st({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[1],n=Yt(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:mt(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=ft(e.body,t,!1);return Je.makeAnchor(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=Ht(e.body,t);return r instanceof At||(r=new At("mrow",[r])),r.setAttribute("href",e.href),r}}),st({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=Yt(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;i<a.length;i++){var o=a[i];"~"===o&&(o="\\textasciitilde"),n.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:r.mode,font:"\\texttt",body:n};return{type:"href",mode:r.mode,href:a,body:mt(s)}}}),st({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["text"],allowedInText:!0,primitive:!0},handler(e,t){var{parser:r}=e;return{type:"hbox",mode:r.mode,body:mt(t[0])}},htmlBuilder(e,t){var r=ft(e.body,t,!1);return Je.makeFragment(r)},mathmlBuilder:(e,t)=>new Bt.MathNode("mrow",Rt(e.body,t))}),st({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:(e,t)=>{var r,{parser:a,funcName:n,token:o}=e,s=Yt(t[0],"raw").string,l=t[1];a.settings.strict&&a.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var h={};switch(n){case"\\htmlClass":h.class=s,r={command:"\\htmlClass",class:s};break;case"\\htmlId":h.id=s,r={command:"\\htmlId",id:s};break;case"\\htmlStyle":h.style=s,r={command:"\\htmlStyle",style:s};break;case"\\htmlData":for(var m=s.split(","),c=0;c<m.length;c++){var p=m[c].split("=");if(2!==p.length)throw new i("Error parsing key-value for \\htmlData");h["data-"+p[0].trim()]=p[1].trim()}r={command:"\\htmlData",attributes:h};break;default:throw new Error("Unrecognized html command")}return a.settings.isTrusted(r)?{type:"html",mode:a.mode,attributes:h,body:mt(l)}:a.formatUnsupportedCmd(n)},htmlBuilder:(e,t)=>{var r=ft(e.body,t,!1),a=["enclosing"];e.attributes.class&&a.push(...e.attributes.class.trim().split(/\s+/));var n=Je.makeSpan(a,r,t);for(var i in e.attributes)"class"!==i&&e.attributes.hasOwnProperty(i)&&n.setAttribute(i,e.attributes[i]);return n},mathmlBuilder:(e,t)=>Ht(e.body,t)}),st({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:mt(t[0]),mathml:mt(t[1])}},htmlBuilder:(e,t)=>{var r=ft(e.html,t,!1);return Je.makeFragment(r)},mathmlBuilder:(e,t)=>Ht(e.mathml,t)});var ha=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new i("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(t[1]+t[2]),unit:t[3]};if(!P(r))throw new i("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};st({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:a}=e,n={number:0,unit:"em"},o={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var h=Yt(r[0],"raw").string.split(","),m=0;m<h.length;m++){var c=h[m].split("=");if(2===c.length){var p=c[1].trim();switch(c[0].trim()){case"alt":l=p;break;case"width":n=ha(p);break;case"height":o=ha(p);break;case"totalheight":s=ha(p);break;default:throw new i("Invalid key: '"+c[0]+"' in \\includegraphics.")}}}var u=Yt(t[0],"url").url;return""===l&&(l=(l=(l=u).replace(/^.*[\\/]/,"")).substring(0,l.lastIndexOf("."))),a.settings.isTrusted({command:"\\includegraphics",url:u})?{type:"includegraphics",mode:a.mode,alt:l,width:n,height:o,totalheight:s,src:u}:a.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:(e,t)=>{var r=F(e.height,t),a=0;e.totalheight.number>0&&(a=F(e.totalheight,t)-r);var n=0;e.width.number>0&&(n=F(e.width,t));var i={height:G(r+a)};n>0&&(i.width=G(n)),a>0&&(i.verticalAlign=G(-a));var o=new Z(e.src,e.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:(e,t)=>{var r=new Bt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var a=F(e.height,t),n=0;if(e.totalheight.number>0&&(n=F(e.totalheight,t)-a,r.setAttribute("valign",G(-n))),r.setAttribute("height",G(a+n)),e.width.number>0){var i=F(e.width,t);r.setAttribute("width",G(i))}return r.setAttribute("src",e.src),r}}),st({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=Yt(t[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:(e,t)=>Je.makeGlue(e.dimension,t),mathmlBuilder(e,t){var r=F(e.dimension,t);return new Bt.SpaceNode(r)}}),st({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:(e,t)=>{var r;"clap"===e.alignment?(r=Je.makeSpan([],[kt(e.body,t)]),r=Je.makeSpan(["inner"],[r],t)):r=Je.makeSpan(["inner"],[kt(e.body,t)]);var a=Je.makeSpan(["fix"],[]),n=Je.makeSpan([e.alignment],[r,a],t),i=Je.makeSpan(["strut"]);return i.style.height=G(n.height+n.depth),n.depth&&(i.style.verticalAlign=G(-n.depth)),n.children.unshift(i),n=Je.makeSpan(["thinbox"],[n],t),Je.makeSpan(["mord","vbox"],[n],t)},mathmlBuilder:(e,t)=>{var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]);if("rlap"!==e.alignment){var a="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),st({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:a}=e,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),st({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new i("Mismatched "+e.funcName)}});var ma=(e,t)=>{switch(t.style.size){case k.DISPLAY.size:return e.display;case k.TEXT.size:return e.text;case k.SCRIPT.size:return e.script;case k.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};st({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:mt(t[0]),text:mt(t[1]),script:mt(t[2]),scriptscript:mt(t[3])}},htmlBuilder:(e,t)=>{var r=ma(e,t),a=ft(r,t,!1);return Je.makeFragment(a)},mathmlBuilder:(e,t)=>{var r=ma(e,t);return Ht(r,t)}});var ca=(e,t,r,a,n,i,o)=>{e=Je.makeSpan([],[e]);var s,l,h,c=r&&m.isCharacterBox(r);if(t){var p=kt(t,a.havingStyle(n.sup()),a);l={elem:p,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-p.depth)}}if(r){var u=kt(r,a.havingStyle(n.sub()),a);s={elem:u,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-u.height)}}if(l&&s){var d=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;h=Je.makeVList({positionType:"bottom",positionData:d,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:G(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:G(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var g=e.height-o;h=Je.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:G(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]},a)}else{if(!l)return e;var f=e.depth+o;h=Je.makeVList({positionType:"bottom",positionData:f,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:G(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}var v=[h];if(s&&0!==i&&!c){var b=Je.makeSpan(["mspace"],[],a);b.style.marginRight=G(i),v.unshift(b)}return Je.makeSpan(["mop","op-limits"],v,a)},pa=["\\smallint"],ua=(e,t)=>{var r,a,n,i=!1;"supsub"===e.type?(r=e.sup,a=e.sub,n=Yt(e.base,"op"),i=!0):n=Yt(e,"op");var o,s=t.style,l=!1;if(s.size===k.DISPLAY.size&&n.symbol&&!m.contains(pa,n.name)&&(l=!0),n.symbol){var h=l?"Size2-Regular":"Size1-Regular",c="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(c=n.name.slice(1),n.name="oiint"===c?"\\iint":"\\iiint"),o=Je.makeSymbol(n.name,h,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),c.length>0){var p=o.italic,u=Je.staticSvg(c+"Size"+(l?"2":"1"),t);o=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:u,shift:l?.08:0}]},t),n.name="\\"+c,o.classes.unshift("mop"),o.italic=p}}else if(n.body){var d=ft(n.body,t,!0);1===d.length&&d[0]instanceof J?(o=d[0]).classes[0]="mop":o=Je.makeSpan(["mop"],d,t)}else{for(var g=[],f=1;f<n.name.length;f++)g.push(Je.mathsym(n.name[f],n.mode,t));o=Je.makeSpan(["mop"],g,t)}var v=0,b=0;return(o instanceof J||"\\oiint"===n.name||"\\oiiint"===n.name)&&!n.suppressBaseShift&&(v=(o.height-o.depth)/2-t.fontMetrics().axisHeight,b=o.italic),i?ca(o,r,a,t,s,b,v):(v&&(o.style.position="relative",o.style.top=G(v)),o)},da=(e,t)=>{var r;if(e.symbol)r=new At("mo",[Ct(e.name,e.mode)]),m.contains(pa,e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new At("mo",Rt(e.body,t));else{r=new At("mi",[new Tt(e.name.slice(1))]);var a=new At("mo",[Ct("\u2061","text")]);r=e.parentIsSupSub?new At("mrow",[r,a]):zt([r,a])}return r},ga={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};st({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=a;return 1===n.length&&(n=ga[n]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:ua,mathmlBuilder:da}),st({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:mt(a)}},htmlBuilder:ua,mathmlBuilder:da});var fa={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};st({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ua,mathmlBuilder:da}),st({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ua,mathmlBuilder:da}),st({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e,a=r;return 1===a.length&&(a=fa[a]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:ua,mathmlBuilder:da});var va=(e,t)=>{var r,a,n,i,o=!1;if("supsub"===e.type?(r=e.sup,a=e.sub,n=Yt(e.base,"operatorname"),o=!0):n=Yt(e,"operatorname"),n.body.length>0){for(var s=n.body.map(e=>{var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e}),l=ft(s,t.withFont("mathrm"),!0),h=0;h<l.length;h++){var m=l[h];m instanceof J&&(m.text=m.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Je.makeSpan(["mop"],l,t)}else i=Je.makeSpan(["mop"],[],t);return o?ca(i,r,a,t,t.style,0,0):i};function ba(e,t,r){for(var a=ft(e,t,!1),n=t.sizeMultiplier/r.sizeMultiplier,i=0;i<a.length;i++){var o=a[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(a[i].classes,t.sizingClasses(r)):a[i].classes[o+1]==="reset-size"+t.size&&(a[i].classes[o+1]="reset-size"+r.size),a[i].height*=n,a[i].depth*=n}return Je.makeFragment(a)}st({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"operatorname",mode:r.mode,body:mt(n),alwaysHandleSupSub:"\\operatornamewithlimits"===a,limits:!1,parentIsSupSub:!1}},htmlBuilder:va,mathmlBuilder:(e,t)=>{for(var r=Rt(e.body,t.withFont("mathrm")),a=!0,n=0;n<r.length;n++){var i=r[n];if(i instanceof Bt.SpaceNode);else if(i instanceof Bt.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof Bt.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):a=!1;break;default:a=!1}else a=!1}if(a){var s=r.map(e=>e.toText()).join("");r=[new Bt.TextNode(s)]}var l=new Bt.MathNode("mi",r);l.setAttribute("mathvariant","normal");var h=new Bt.MathNode("mo",[Ct("\u2061","text")]);return e.parentIsSupSub?new Bt.MathNode("mrow",[l,h]):Bt.newDocumentFragment([l,h])}}),Ur("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),lt({type:"ordgroup",htmlBuilder:(e,t)=>e.semisimple?Je.makeFragment(ft(e.body,t,!1)):Je.makeSpan(["mord"],ft(e.body,t,!0),t),mathmlBuilder:(e,t)=>Ht(e.body,t,!0)}),st({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,a=t[0];return{type:"overline",mode:r.mode,body:a}},htmlBuilder(e,t){var r=kt(e.body,t.havingCrampedStyle()),a=Je.makeLineSpan("overline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},t);return Je.makeSpan(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[new Bt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new Bt.MathNode("mover",[Ot(e.body,t),r]);return a.setAttribute("accent","true"),a}}),st({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"phantom",mode:r.mode,body:mt(a)}},htmlBuilder:(e,t)=>{var r=ft(e.body,t.withPhantom(),!1);return Je.makeFragment(r)},mathmlBuilder:(e,t)=>{var r=Rt(e.body,t);return new Bt.MathNode("mphantom",r)}}),st({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"hphantom",mode:r.mode,body:a}},htmlBuilder:(e,t)=>{var r=Je.makeSpan([],[kt(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var a=0;a<r.children.length;a++)r.children[a].height=0,r.children[a].depth=0;return r=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t),Je.makeSpan(["mord"],[r],t)},mathmlBuilder:(e,t)=>{var r=Rt(mt(e.body),t),a=new Bt.MathNode("mphantom",r),n=new Bt.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}}),st({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"vphantom",mode:r.mode,body:a}},htmlBuilder:(e,t)=>{var r=Je.makeSpan(["inner"],[kt(e.body,t.withPhantom())]),a=Je.makeSpan(["fix"],[]);return Je.makeSpan(["mord","rlap"],[r,a],t)},mathmlBuilder:(e,t)=>{var r=Rt(mt(e.body),t),a=new Bt.MathNode("mphantom",r),n=new Bt.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}}),st({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,a=Yt(t[0],"size").value,n=t[1];return{type:"raisebox",mode:r.mode,dy:a,body:n}},htmlBuilder(e,t){var r=kt(e.body,t),a=F(e.dy,t);return Je.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]),a=e.dy.number+e.dy.unit;return r.setAttribute("voffset",a),r}}),st({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}}),st({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:a}=e,n=r[0],i=Yt(t[0],"size"),o=Yt(t[1],"size");return{type:"rule",mode:a.mode,shift:n&&Yt(n,"size").value,width:i.value,height:o.value}},htmlBuilder(e,t){var r=Je.makeSpan(["mord","rule"],[],t),a=F(e.width,t),n=F(e.height,t),i=e.shift?F(e.shift,t):0;return r.style.borderRightWidth=G(a),r.style.borderTopWidth=G(n),r.style.bottom=G(i),r.width=a,r.height=n+i,r.depth=-i,r.maxFontSize=1.125*n*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=F(e.width,t),a=F(e.height,t),n=e.shift?F(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new Bt.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",G(r)),o.setAttribute("height",G(a));var s=new Bt.MathNode("mpadded",[o]);return n>=0?s.setAttribute("height",G(n)):(s.setAttribute("height",G(n)),s.setAttribute("depth",G(-n))),s.setAttribute("voffset",G(n)),s}});var ya=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];st({type:"sizing",names:ya,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:ya.indexOf(a)+1,body:i}},htmlBuilder:(e,t)=>{var r=t.havingSize(e.size);return ba(e.body,r,t)},mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),a=Rt(e.body,r),n=new Bt.MathNode("mstyle",a);return n.setAttribute("mathsize",G(r.sizeMultiplier)),n}}),st({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:a}=e,n=!1,i=!1,o=r[0]&&Yt(r[0],"ordgroup");if(o)for(var s="",l=0;l<o.body.length;++l){if("t"===(s=o.body[l].text))n=!0;else{if("b"!==s){n=!1,i=!1;break}i=!0}}else n=!0,i=!0;var h=t[0];return{type:"smash",mode:a.mode,body:h,smashHeight:n,smashDepth:i}},htmlBuilder:(e,t)=>{var r=Je.makeSpan([],[kt(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(var a=0;a<r.children.length;a++)r.children[a].height=0;if(e.smashDepth&&(r.depth=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].depth=0;var i=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t);return Je.makeSpan(["mord"],[i],t)},mathmlBuilder:(e,t)=>{var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),st({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a}=e,n=r[0],i=t[0];return{type:"sqrt",mode:a.mode,body:i,index:n}},htmlBuilder(e,t){var r=kt(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=Je.wrapFragment(r,t);var a=t.fontMetrics().defaultRuleThickness,n=a;t.style.id<k.TEXT.id&&(n=t.fontMetrics().xHeight);var i=a+n/4,o=r.height+r.depth+i+a,{span:s,ruleWidth:l,advanceWidth:h}=Rr.sqrtImage(o,t),m=s.height-l;m>r.height+r.depth+i&&(i=(i+m-r.height-r.depth)/2);var c=s.height-r.height-i-l;r.style.paddingLeft=G(h);var p=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+c)},{type:"elem",elem:s},{type:"kern",size:l}]},t);if(e.index){var u=t.havingStyle(k.SCRIPTSCRIPT),d=kt(e.index,u,t),g=.6*(p.height-p.depth),f=Je.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:d}]},t),v=Je.makeSpan(["root"],[f]);return Je.makeSpan(["mord","sqrt"],[v,p],t)}return Je.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:a}=e;return a?new Bt.MathNode("mroot",[Ot(r,t),Ot(a,t)]):new Bt.MathNode("msqrt",[Ot(r,t)])}});var xa={display:k.DISPLAY,text:k.TEXT,script:k.SCRIPT,scriptscript:k.SCRIPTSCRIPT};st({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder(e,t){var r=xa[e.style],a=t.havingStyle(r).withFont("");return ba(e.body,a,t)},mathmlBuilder(e,t){var r=xa[e.style],a=t.havingStyle(r),n=Rt(e.body,a),i=new Bt.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});lt({type:"supsub",htmlBuilder(e,t){var r=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===k.DISPLAY.size||r.alwaysHandleSupSub)?ua:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===k.DISPLAY.size||r.limits)?va:null:"accent"===r.type?m.isCharacterBox(r.base)?_t:null:"horizBrace"===r.type&&!e.sub===r.isOver?la:null:null}(e,t);if(r)return r(e,t);var a,n,i,{base:o,sup:s,sub:l}=e,h=kt(o,t),c=t.fontMetrics(),p=0,u=0,d=o&&m.isCharacterBox(o);if(s){var g=t.havingStyle(t.style.sup());a=kt(s,g,t),d||(p=h.height-g.fontMetrics().supDrop*g.sizeMultiplier/t.sizeMultiplier)}if(l){var f=t.havingStyle(t.style.sub());n=kt(l,f,t),d||(u=h.depth+f.fontMetrics().subDrop*f.sizeMultiplier/t.sizeMultiplier)}i=t.style===k.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;var v,b=t.sizeMultiplier,y=G(.5/c.ptPerEm/b),x=null;if(n){var w=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(h instanceof J||w)&&(x=G(-h.italic))}if(a&&n){p=Math.max(p,i,a.depth+.25*c.xHeight),u=Math.max(u,c.sub2);var S=4*c.defaultRuleThickness;if(p-a.depth-(n.height-u)<S){u=S-(p-a.depth)+n.height;var M=.8*c.xHeight-(p-a.depth);M>0&&(p+=M,u-=M)}var z=[{type:"elem",elem:n,shift:u,marginRight:y,marginLeft:x},{type:"elem",elem:a,shift:-p,marginRight:y}];v=Je.makeVList({positionType:"individualShift",children:z},t)}else if(n){u=Math.max(u,c.sub1,n.height-.8*c.xHeight);var A=[{type:"elem",elem:n,marginLeft:x,marginRight:y}];v=Je.makeVList({positionType:"shift",positionData:u,children:A},t)}else{if(!a)throw new Error("supsub must have either sup or sub.");p=Math.max(p,i,a.depth+.25*c.xHeight),v=Je.makeVList({positionType:"shift",positionData:-p,children:[{type:"elem",elem:a,marginRight:y}]},t)}var T=xt(h,"right")||"mord";return Je.makeSpan([T],[h,Je.makeSpan(["msupsub"],[v])],t)},mathmlBuilder(e,t){var r,a=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(a=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var n,i=[Ot(e.base,t)];if(e.sub&&i.push(Ot(e.sub,t)),e.sup&&i.push(Ot(e.sup,t)),a)n=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;n=o&&"op"===o.type&&o.limits&&t.style===k.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===k.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;n=s&&"op"===s.type&&s.limits&&(t.style===k.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===k.DISPLAY)?"munder":"msub"}else{var l=e.base;n=l&&"op"===l.type&&l.limits&&(t.style===k.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===k.DISPLAY)?"mover":"msup"}return new Bt.MathNode(n,i)}}),lt({type:"atom",htmlBuilder:(e,t)=>Je.mathsym(e.text,e.mode,t,["m"+e.family]),mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[Ct(e.text,e.mode)]);if("bin"===e.family){var a=qt(e,t);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var wa={mi:"italic",mn:"normal",mtext:"normal"};lt({type:"mathord",htmlBuilder:(e,t)=>Je.makeOrd(e,t,"mathord"),mathmlBuilder(e,t){var r=new Bt.MathNode("mi",[Ct(e.text,e.mode,t)]),a=qt(e,t)||"italic";return a!==wa[r.type]&&r.setAttribute("mathvariant",a),r}}),lt({type:"textord",htmlBuilder:(e,t)=>Je.makeOrd(e,t,"textord"),mathmlBuilder(e,t){var r,a=Ct(e.text,e.mode,t),n=qt(e,t)||"normal";return r="text"===e.mode?new Bt.MathNode("mtext",[a]):/[0-9]/.test(e.text)?new Bt.MathNode("mn",[a]):"\\prime"===e.text?new Bt.MathNode("mo",[a]):new Bt.MathNode("mi",[a]),n!==wa[r.type]&&r.setAttribute("mathvariant",n),r}});var ka={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Sa={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};lt({type:"spacing",htmlBuilder(e,t){if(Sa.hasOwnProperty(e.text)){var r=Sa[e.text].className||"";if("text"===e.mode){var a=Je.makeOrd(e,t,"textord");return a.classes.push(r),a}return Je.makeSpan(["mspace",r],[Je.mathsym(e.text,e.mode,t)],t)}if(ka.hasOwnProperty(e.text))return Je.makeSpan(["mspace",ka[e.text]],[],t);throw new i('Unknown type of space "'+e.text+'"')},mathmlBuilder(e,t){if(!Sa.hasOwnProperty(e.text)){if(ka.hasOwnProperty(e.text))return new Bt.MathNode("mspace");throw new i('Unknown type of space "'+e.text+'"')}return new Bt.MathNode("mtext",[new Bt.TextNode("\xa0")])}});var Ma=()=>{var e=new Bt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};lt({type:"tag",mathmlBuilder(e,t){var r=new Bt.MathNode("mtable",[new Bt.MathNode("mtr",[Ma(),new Bt.MathNode("mtd",[Ht(e.body,t)]),Ma(),new Bt.MathNode("mtd",[Ht(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var za={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Aa={"\\textbf":"textbf","\\textmd":"textmd"},Ta={"\\textit":"textit","\\textup":"textup"},Ba=(e,t)=>{var r=e.font;return r?za[r]?t.withTextFontFamily(za[r]):Aa[r]?t.withTextFontWeight(Aa[r]):"\\emph"===r?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(Ta[r]):t};st({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"text",mode:r.mode,body:mt(n),font:a}},htmlBuilder(e,t){var r=Ba(e,t),a=ft(e.body,r,!0);return Je.makeSpan(["mord","text"],a,r)},mathmlBuilder(e,t){var r=Ba(e,t);return Ht(e.body,r)}}),st({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=kt(e.body,t),a=Je.makeLineSpan("underline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Je.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},t);return Je.makeSpan(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[new Bt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new Bt.MathNode("munder",[Ot(e.body,t),r]);return a.setAttribute("accentunder","true"),a}}),st({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=kt(e.body,t),a=t.fontMetrics().axisHeight,n=.5*(r.height-a-(r.depth+a));return Je.makeVList({positionType:"shift",positionData:n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:(e,t)=>new Bt.MathNode("mpadded",[Ot(e.body,t)],["vcenter"])}),st({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new i("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=Ca(e),a=[],n=t.havingStyle(t.style.text()),i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),a.push(Je.makeSymbol(o,"Typewriter-Regular",e.mode,n,["mord","texttt"]))}return Je.makeSpan(["mord","text"].concat(n.sizingClasses(t)),Je.tryCombineChars(a),n)},mathmlBuilder(e,t){var r=new Bt.TextNode(Ca(e)),a=new Bt.MathNode("mtext",[r]);return a.setAttribute("mathvariant","monospace"),a}});var Ca=e=>e.body.replace(/ /g,e.star?"\u2423":"\xa0"),Na=nt,qa="[ \r\n\t]",Ia="(\\\\[a-zA-Z@]+)"+qa+"*",Ra="[\u0300-\u036f]",Ha=new RegExp(Ra+"+$"),Oa="("+qa+"+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+Ra+"*|[\ud800-\udbff][\udc00-\udfff]"+Ra+"*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|"+Ia+"|\\\\[^\ud800-\udfff])";class Ea{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(Oa,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new n("EOF",new a(this,t,t));var r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new i("Unexpected character: '"+e[t]+"'",new n(e[t],new a(this,t,t+1)));var o=r[6]||r[3]||(r[2]?"\\ ":" ");if(14===this.catcodes[o]){var s=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}return new n(o,new a(this,t,this.tokenRegex.lastIndex))}}class La{constructor(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new i("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,r){if(void 0===r&&(r=!1),r){for(var a=0;a<this.undefStack.length;a++)delete this.undefStack[a][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(e)&&(n[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t}}var Da=Gr;Ur("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}}),Ur("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}}),Ur("\\@firstoftwo",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),Ur("\\@secondoftwo",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),Ur("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),Ur("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Ur("\\TextOrMath",function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var Va={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Ur("\\char",function(e){var t,r=e.popToken(),a="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new i("\\char` missing argument");a=r.text.charCodeAt(0)}else t=10;if(t){if(null==(a=Va[r.text])||a>=t)throw new i("Invalid base-"+t+" digit "+r.text);for(var n;null!=(n=Va[e.future().text])&&n<t;)a*=t,a+=n,e.popToken()}return"\\@char{"+a+"}"});var Pa=(e,t,r,a)=>{var n=e.consumeArg().tokens;if(1!==n.length)throw new i("\\newcommand's first argument must be a macro name");var o=n[0].text,s=e.isDefined(o);if(s&&!t)throw new i("\\newcommand{"+o+"} attempting to redefine "+o+"; use \\renewcommand");if(!s&&!r)throw new i("\\renewcommand{"+o+"} when command "+o+" does not yet exist; use \\newcommand");var l=0;if(1===(n=e.consumeArg().tokens).length&&"["===n[0].text){for(var h="",m=e.expandNextToken();"]"!==m.text&&"EOF"!==m.text;)h+=m.text,m=e.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new i("Invalid number of arguments: "+h);l=parseInt(h),n=e.consumeArg().tokens}return s&&a||e.macros.set(o,{tokens:n,numArgs:l}),""};Ur("\\newcommand",e=>Pa(e,!1,!0,!1)),Ur("\\renewcommand",e=>Pa(e,!0,!1,!1)),Ur("\\providecommand",e=>Pa(e,!0,!0,!0)),Ur("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(e=>e.text).join("")),""}),Ur("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(e=>e.text).join("")),""}),Ur("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Na[r],ie.math[r],ie.text[r]),""}),Ur("\\bgroup","{"),Ur("\\egroup","}"),Ur("~","\\nobreakspace"),Ur("\\lq","`"),Ur("\\rq","'"),Ur("\\aa","\\r a"),Ur("\\AA","\\r A"),Ur("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),Ur("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),Ur("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),Ur("\u212c","\\mathscr{B}"),Ur("\u2130","\\mathscr{E}"),Ur("\u2131","\\mathscr{F}"),Ur("\u210b","\\mathscr{H}"),Ur("\u2110","\\mathscr{I}"),Ur("\u2112","\\mathscr{L}"),Ur("\u2133","\\mathscr{M}"),Ur("\u211b","\\mathscr{R}"),Ur("\u212d","\\mathfrak{C}"),Ur("\u210c","\\mathfrak{H}"),Ur("\u2128","\\mathfrak{Z}"),Ur("\\Bbbk","\\Bbb{k}"),Ur("\xb7","\\cdotp"),Ur("\\llap","\\mathllap{\\textrm{#1}}"),Ur("\\rlap","\\mathrlap{\\textrm{#1}}"),Ur("\\clap","\\mathclap{\\textrm{#1}}"),Ur("\\mathstrut","\\vphantom{(}"),Ur("\\underbar","\\underline{\\text{#1}}"),Ur("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),Ur("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),Ur("\\ne","\\neq"),Ur("\u2260","\\neq"),Ur("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),Ur("\u2209","\\notin"),Ur("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),Ur("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),Ur("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),Ur("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),Ur("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),Ur("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),Ur("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),Ur("\u27c2","\\perp"),Ur("\u203c","\\mathclose{!\\mkern-0.8mu!}"),Ur("\u220c","\\notni"),Ur("\u231c","\\ulcorner"),Ur("\u231d","\\urcorner"),Ur("\u231e","\\llcorner"),Ur("\u231f","\\lrcorner"),Ur("\xa9","\\copyright"),Ur("\xae","\\textregistered"),Ur("\ufe0f","\\textregistered"),Ur("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),Ur("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),Ur("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),Ur("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),Ur("\\vdots","{\\varvdots\\rule{0pt}{15pt}}"),Ur("\u22ee","\\vdots"),Ur("\\varGamma","\\mathit{\\Gamma}"),Ur("\\varDelta","\\mathit{\\Delta}"),Ur("\\varTheta","\\mathit{\\Theta}"),Ur("\\varLambda","\\mathit{\\Lambda}"),Ur("\\varXi","\\mathit{\\Xi}"),Ur("\\varPi","\\mathit{\\Pi}"),Ur("\\varSigma","\\mathit{\\Sigma}"),Ur("\\varUpsilon","\\mathit{\\Upsilon}"),Ur("\\varPhi","\\mathit{\\Phi}"),Ur("\\varPsi","\\mathit{\\Psi}"),Ur("\\varOmega","\\mathit{\\Omega}"),Ur("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),Ur("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),Ur("\\boxed","\\fbox{$\\displaystyle{#1}$}"),Ur("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),Ur("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),Ur("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;"),Ur("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"),Ur("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var Fa={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Ur("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Fa?t=Fa[r]:("\\not"===r.slice(0,4)||r in ie.math&&m.contains(["bin","rel"],ie.math[r].group))&&(t="\\dotsb"),t});var Ga={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Ur("\\dotso",function(e){return e.future().text in Ga?"\\ldots\\,":"\\ldots"}),Ur("\\dotsc",function(e){var t=e.future().text;return t in Ga&&","!==t?"\\ldots\\,":"\\ldots"}),Ur("\\cdots",function(e){return e.future().text in Ga?"\\@cdots\\,":"\\@cdots"}),Ur("\\dotsb","\\cdots"),Ur("\\dotsm","\\cdots"),Ur("\\dotsi","\\!\\cdots"),Ur("\\dotsx","\\ldots\\,"),Ur("\\DOTSI","\\relax"),Ur("\\DOTSB","\\relax"),Ur("\\DOTSX","\\relax"),Ur("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Ur("\\,","\\tmspace+{3mu}{.1667em}"),Ur("\\thinspace","\\,"),Ur("\\>","\\mskip{4mu}"),Ur("\\:","\\tmspace+{4mu}{.2222em}"),Ur("\\medspace","\\:"),Ur("\\;","\\tmspace+{5mu}{.2777em}"),Ur("\\thickspace","\\;"),Ur("\\!","\\tmspace-{3mu}{.1667em}"),Ur("\\negthinspace","\\!"),Ur("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Ur("\\negthickspace","\\tmspace-{5mu}{.277em}"),Ur("\\enspace","\\kern.5em "),Ur("\\enskip","\\hskip.5em\\relax"),Ur("\\quad","\\hskip1em\\relax"),Ur("\\qquad","\\hskip2em\\relax"),Ur("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Ur("\\tag@paren","\\tag@literal{({#1})}"),Ur("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new i("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),Ur("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Ur("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Ur("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Ur("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Ur("\\newline","\\\\\\relax"),Ur("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Ua=G(C["Main-Regular"]["T".charCodeAt(0)][1]-.7*C["Main-Regular"]["A".charCodeAt(0)][1]);Ur("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Ua+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Ur("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Ua+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Ur("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Ur("\\@hspace","\\hskip #1\\relax"),Ur("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Ur("\\ordinarycolon",":"),Ur("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Ur("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Ur("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Ur("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Ur("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Ur("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Ur("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Ur("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Ur("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Ur("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Ur("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Ur("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Ur("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Ur("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Ur("\u2237","\\dblcolon"),Ur("\u2239","\\eqcolon"),Ur("\u2254","\\coloneqq"),Ur("\u2255","\\eqqcolon"),Ur("\u2a74","\\Coloneqq"),Ur("\\ratio","\\vcentcolon"),Ur("\\coloncolon","\\dblcolon"),Ur("\\colonequals","\\coloneqq"),Ur("\\coloncolonequals","\\Coloneqq"),Ur("\\equalscolon","\\eqqcolon"),Ur("\\equalscoloncolon","\\Eqqcolon"),Ur("\\colonminus","\\coloneq"),Ur("\\coloncolonminus","\\Coloneq"),Ur("\\minuscolon","\\eqcolon"),Ur("\\minuscoloncolon","\\Eqcolon"),Ur("\\coloncolonapprox","\\Colonapprox"),Ur("\\coloncolonsim","\\Colonsim"),Ur("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Ur("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Ur("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Ur("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Ur("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Ur("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Ur("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Ur("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Ur("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Ur("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Ur("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Ur("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Ur("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Ur("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Ur("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Ur("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Ur("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Ur("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Ur("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Ur("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Ur("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Ur("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Ur("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Ur("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Ur("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Ur("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Ur("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Ur("\\imath","\\html@mathml{\\@imath}{\u0131}"),Ur("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Ur("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Ur("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Ur("\u27e6","\\llbracket"),Ur("\u27e7","\\rrbracket"),Ur("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Ur("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Ur("\u2983","\\lBrace"),Ur("\u2984","\\rBrace"),Ur("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Ur("\u29b5","\\minuso"),Ur("\\darr","\\downarrow"),Ur("\\dArr","\\Downarrow"),Ur("\\Darr","\\Downarrow"),Ur("\\lang","\\langle"),Ur("\\rang","\\rangle"),Ur("\\uarr","\\uparrow"),Ur("\\uArr","\\Uparrow"),Ur("\\Uarr","\\Uparrow"),Ur("\\N","\\mathbb{N}"),Ur("\\R","\\mathbb{R}"),Ur("\\Z","\\mathbb{Z}"),Ur("\\alef","\\aleph"),Ur("\\alefsym","\\aleph"),Ur("\\Alpha","\\mathrm{A}"),Ur("\\Beta","\\mathrm{B}"),Ur("\\bull","\\bullet"),Ur("\\Chi","\\mathrm{X}"),Ur("\\clubs","\\clubsuit"),Ur("\\cnums","\\mathbb{C}"),Ur("\\Complex","\\mathbb{C}"),Ur("\\Dagger","\\ddagger"),Ur("\\diamonds","\\diamondsuit"),Ur("\\empty","\\emptyset"),Ur("\\Epsilon","\\mathrm{E}"),Ur("\\Eta","\\mathrm{H}"),Ur("\\exist","\\exists"),Ur("\\harr","\\leftrightarrow"),Ur("\\hArr","\\Leftrightarrow"),Ur("\\Harr","\\Leftrightarrow"),Ur("\\hearts","\\heartsuit"),Ur("\\image","\\Im"),Ur("\\infin","\\infty"),Ur("\\Iota","\\mathrm{I}"),Ur("\\isin","\\in"),Ur("\\Kappa","\\mathrm{K}"),Ur("\\larr","\\leftarrow"),Ur("\\lArr","\\Leftarrow"),Ur("\\Larr","\\Leftarrow"),Ur("\\lrarr","\\leftrightarrow"),Ur("\\lrArr","\\Leftrightarrow"),Ur("\\Lrarr","\\Leftrightarrow"),Ur("\\Mu","\\mathrm{M}"),Ur("\\natnums","\\mathbb{N}"),Ur("\\Nu","\\mathrm{N}"),Ur("\\Omicron","\\mathrm{O}"),Ur("\\plusmn","\\pm"),Ur("\\rarr","\\rightarrow"),Ur("\\rArr","\\Rightarrow"),Ur("\\Rarr","\\Rightarrow"),Ur("\\real","\\Re"),Ur("\\reals","\\mathbb{R}"),Ur("\\Reals","\\mathbb{R}"),Ur("\\Rho","\\mathrm{P}"),Ur("\\sdot","\\cdot"),Ur("\\sect","\\S"),Ur("\\spades","\\spadesuit"),Ur("\\sub","\\subset"),Ur("\\sube","\\subseteq"),Ur("\\supe","\\supseteq"),Ur("\\Tau","\\mathrm{T}"),Ur("\\thetasym","\\vartheta"),Ur("\\weierp","\\wp"),Ur("\\Zeta","\\mathrm{Z}"),Ur("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Ur("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Ur("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Ur("\\bra","\\mathinner{\\langle{#1}|}"),Ur("\\ket","\\mathinner{|{#1}\\rangle}"),Ur("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Ur("\\Bra","\\left\\langle#1\\right|"),Ur("\\Ket","\\left|#1\\right\\rangle");var Ya=e=>t=>{var r=t.consumeArg().tokens,a=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,o=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=t=>r=>{e&&(r.macros.set("|",o),n.length&&r.macros.set("\\|",s));var i=t;!t&&n.length&&("|"===r.future().text&&(r.popToken(),i=!0));return{tokens:i?n:a,numArgs:0}};t.macros.set("|",l(!1)),n.length&&t.macros.set("\\|",l(!0));var h=t.consumeArg().tokens,m=t.expandTokens([...i,...h,...r]);return t.macros.endGroup(),{tokens:m.reverse(),numArgs:0}};Ur("\\bra@ket",Ya(!1)),Ur("\\bra@set",Ya(!0)),Ur("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Ur("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Ur("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Ur("\\angln","{\\angl n}"),Ur("\\blue","\\textcolor{##6495ed}{#1}"),Ur("\\orange","\\textcolor{##ffa500}{#1}"),Ur("\\pink","\\textcolor{##ff00af}{#1}"),Ur("\\red","\\textcolor{##df0030}{#1}"),Ur("\\green","\\textcolor{##28ae7b}{#1}"),Ur("\\gray","\\textcolor{gray}{#1}"),Ur("\\purple","\\textcolor{##9d38bd}{#1}"),Ur("\\blueA","\\textcolor{##ccfaff}{#1}"),Ur("\\blueB","\\textcolor{##80f6ff}{#1}"),Ur("\\blueC","\\textcolor{##63d9ea}{#1}"),Ur("\\blueD","\\textcolor{##11accd}{#1}"),Ur("\\blueE","\\textcolor{##0c7f99}{#1}"),Ur("\\tealA","\\textcolor{##94fff5}{#1}"),Ur("\\tealB","\\textcolor{##26edd5}{#1}"),Ur("\\tealC","\\textcolor{##01d1c1}{#1}"),Ur("\\tealD","\\textcolor{##01a995}{#1}"),Ur("\\tealE","\\textcolor{##208170}{#1}"),Ur("\\greenA","\\textcolor{##b6ffb0}{#1}"),Ur("\\greenB","\\textcolor{##8af281}{#1}"),Ur("\\greenC","\\textcolor{##74cf70}{#1}"),Ur("\\greenD","\\textcolor{##1fab54}{#1}"),Ur("\\greenE","\\textcolor{##0d923f}{#1}"),Ur("\\goldA","\\textcolor{##ffd0a9}{#1}"),Ur("\\goldB","\\textcolor{##ffbb71}{#1}"),Ur("\\goldC","\\textcolor{##ff9c39}{#1}"),Ur("\\goldD","\\textcolor{##e07d10}{#1}"),Ur("\\goldE","\\textcolor{##a75a05}{#1}"),Ur("\\redA","\\textcolor{##fca9a9}{#1}"),Ur("\\redB","\\textcolor{##ff8482}{#1}"),Ur("\\redC","\\textcolor{##f9685d}{#1}"),Ur("\\redD","\\textcolor{##e84d39}{#1}"),Ur("\\redE","\\textcolor{##bc2612}{#1}"),Ur("\\maroonA","\\textcolor{##ffbde0}{#1}"),Ur("\\maroonB","\\textcolor{##ff92c6}{#1}"),Ur("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Ur("\\maroonD","\\textcolor{##ca337c}{#1}"),Ur("\\maroonE","\\textcolor{##9e034e}{#1}"),Ur("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Ur("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Ur("\\purpleC","\\textcolor{##aa87ff}{#1}"),Ur("\\purpleD","\\textcolor{##7854ab}{#1}"),Ur("\\purpleE","\\textcolor{##543b78}{#1}"),Ur("\\mintA","\\textcolor{##f5f9e8}{#1}"),Ur("\\mintB","\\textcolor{##edf2df}{#1}"),Ur("\\mintC","\\textcolor{##e0e5cc}{#1}"),Ur("\\grayA","\\textcolor{##f6f7f7}{#1}"),Ur("\\grayB","\\textcolor{##f0f1f2}{#1}"),Ur("\\grayC","\\textcolor{##e3e5e6}{#1}"),Ur("\\grayD","\\textcolor{##d6d8da}{#1}"),Ur("\\grayE","\\textcolor{##babec2}{#1}"),Ur("\\grayF","\\textcolor{##888d93}{#1}"),Ur("\\grayG","\\textcolor{##626569}{#1}"),Ur("\\grayH","\\textcolor{##3b3e40}{#1}"),Ur("\\grayI","\\textcolor{##21242c}{#1}"),Ur("\\kaBlue","\\textcolor{##314453}{#1}"),Ur("\\kaGreen","\\textcolor{##71B307}{#1}");var Xa={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class Wa{constructor(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new La(Da,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new Ea(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var t,r,a;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:a,end:r}=this.consumeArg(["]"]))}else({tokens:a,start:t,end:r}=this.consumeArg());return this.pushToken(new n("EOF",r.loc)),this.pushTokens(a),t.range(r,"")}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var a,n=this.future(),o=0,s=0;do{if(a=this.popToken(),t.push(a),"{"===a.text)++o;else if("}"===a.text){if(-1===--o)throw new i("Extra }",a)}else if("EOF"===a.text)throw new i("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",a);if(e&&r)if((0===o||1===o&&"{"===e[s])&&a.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===n.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:n,end:a}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new i("The length of delimiters doesn't match the number of args!");for(var r=t[0],a=0;a<r.length;a++){var n=this.popToken();if(r[a]!==n.text)throw new i("Use of the macro doesn't match its definition",n)}}for(var o=[],s=0;s<e;s++)o.push(this.consumeArg(t&&t[s+1]).tokens);return o}countExpansion(e){if(this.expansionCount+=e,this.expansionCount>this.settings.maxExpand)throw new i("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),r=t.text,a=t.noexpand?null:this._getExpansion(r);if(null==a||e&&a.unexpandable){if(e&&null==a&&"\\"===r[0]&&!this.isDefined(r))throw new i("Undefined control sequence: "+r);return this.pushToken(t),!1}this.countExpansion(1);var n=a.tokens,o=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs)for(var s=(n=n.slice()).length-1;s>=0;--s){var l=n[s];if("#"===l.text){if(0===s)throw new i("Incomplete placeholder at end of macro body",l);if("#"===(l=n[--s]).text)n.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new i("Not a valid argument number",l);n.splice(s,2,...o[+l.text-1])}}}return this.pushTokens(n),n.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new n(e)]):void 0}expandTokens(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),t.push(a)}return this.countExpansion(t.length),t}expandMacroAsText(e){var t=this.expandMacro(e);return t?t.map(e=>e.text).join(""):t}_getExpansion(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var a="function"==typeof t?t(this):t;if("string"==typeof a){var n=0;if(-1!==a.indexOf("#"))for(var i=a.replace(/##/g,"");-1!==i.indexOf("#"+(n+1));)++n;for(var o=new Ea(a,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:n}}return a}isDefined(e){return this.macros.has(e)||Na.hasOwnProperty(e)||ie.math.hasOwnProperty(e)||ie.text.hasOwnProperty(e)||Xa.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Na.hasOwnProperty(e)&&!Na[e].primitive}}var _a=/^[\u208a\u208b\u208c\u208d\u208e\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1d62\u2c7c\u2096\u2097\u2098\u2099\u2092\u209a\u1d63\u209b\u209c\u1d64\u1d65\u2093\u1d66\u1d67\u1d68\u1d69\u1d6a]/,ja=Object.freeze({"\u208a":"+","\u208b":"-","\u208c":"=","\u208d":"(","\u208e":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1d62":"i","\u2c7c":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209a":"p","\u1d63":"r","\u209b":"s","\u209c":"t","\u1d64":"u","\u1d65":"v","\u2093":"x","\u1d66":"\u03b2","\u1d67":"\u03b3","\u1d68":"\u03c1","\u1d69":"\u03d5","\u1d6a":"\u03c7","\u207a":"+","\u207b":"-","\u207c":"=","\u207d":"(","\u207e":")","\u2070":"0","\xb9":"1","\xb2":"2","\xb3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1d2c":"A","\u1d2e":"B","\u1d30":"D","\u1d31":"E","\u1d33":"G","\u1d34":"H","\u1d35":"I","\u1d36":"J","\u1d37":"K","\u1d38":"L","\u1d39":"M","\u1d3a":"N","\u1d3c":"O","\u1d3e":"P","\u1d3f":"R","\u1d40":"T","\u1d41":"U","\u2c7d":"V","\u1d42":"W","\u1d43":"a","\u1d47":"b","\u1d9c":"c","\u1d48":"d","\u1d49":"e","\u1da0":"f","\u1d4d":"g","\u02b0":"h","\u2071":"i","\u02b2":"j","\u1d4f":"k","\u02e1":"l","\u1d50":"m","\u207f":"n","\u1d52":"o","\u1d56":"p","\u02b3":"r","\u02e2":"s","\u1d57":"t","\u1d58":"u","\u1d5b":"v","\u02b7":"w","\u02e3":"x","\u02b8":"y","\u1dbb":"z","\u1d5d":"\u03b2","\u1d5e":"\u03b3","\u1d5f":"\u03b4","\u1d60":"\u03d5","\u1d61":"\u03c7","\u1dbf":"\u03b8"}),$a={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},Za={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"};class Ka{constructor(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Wa(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new i("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new n("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==Ka.endOfExpression.indexOf(a.text))break;if(t&&a.text===t)break;if(e&&Na[a.text]&&Na[a.text].infix)break;var n=this.parseAtom(t);if(!n)break;"internal"!==n.type&&r.push(n)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var t,r=-1,a=0;a<e.length;a++)if("infix"===e[a].type){if(-1!==r)throw new i("only one infix operator per group",e[a].token);r=a,t=e[a].replaceWith}if(-1!==r&&t){var n,o,s=e.slice(0,r),l=e.slice(r+1);return n=1===s.length&&"ordgroup"===s[0].type?s[0]:{type:"ordgroup",mode:this.mode,body:s},o=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},["\\\\abovefrac"===t?this.callFunction(t,[n,e[r],o],[]):this.callFunction(t,[n,o],[])]}return e}handleSupSubscript(e){var t,r=this.fetch(),a=r.text;this.consume(),this.consumeSpaces();do{var n;t=this.parseGroup(e)}while("internal"===(null==(n=t)?void 0:n.type));if(!t)throw new i("Expected group after '"+a+"'",r);return t}formatUnsupportedCmd(e){for(var t=[],r=0;r<e.length;r++)t.push({type:"textord",mode:"text",text:e[r]});var a={type:"text",mode:this.mode,body:t};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[a]}}parseAtom(e){var t,r,a=this.parseGroup("atom",e);if("internal"===(null==a?void 0:a.type))return a;if("text"===this.mode)return a;for(;;){this.consumeSpaces();var o=this.fetch();if("\\limits"===o.text||"\\nolimits"===o.text){if(a&&"op"===a.type){var s="\\limits"===o.text;a.limits=s,a.alwaysHandleSupSub=!0}else{if(!a||"operatorname"!==a.type)throw new i("Limit controls must follow a math operator",o);a.alwaysHandleSupSub&&(a.limits="\\limits"===o.text)}this.consume()}else if("^"===o.text){if(t)throw new i("Double superscript",o);t=this.handleSupSubscript("superscript")}else if("_"===o.text){if(r)throw new i("Double subscript",o);r=this.handleSupSubscript("subscript")}else if("'"===o.text){if(t)throw new i("Double superscript",o);var l={type:"textord",mode:this.mode,text:"\\prime"},h=[l];for(this.consume();"'"===this.fetch().text;)h.push(l),this.consume();"^"===this.fetch().text&&h.push(this.handleSupSubscript("superscript")),t={type:"ordgroup",mode:this.mode,body:h}}else{if(!ja[o.text])break;var m=_a.test(o.text),c=[];for(c.push(new n(ja[o.text])),this.consume();;){var p=this.fetch().text;if(!ja[p])break;if(_a.test(p)!==m)break;c.unshift(new n(ja[p])),this.consume()}var u=this.subparse(c);m?r={type:"ordgroup",mode:"math",body:u}:t={type:"ordgroup",mode:"math",body:u}}}return t||r?{type:"supsub",mode:this.mode,base:a,sup:t,sub:r}:a}parseFunction(e,t){var r=this.fetch(),a=r.text,n=Na[a];if(!n)return null;if(this.consume(),t&&"atom"!==t&&!n.allowedInArgument)throw new i("Got function '"+a+"' with no arguments"+(t?" as "+t:""),r);if("text"===this.mode&&!n.allowedInText)throw new i("Can't use function '"+a+"' in text mode",r);if("math"===this.mode&&!1===n.allowedInMath)throw new i("Can't use function '"+a+"' in math mode",r);var{args:o,optArgs:s}=this.parseArguments(a,n);return this.callFunction(a,o,s,r,e)}callFunction(e,t,r,a,n){var o={funcName:e,parser:this,token:a,breakOnTokenText:n},s=Na[e];if(s&&s.handler)return s.handler(o,t,r);throw new i("No function handler for "+e)}parseArguments(e,t){var r=t.numArgs+t.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var a=[],n=[],o=0;o<r;o++){var s=t.argTypes&&t.argTypes[o],l=o<t.numOptionalArgs;(t.primitive&&null==s||"sqrt"===t.type&&1===o&&null==n[0])&&(s="primitive");var h=this.parseGroupOfType("argument to '"+e+"'",s,l);if(l)n.push(h);else{if(null==h)throw new i("Null argument, please report this as a bug");a.push(h)}}return{args:a,optArgs:n}}parseGroupOfType(e,t,r){switch(t){case"color":return this.parseColorGroup(r);case"size":return this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r);case"math":case"text":return this.parseArgumentGroup(r,t);case"hbox":var a=this.parseArgumentGroup(r,"text");return null!=a?{type:"styling",mode:a.mode,body:[a],style:"text"}:null;case"raw":var n=this.parseStringGroup("raw",r);return null!=n?{type:"raw",mode:"text",string:n.text}:null;case"primitive":if(r)throw new i("A primitive argument cannot be optional");var o=this.parseGroup(e);if(null==o)throw new i("Expected group as "+e,this.fetch());return o;case"original":case null:case void 0:return this.parseArgumentGroup(r);default:throw new i("Unknown group type as "+e,this.fetch())}}consumeSpaces(){for(;" "===this.fetch().text;)this.consume()}parseStringGroup(e,t){var r=this.gullet.scanArgument(t);if(null==r)return null;for(var a,n="";"EOF"!==(a=this.fetch()).text;)n+=a.text,this.consume();return this.consume(),r.text=n,r}parseRegexGroup(e,t){for(var r,a=this.fetch(),n=a,o="";"EOF"!==(r=this.fetch()).text&&e.test(o+r.text);)o+=(n=r).text,this.consume();if(""===o)throw new i("Invalid "+t+": '"+a.text+"'",a);return a.range(n,o)}parseColorGroup(e){var t=this.parseStringGroup("color",e);if(null==t)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!r)throw new i("Invalid color: '"+t.text+"'",t);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}}parseSizeGroup(e){var t,r=!1;if(this.gullet.consumeSpaces(),!(t=e||"{"===this.gullet.future().text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;e||0!==t.text.length||(t.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!a)throw new i("Invalid size: '"+t.text+"'",t);var n={number:+(a[1]+a[2]),unit:a[3]};if(!P(n))throw new i("Invalid unit: '"+n.unit+"'",t);return{type:"size",mode:this.mode,value:n,isBlank:r}}parseUrlGroup(e){this.gullet.lexer.setCatcode("%",13),this.gullet.lexer.setCatcode("~",12);var t=this.parseStringGroup("url",e);if(this.gullet.lexer.setCatcode("%",14),this.gullet.lexer.setCatcode("~",13),null==t)return null;var r=t.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:r}}parseArgumentGroup(e,t){var r=this.gullet.scanArgument(e);if(null==r)return null;var a=this.mode;t&&this.switchMode(t),this.gullet.beginGroup();var n=this.parseExpression(!1,"EOF");this.expect("EOF"),this.gullet.endGroup();var i={type:"ordgroup",mode:this.mode,loc:r.loc,body:n};return t&&this.switchMode(a),i}parseGroup(e,t){var r,n=this.fetch(),o=n.text;if("{"===o||"\\begingroup"===o){this.consume();var s="{"===o?"}":"\\endgroup";this.gullet.beginGroup();var l=this.parseExpression(!1,s),h=this.fetch();this.expect(s),this.gullet.endGroup(),r={type:"ordgroup",mode:this.mode,loc:a.range(n,h),body:l,semisimple:"\\begingroup"===o||void 0}}else if(null==(r=this.parseFunction(t,e)||this.parseSymbol())&&"\\"===o[0]&&!Xa.hasOwnProperty(o)){if(this.settings.throwOnError)throw new i("Undefined control sequence: "+o,n);r=this.formatUnsupportedCmd(o),this.consume()}return r}formLigatures(e){for(var t=e.length-1,r=0;r<t;++r){var n=e[r],i=n.text;"-"===i&&"-"===e[r+1].text&&(r+1<t&&"-"===e[r+2].text?(e.splice(r,3,{type:"textord",mode:"text",loc:a.range(n,e[r+2]),text:"---"}),t-=2):(e.splice(r,2,{type:"textord",mode:"text",loc:a.range(n,e[r+1]),text:"--"}),t-=1)),"'"!==i&&"`"!==i||e[r+1].text!==i||(e.splice(r,2,{type:"textord",mode:"text",loc:a.range(n,e[r+1]),text:i+i}),t-=1)}}parseSymbol(){var e=this.fetch(),t=e.text;if(/^\\verb[^a-zA-Z]/.test(t)){this.consume();var r=t.slice(5),n="*"===r.charAt(0);if(n&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new i("\\verb assertion failed --\n please report what input caused this bug");return{type:"verb",mode:"text",body:r=r.slice(1,-1),star:n}}Za.hasOwnProperty(t[0])&&!ie[this.mode][t[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+t[0]+'" used in math mode',e),t=Za[t[0]]+t.slice(1));var o,s=Ha.exec(t);if(s&&("i"===(t=t.substring(0,s.index))?t="\u0131":"j"===t&&(t="\u0237")),ie[this.mode][t]){this.settings.strict&&"math"===this.mode&&Le.indexOf(t)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var l,h=ie[this.mode][t].group,m=a.range(e);if(ae.hasOwnProperty(h)){var c=h;l={type:"atom",mode:this.mode,family:c,loc:m,text:t}}else l={type:h,mode:this.mode,loc:m,text:t};o=l}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(z(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),o={type:"textord",mode:"text",loc:a.range(e),text:t}}if(this.consume(),s)for(var p=0;p<s[0].length;p++){var u=s[0][p];if(!$a[u])throw new i("Unknown accent ' "+u+"'",e);var d=$a[u][this.mode]||$a[u].text;if(!d)throw new i("Accent "+u+" unsupported in "+this.mode+" mode",e);o={type:"accent",mode:this.mode,loc:a.range(e),label:d,isStretchy:!1,isShifty:!0,base:o}}return o}}Ka.endOfExpression=["}","\\endgroup","\\end","\\right","&"];var Ja=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var r=new Ka(e,t);delete r.gullet.macros.current["\\df@tag"];var a=r.parse();if(delete r.gullet.macros.current["\\current@color"],delete r.gullet.macros.current["\\color"],r.gullet.macros.get("\\df@tag")){if(!t.displayMode)throw new i("\\tag works only in display equations");a=[{type:"tag",mode:"text",body:a,tag:r.subparse([new n("\\df@tag")])}]}return a},Qa=function(e,t,r){t.textContent="";var a=tn(e,r).toNode();t.appendChild(a)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Qa=function(){throw new i("KaTeX doesn't work in quirks mode.")});var en=function(e,t,r){if(r.throwOnError||!(e instanceof i))throw e;var a=Je.makeSpan(["katex-error"],[new J(t)]);return a.setAttribute("title",e.toString()),a.setAttribute("style","color:"+r.errorColor),a},tn=function(e,t){var r=new u(t);try{return function(e,t,r){var a,n=Lt(r);if("mathml"===r.output)return Et(e,t,n,r.displayMode,!0);if("html"===r.output){var i=Mt(e,n);a=Je.makeSpan(["katex"],[i])}else{var o=Et(e,t,n,r.displayMode,!1),s=Mt(e,n);a=Je.makeSpan(["katex"],[o,s])}return Dt(a,r)}(Ja(e,r),e,r)}catch(a){return en(a,e,r)}},rn={version:"0.16.22",render:Qa,renderToString:function(e,t){return tn(e,t).toMarkup()},ParseError:i,SETTINGS_SCHEMA:c,__parse:function(e,t){var r=new u(t);return Ja(e,r)},__renderToDomTree:tn,__renderToHTMLTree:function(e,t){var r=new u(t);try{return function(e,t,r){var a=Mt(e,Lt(r)),n=Je.makeSpan(["katex"],[a]);return Dt(n,r)}(Ja(e,r),0,r)}catch(a){return en(a,e,r)}},__setFontMetrics:function(e,t){C[e]=t},__defineSymbol:oe,__defineFunction:st,__defineMacro:Ur,__domTree:{Span:j,Anchor:$,SymbolNode:J,SvgNode:Q,PathNode:ee,LineNode:te}}}}]); \ No newline at end of file diff --git a/assets/js/9469bd80.82882490.js b/assets/js/9469bd80.82882490.js new file mode 100644 index 0000000000..a6ac9746b6 --- /dev/null +++ b/assets/js/9469bd80.82882490.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4661],{1966:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.11.0/rules/android/disable_resources.md","sourceDirName":"rules/android","slug":"/rules/android/disable_resources","permalink":"/ModuleCheck/docs/0.11.0/rules/android/disable_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/android/disable_resources.md","tags":[],"version":"0.11.0","frontMatter":{"id":"disable_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.11.0/rules/android/disable_viewbinding"}}');var o=r(23420),d=r(65404);const i={id:"disable_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,c={},a=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9478d12a.78d0819f.js b/assets/js/9478d12a.78d0819f.js new file mode 100644 index 0000000000..8786fb516e --- /dev/null +++ b/assets/js/9478d12a.78d0819f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1815],{37997:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.11.3/rules/kapt/custom_kapt_matchers.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.11.3/rules/kapt/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/kapt/custom_kapt_matchers.md","tags":[],"version":"0.11.3","frontMatter":{"id":"custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_dependencies"}}');var o=s(23420),r=s(65404);const a={id:"custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},c=void 0,i={},u=[];function l(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,o.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>c});var n=s(36672);const o={},r=n.createContext(o);function a(e){const t=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/94dc3e5f.08386f01.js b/assets/js/94dc3e5f.08386f01.js new file mode 100644 index 0000000000..0332618d61 --- /dev/null +++ b/assets/js/94dc3e5f.08386f01.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6446],{5009:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","source":"@site/docs/suppressing-findings.mdx","sourceDirName":".","slug":"/suppressing-findings","permalink":"/ModuleCheck/docs/next/suppressing-findings","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/suppressing-findings.mdx","tags":[],"version":"current","frontMatter":{"id":"suppressing-findings","title":"Suppressing Findings","sidebar_label":"Suppressing Findings"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/next/configuration"},"next":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/next/ci-workflow"}}');var s=t(23420),a=t(65404),i=t(65780),o=t(58118);const l={id:"suppressing-findings",title:"Suppressing Findings",sidebar_label:"Suppressing Findings"},u=void 0,c={},d=[];function p(e){const n={code:"code",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool."}),"\n",(0,s.jsxs)(n.p,{children:["The name of the check to disable can be found in the ",(0,s.jsx)(n.code,{children:"name"})," column of console output:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"> Task :moduleCheck\nModuleCheck found 3 issues in 6.157 seconds\n\n:app\n dependency name build file\n :fat-and-leaky inherited-dependency /Users/<you>/projects/sample/app/build.gradle.kts: (15, 3):\n :fat-and-leaky must-be-api /Users/<you>/projects/sample/app/build.gradle.kts: (15, 3):\n :unused-lib unused-dependency /Users/<you>/projects/sample/app/build.gradle.kts: (49, 3):\n\n"})}),"\n",(0,s.jsxs)(i.A,{children:[(0,s.jsx)(o.A,{value:"Kotlin",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",metastring:'title="build.gradle.kts"',children:'@Suppress("must-be-api") // don\'t switch anything to an api config\ndependencies {\n\n @Suppress("unused-dependency") // don\'t comment out or delete this dependency\n implementation(project(":unused-lib"))\n\n @Suppress("inherited-dependency") // don\'t add dependencies which are inherited from this library\n implementation(project(":leaky"))\n}\n'})})}),(0,s.jsx)(o.A,{value:"Groovy",children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-groovy",metastring:'title="build.gradle"',children:'// don\'t switch anything to an api config\n//noinspection must-be-api\ndependencies {\n\n // don\'t comment out or delete this dependency\n //noinspection unused-dependency\n implementation(project(":unused-lib"))\n\n // don\'t add dependencies which are inherited from this library\n //noinspection inherited-dependency\n implementation(project(":leaky"))\n}\n'})})})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},58118:(e,n,t)=>{t.d(n,{A:()=>i});t(36672);var r=t(13526);const s={tabItem:"tabItem_qogc"};var a=t(23420);function i({children:e,hidden:n,className:t}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,t),hidden:n,children:e})}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var r=t(36672);const s={},a=r.createContext(s);function i(e){const n=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(a.Provider,{value:n},e.children)}},65780:(e,n,t)=>{t.d(n,{A:()=>j});var r=t(36672),s=t(13526),a=t(10452),i=t(85291),o=t(10914),l=t(41201),u=t(40622),c=t(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,t])}function h({value:e,tabValues:n}){return n.some(n=>n.value===e)}function f({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,l.aZ)(s),(0,r.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})},[s,t])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[i,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!h({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:a})),[u,d]=f({queryString:t,groupId:s}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,c.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),g=(()=>{const e=u??m;return h({value:e,tabValues:a})?e:null})();(0,o.A)(()=>{g&&l(g)},[g]);return{selectedValue:i,selectValue:(0,r.useCallback)(e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,a]),tabValues:a}}var b=t(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=t(23420);function y({className:e,block:n,selectedValue:t,selectValue:r,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),u=e=>{const n=e.currentTarget,s=o.indexOf(n),a=i[s].value;a!==t&&(l(n),r(a))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:r})=>(0,v.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...r,className:(0,s.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:t}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function x(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function j(e){const n=(0,b.A)();return(0,v.jsx)(x,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/9538.d2be03db.js b/assets/js/9538.d2be03db.js new file mode 100644 index 0000000000..4675851778 --- /dev/null +++ b/assets/js/9538.d2be03db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9538],{49538:(e,r,s)=>{s.d(r,{diagram:()=>l});var a=s(16377),c=(s(53776),s(97576),s(57442),s(84982),s(43545),s(61598),s(70837),s(24199),s(47794),s(27293)),l={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,c.K2)(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/assets/js/9860.dc06ad47.js b/assets/js/9860.dc06ad47.js new file mode 100644 index 0000000000..dc667bffe6 --- /dev/null +++ b/assets/js/9860.dc06ad47.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9860],{99860:(e,c,k)=>{k.d(c,{createPieServices:()=>s.f});var s=k(59331);k(34939)}}]); \ No newline at end of file diff --git a/assets/js/99547feb.0f4e43ef.js b/assets/js/99547feb.0f4e43ef.js new file mode 100644 index 0000000000..796fa8e24b --- /dev/null +++ b/assets/js/99547feb.0f4e43ef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3388],{46539:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.10.0/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_plugins","permalink":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/sorting/sort_plugins.md","tags":[],"version":"0.10.0","frontMatter":{"id":"sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Rules","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.10.0/rules/android/disable_resources"}}');var r=t(23420),o=t(65404);const i={id:"sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(d,{...e})}):d()}},65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const r={},o=n.createContext(r);function i(e){const s=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9998.b3ef794d.js b/assets/js/9998.b3ef794d.js new file mode 100644 index 0000000000..72fbf7aaee --- /dev/null +++ b/assets/js/9998.b3ef794d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9998],{69998:(e,c,k)=>{k.r(c)}}]); \ No newline at end of file diff --git a/assets/js/99cbfc76.bab4b49e.js b/assets/js/99cbfc76.bab4b49e.js new file mode 100644 index 0000000000..39ea86b1f7 --- /dev/null +++ b/assets/js/99cbfc76.bab4b49e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6288],{58118:(e,n,t)=>{t.d(n,{A:()=>i});t(36672);var r=t(13526);const s={tabItem:"tabItem_qogc"};var a=t(23420);function i({children:e,hidden:n,className:t}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,t),hidden:n,children:e})}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var r=t(36672);const s={},a=r.createContext(s);function i(e){const n=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(a.Provider,{value:n},e.children)}},65780:(e,n,t)=>{t.d(n,{A:()=>x});var r=t(36672),s=t(13526),a=t(10452),i=t(85291),o=t(10914),l=t(41201),u=t(40622),c=t(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,t])}function h({value:e,tabValues:n}){return n.some(n=>n.value===e)}function f({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,l.aZ)(s),(0,r.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})},[s,t])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[i,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!h({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:a})),[u,d]=f({queryString:t,groupId:s}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,c.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),g=(()=>{const e=u??m;return h({value:e,tabValues:a})?e:null})();(0,o.A)(()=>{g&&l(g)},[g]);return{selectedValue:i,selectValue:(0,r.useCallback)(e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,a]),tabValues:a}}var b=t(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=t(23420);function y({className:e,block:n,selectedValue:t,selectValue:r,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),u=e=>{const n=e.currentTarget,s=o.indexOf(n),a=i[s].value;a!==t&&(l(n),r(a))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:r})=>(0,v.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...r,className:(0,s.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:t}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function w(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function x(e){const n=(0,b.A)();return(0,v.jsx)(w,{...e,children:d(e.children)},String(n))}},94082:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","source":"@site/versioned_docs/version-0.12.2/suppressing-findings.mdx","sourceDirName":".","slug":"/suppressing-findings","permalink":"/ModuleCheck/docs/0.12.2/suppressing-findings","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/suppressing-findings.mdx","tags":[],"version":"0.12.2","frontMatter":{"id":"suppressing-findings","title":"Suppressing Findings","sidebar_label":"Suppressing Findings"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.2/configuration"},"next":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.2/ci-workflow"}}');var s=t(23420),a=t(65404),i=t(65780),o=t(58118);const l={id:"suppressing-findings",title:"Suppressing Findings",sidebar_label:"Suppressing Findings"},u=void 0,c={},d=[];function p(e){const n={code:"code",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool."}),"\n",(0,s.jsxs)(n.p,{children:["The name of the check to disable can be found in the ",(0,s.jsx)(n.code,{children:"name"})," column of console output:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"> Task :moduleCheck\nModuleCheck found 3 issues in 6.157 seconds\n\n:app\n dependency name build file\n :fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):\n\n"})}),"\n",(0,s.jsxs)(i.A,{children:[(0,s.jsx)(o.A,{value:"Kotlin",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",metastring:'title="build.gradle.kts"',children:'@Suppress("must-be-api") // don\'t switch anything to an api config\ndependencies {\n\n@Suppress("unused-dependency") // don\'t comment out or delete this dependency\nimplementation(project(":unused-lib"))\n\n@Suppress("inherited-dependency") // don\'t add dependencies which are inherited from this library\nimplementation(project(":leaky"))\n}\n'})})}),(0,s.jsx)(o.A,{value:"Groovy",children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-groovy",metastring:'title="build.gradle"',children:'// don\'t switch anything to an api config\n//noinspection must-be-api\ndependencies {\n\n// don\'t comment out or delete this dependency\n//noinspection unused-dependency\nimplementation(project(":unused-lib"))\n\n// don\'t add dependencies which are inherited from this library\n//noinspection inherited-dependency\nimplementation(project(":leaky"))\n}\n'})})})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/9ae4b911.287c9823.js b/assets/js/9ae4b911.287c9823.js new file mode 100644 index 0000000000..064578d8e9 --- /dev/null +++ b/assets/js/9ae4b911.287c9823.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[763],{65404:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>l});var t=o(36672);const r={},s=t.createContext(r);function i(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(s.Provider,{value:n},e.children)}},97181:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.12.0/rules/compiler/could_use_anvil_factory.md","sourceDirName":"rules/compiler","slug":"/rules/compiler/could_use_anvil_factory","permalink":"/ModuleCheck/docs/0.12.0/rules/compiler/could_use_anvil_factory","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/compiler/could_use_anvil_factory.md","tags":[],"version":"0.12.0","frontMatter":{"id":"could_use_anvil_factory","title":"Could Use Anvil Factory","sidebar_label":"Could Use Anvil Factory"},"sidebar":"Docs","previous":{"title":"Depths","permalink":"/ModuleCheck/docs/0.12.0/rules/depths"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_processor"}}');var r=o(23420),s=o(65404);const i={id:"could_use_anvil_factory",title:"Could Use Anvil Factory",sidebar_label:"Could Use Anvil Factory"},l=void 0,c={},a=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or\nSubcomponents, and it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/assets/js/9e2bab8c.72214067.js b/assets/js/9e2bab8c.72214067.js new file mode 100644 index 0000000000..b1f34b6fc5 --- /dev/null +++ b/assets/js/9e2bab8c.72214067.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9063],{18324:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.12.5","label":"0.12.5","banner":null,"badge":true,"noIndex":false,"className":"docs-version-0.12.5","isLast":true,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/configuration","docId":"configuration","unlisted":false},{"type":"link","label":"Suppressing Findings","href":"/ModuleCheck/docs/suppressing-findings","docId":"suppressing-findings","unlisted":false},{"type":"link","label":"CI Workflow","href":"/ModuleCheck/docs/ci-workflow","docId":"ci-workflow","unlisted":false},{"type":"category","label":"Rules","collapsed":false,"items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/rules/unused_dependency","docId":"rules/unused_dependency","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"type":"link","label":"Redundant Dependency","href":"/ModuleCheck/docs/rules/redundant_dependency","docId":"rules/redundant_dependency","unlisted":false},{"type":"link","label":"Overshot Dependency","href":"/ModuleCheck/docs/rules/overshot_dependency","docId":"rules/overshot_dependency","unlisted":false},{"type":"link","label":"Project Depth","href":"/ModuleCheck/docs/rules/project_depth","docId":"rules/project_depth","unlisted":false},{"type":"category","label":"Compiler","collapsed":false,"items":[{"type":"link","label":"Could Use Anvil Factory Generation","href":"/ModuleCheck/docs/rules/use_anvil_factory_generation","docId":"rules/compiler/use_anvil_factory_generation","unlisted":false},{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/rules/unused_kapt_processor","docId":"rules/compiler/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/rules/unused_kapt_plugin","docId":"rules/compiler/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/rules/custom_kapt_matchers","docId":"rules/compiler/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"type":"category","label":"Sorting","collapsed":false,"items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/rules/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/rules/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"type":"category","label":"Android","collapsed":false,"items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/rules/disable_android_resources","docId":"rules/android/disable_android_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/rules/disable_view_binding","docId":"rules/android/disable_view_binding","unlisted":false},{"type":"link","label":"Unused Kotlin Android Extensions","href":"/ModuleCheck/docs/rules/unused_kotlin_android_extensions","docId":"rules/android/unused_kotlin_android_extensions","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"ci-workflow":{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","sidebar":"Docs"},"configuration":{"id":"configuration","title":"configuration","description":"<Tabs groupId=\\"language\\"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"Dependencies","sidebar":"Docs"},"rules/android/disable_android_resources":{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_view_binding":{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/android/unused_kotlin_android_extensions":{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","sidebar":"Docs"},"rules/compiler/custom_kapt_matchers":{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/compiler/unused_kapt_plugin":{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","sidebar":"Docs"},"rules/compiler/unused_kapt_processor":{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/compiler/use_anvil_factory_generation":{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/overshot_dependency":{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","sidebar":"Docs"},"rules/project_depth":{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","sidebar":"Docs"},"rules/redundant_dependency":{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused_dependency":{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"},"suppressing-findings":{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/a06cff9c.68c9ad11.js b/assets/js/a06cff9c.68c9ad11.js new file mode 100644 index 0000000000..e07a224b7e --- /dev/null +++ b/assets/js/a06cff9c.68c9ad11.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8705],{24941:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>s,default:()=>a,frontMatter:()=>i,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.11.2/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/0.11.2/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/inherited_dependency.md","tags":[],"version":"0.11.2","frontMatter":{"id":"inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.11.2/rules/must_be_api"},"next":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.11.2/rules/compiler/could_use_anvil_factory"}}');var o=d(23420),c=d(65404);const i={id:"inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},s=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,c.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleB"}),", and ",(0,o.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,o.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,o.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,o.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,o.jsx)(n.code,{children:":moduleA"})," -> ",(0,o.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>i,x:()=>s});var t=d(36672);const o={},c=t.createContext(o);function i(e){const n=t.useContext(c);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a180cea5.12b75376.js b/assets/js/a180cea5.12b75376.js new file mode 100644 index 0000000000..1521c01fea --- /dev/null +++ b/assets/js/a180cea5.12b75376.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5251],{34669:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>r});const o=JSON.parse('{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","source":"@site/docs/ci_workflow.md","sourceDirName":".","slug":"/ci-workflow","permalink":"/ModuleCheck/docs/next/ci-workflow","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/ci_workflow.md","tags":[],"version":"current","frontMatter":{"id":"ci-workflow","sidebar_label":"CI Workflow","title":"CI Workflow"},"sidebar":"Docs","previous":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/next/suppressing-findings"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/next/rules/unused_dependency"}}');var s=t(23420),a=t(65404);const i={id:"ci-workflow",sidebar_label:"CI Workflow",title:"CI Workflow"},l=void 0,c={},r=[{value:"Using CI over git hooks",id:"using-ci-over-git-hooks",level:3},{value:"Example Flow chart",id:"example-flow-chart",level:3},{value:"Example GitHub Action",id:"example-github-action",level:3}];function h(e){const n={a:"a",code:"code",h3:"h3",mermaid:"mermaid",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and\nautomatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to\napply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run.\nThis is similar to a git pre-commit hook, except the work is delegated to a build server."}),"\n",(0,s.jsx)(n.h3,{id:"using-ci-over-git-hooks",children:"Using CI over git hooks"}),"\n",(0,s.jsx)(n.p,{children:"The traditional method for applying changes automatically is with a git hook, such as pre-commit or\npre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor\ndeveloper experience. With a CI task, the execution is done automatically and asynchronously, while\nthe developer is already moving on to something else."}),"\n",(0,s.jsx)(n.p,{children:"A git hook also technically doesn't guarantee that a task is executed before code is checked in to a\nmain branch, since there's no guarantee that a hook is enabled. With CI, the task will output a\nstatus check. If a branch protection rule is enabled, that status check can be required. This will\nthen guarantee that the task has run (successfully) before any code is checked in to the protected\nbranch."}),"\n",(0,s.jsx)(n.h3,{id:"example-flow-chart",children:"Example Flow chart"}),"\n",(0,s.jsxs)(n.p,{children:['This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The\ncancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an\n"optimistic" workflow, in that it assumes that the ',(0,s.jsx)(n.code,{children:"modulecheck"})," task will not generate changes\nwhich would trigger a restart."]}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n Start(CI Start):::good --\x3e mGraph\n Start --\x3e tGraph\n Start --\x3e cGraph\n\n subgraph mGraph [runner 1]\n direction TB\n ModuleCheck(./gradlew moduleCheckAuto):::code --\x3e ChangesModuleCheck\n ChangesModuleCheck{Graph changes?} --- yesM[yes]:::lineLabel --\x3e CommitModuleCheck(Commit changes and push):::stop\n ChangesModuleCheck --- noM[no]:::lineLabel --\x3e EndModuleCheck("#10003;"):::good\n end\n\n subgraph tGraph [runner 2]\n direction TB\n Tests(./gradlew test):::code --\x3e EndTests("#10003;"):::good\n end\n\n subgraph cGraph [runner 3]\n direction TB\n Cancel(Cancel previous CI run):::code\n end\n\n style tGraph fill:#EEE,stroke:#000\n style cGraph fill:#EEE,stroke:#000\n style mGraph fill:#EEE,stroke:#000\n\n classDef good fill:#0B0,stroke:#000\n classDef stop fill:#E33,stroke:#000\n\n classDef code fill:#AAA,stroke:#000\n\n style ChangesModuleCheck fill:#CD1,stroke:#000\n\n classDef lineLabel fill:#FFF,stroke:#FFF'}),"\n",(0,s.jsx)(n.h3,{id:"example-github-action",children:"Example GitHub Action"}),"\n",(0,s.jsxs)(n.p,{children:["Here's an Action which will run ModuleCheck, then commit any changes\nusing ",(0,s.jsx)(n.a,{href:"https://github.com/stefanzweifel/git-auto-commit-action",children:"Stefanzweifel's auto-commit"}),". This\nrequires a personal access token secret, or the commit step will fail."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:"title=.github/workflows.module-check.yml",children:"name: ModuleCheck\n\non:\n pull_request:\n\njobs:\n\n cancel-stale-jobs:\n name: Cancel stale jobs\n runs-on: ubuntu-latest\n\n steps:\n # cancel previous jobs\n - name: Cancel Previous Runs\n uses: styfle/cancel-workflow-action@0.9.0\n env:\n GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'\n\n ModuleCheck:\n name: ModuleCheck\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n # Must use a personal access token in order to commit changes\n token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '11'\n\n # performs tree-shaking on the Gradle dependency graph\n - name: modulecheck\n run: ./gradlew moduleCheckAuto --no-daemon\n\n # If ModuleCheck generated changes, commit and push those changes.\n # If there are no changes, then this is a no-op.\n - name: commit changes\n uses: stefanzweifel/git-auto-commit-action@v4\n with:\n commit_message: Apply ModuleCheck changes\n commit_options: '--no-verify --signoff'\n\n tests:\n name: Unit tests\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n token: ${{ secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n - name: all tests\n run: ./gradlew test --no-daemon\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var o=t(36672);const s={},a=o.createContext(s);function i(e){const n=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a2d99d88.bc6419f1.js b/assets/js/a2d99d88.bc6419f1.js new file mode 100644 index 0000000000..49c19271a2 --- /dev/null +++ b/assets/js/a2d99d88.bc6419f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8628],{58118:(e,n,t)=>{t.d(n,{A:()=>i});t(36672);var r=t(13526);const s={tabItem:"tabItem_qogc"};var a=t(23420);function i({children:e,hidden:n,className:t}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,t),hidden:n,children:e})}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var r=t(36672);const s={},a=r.createContext(s);function i(e){const n=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(a.Provider,{value:n},e.children)}},65780:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(36672),s=t(13526),a=t(10452),i=t(85291),o=t(10914),u=t(41201),l=t(40622),c=t(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);return function(e){const n=(0,l.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,t])}function h({value:e,tabValues:n}){return n.some(n=>n.value===e)}function f({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,u.aZ)(s),(0,r.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})},[s,t])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[i,u]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!h({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:a})),[l,d]=f({queryString:t,groupId:s}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,c.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),g=(()=>{const e=l??m;return h({value:e,tabValues:a})?e:null})();(0,o.A)(()=>{g&&u(g)},[g]);return{selectedValue:i,selectValue:(0,r.useCallback)(e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);u(e),d(e),b(e)},[d,b,a]),tabValues:a}}var b=t(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=t(23420);function y({className:e,block:n,selectedValue:t,selectValue:r,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:u}=(0,a.a_)(),l=e=>{const n=e.currentTarget,s=o.indexOf(n),a=i[s].value;a!==t&&(u(n),r(a))},c=e=>{let n=null;switch(e.key){case"Enter":l(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:r})=>(0,v.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:l,...r,className:(0,s.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:t}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function j(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function w(e){const n=(0,b.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(n))}},85672:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>u,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","source":"@site/versioned_docs/version-0.12.0/suppressing-findings.mdx","sourceDirName":".","slug":"/suppressing-findings","permalink":"/ModuleCheck/docs/0.12.0/suppressing-findings","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/suppressing-findings.mdx","tags":[],"version":"0.12.0","frontMatter":{"id":"suppressing-findings","title":"Suppressing Findings","sidebar_label":"Suppressing Findings"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.0/configuration"},"next":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.0/ci-workflow"}}');var s=t(23420),a=t(65404),i=t(65780),o=t(58118);const u={id:"suppressing-findings",title:"Suppressing Findings",sidebar_label:"Suppressing Findings"},l=void 0,c={},d=[];function p(e){const n={code:"code",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool."}),"\n",(0,s.jsxs)(n.p,{children:["The name of the check to disable can be found in the ",(0,s.jsx)(n.code,{children:"name"})," column of console output:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"> Task :moduleCheck\nModuleCheck found 3 issues in 6.157 seconds\n\n:app\n dependency name build file\n :fat-and-leaky inheritedDependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :fat-and-leaky mustBeApi /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :unused-lib unusedDependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):\n\n"})}),"\n",(0,s.jsxs)(i.A,{children:[(0,s.jsx)(o.A,{value:"Kotlin",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",metastring:'title="build.gradle.kts"',children:'@Suppress("mustBeApi") // don\'t switch anything to an api config\ndependencies {\n\n @Suppress("unusedDependency") // don\'t comment out or delete this dependency\n implementation(project(":unused-lib"))\n\n @Suppress("inheritedDependency") // don\'t add dependencies which are inherited from this fat jar\n implementation(project(":fat-and-leaky"))\n}\n'})})}),(0,s.jsx)(o.A,{value:"Groovy",children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-groovy",metastring:'title="build.gradle"',children:'// don\'t switch anything to an api config\n//noinspection mustBeApi\ndependencies {\n\n // don\'t comment out or delete this dependency\n //noinspection unusedDependency\n implementation(project(":unused-lib"))\n\n // don\'t add dependencies which are inherited from this fat jar\n //noinspection inheritedDependency\n implementation(project(":fat-and-leaky"))\n}\n'})})})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/a35aa088.66e7e35f.js b/assets/js/a35aa088.66e7e35f.js new file mode 100644 index 0000000000..42d6479f89 --- /dev/null +++ b/assets/js/a35aa088.66e7e35f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[750],{4620:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","source":"@site/versioned_docs/version-0.12.0/ci_workflow.md","sourceDirName":".","slug":"/ci-workflow","permalink":"/ModuleCheck/docs/0.12.0/ci-workflow","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/ci_workflow.md","tags":[],"version":"0.12.0","frontMatter":{"id":"ci-workflow","sidebar_label":"CI Workflow","title":"CI Workflow"},"sidebar":"Docs","previous":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.0/suppressing-findings"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/unused"}}');var s=t(23420),a=t(65404);const i={id:"ci-workflow",sidebar_label:"CI Workflow",title:"CI Workflow"},l=void 0,r={},c=[{value:"Using CI over git hooks",id:"using-ci-over-git-hooks",level:3},{value:"Example Flow chart",id:"example-flow-chart",level:3},{value:"Example GitHub Action",id:"example-github-action",level:3}];function h(e){const n={a:"a",code:"code",h3:"h3",mermaid:"mermaid",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and\nautomatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to\napply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run.\nThis is similar to a git pre-commit hook, except the work is delegated to a build server."}),"\n",(0,s.jsx)(n.h3,{id:"using-ci-over-git-hooks",children:"Using CI over git hooks"}),"\n",(0,s.jsx)(n.p,{children:"The traditional method for applying changes automatically is with a git hook, such as pre-commit or\npre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor\ndeveloper experience. With a CI task, the execution is done automatically and asynchronously, while\nthe developer is already moving on to something else."}),"\n",(0,s.jsx)(n.p,{children:"A git hook also technically doesn't guarantee that a task is executed before code is checked in to a\nmain branch, since there's no guarantee that a hook is enabled. With CI, the task will output a\nstatus check. If a branch protection rule is enabled, that status check can be required. This will\nthen guarantee that the task has run (successfully) before any code is checked in to the protected\nbranch."}),"\n",(0,s.jsx)(n.h3,{id:"example-flow-chart",children:"Example Flow chart"}),"\n",(0,s.jsxs)(n.p,{children:['This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The\ncancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an\n"optimistic" workflow, in that it assumes that the ',(0,s.jsx)(n.code,{children:"modulecheck"})," task will not generate changes\nwhich would trigger a restart."]}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n Start(CI Start):::good --\x3e mGraph\n Start --\x3e tGraph\n Start --\x3e cGraph\n\n subgraph mGraph [runner 1]\n direction TB\n ModuleCheck(./gradlew moduleCheckAuto):::code --\x3e ChangesModuleCheck\n ChangesModuleCheck{Graph changes?} --- yesM[yes]:::lineLabel --\x3e CommitModuleCheck(Commit changes and push):::stop\n ChangesModuleCheck --- noM[no]:::lineLabel --\x3e EndModuleCheck("#10003;"):::good\n end\n\n subgraph tGraph [runner 2]\n direction TB\n Tests(./gradlew test):::code --\x3e EndTests("#10003;"):::good\n end\n\n subgraph cGraph [runner 3]\n direction TB\n Cancel(Cancel previous CI run):::code\n end\n\n style tGraph fill:#EEE,stroke:#000\n style cGraph fill:#EEE,stroke:#000\n style mGraph fill:#EEE,stroke:#000\n\n classDef good fill:#0B0,stroke:#000\n classDef stop fill:#E33,stroke:#000\n\n classDef code fill:#AAA,stroke:#000\n\n style ChangesModuleCheck fill:#CD1,stroke:#000\n\n classDef lineLabel fill:#FFF,stroke:#FFF'}),"\n",(0,s.jsx)(n.h3,{id:"example-github-action",children:"Example GitHub Action"}),"\n",(0,s.jsxs)(n.p,{children:["Here's an Action which will run ModuleCheck, then commit any changes\nusing ",(0,s.jsx)(n.a,{href:"https://github.com/stefanzweifel/git-auto-commit-action",children:"Stefanzweifel's auto-commit"}),". This\nrequires a personal access token secret, or the commit step will fail."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:"title=.github/workflows.module-check.yml",children:"name: ModuleCheck\n\non:\n pull_request:\n\njobs:\n\n cancel-stale-jobs:\n name: Cancel stale jobs\n runs-on: ubuntu-latest\n\n steps:\n # cancel previous jobs\n - name: Cancel Previous Runs\n uses: styfle/cancel-workflow-action@0.9.0\n env:\n GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'\n\n ModuleCheck:\n name: ModuleCheck\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n # Must use a personal access token in order to commit changes\n token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '11'\n\n # performs tree-shaking on the Gradle dependency graph\n - name: modulecheck\n run: ./gradlew moduleCheckAuto --no-daemon\n\n # If ModuleCheck generated changes, commit and push those changes.\n # If there are no changes, then this is a no-op.\n - name: commit changes\n uses: stefanzweifel/git-auto-commit-action@v4\n with:\n commit_message: Apply ModuleCheck changes\n commit_options: '--no-verify --signoff'\n\n tests:\n name: Unit tests\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n token: ${{ secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n - name: all tests\n run: ./gradlew test --no-daemon\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var o=t(36672);const s={},a=o.createContext(s);function i(e){const n=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a4b1a9b8.e83ba81c.js b/assets/js/a4b1a9b8.e83ba81c.js new file mode 100644 index 0000000000..288e6f3053 --- /dev/null +++ b/assets/js/a4b1a9b8.e83ba81c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8783],{65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(36672);const o={},d=s.createContext(o);function r(e){const n=s.useContext(d);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(d.Provider,{value:n},e.children)}},67556:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","source":"@site/versioned_docs/version-0.12.1/rules/overshot_dependency.md","sourceDirName":"rules","slug":"/rules/overshot_dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/overshot_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/overshot_dependency.md","tags":[],"version":"0.12.1","frontMatter":{"id":"overshot_dependency","slug":"/rules/overshot_dependency","title":"Overshot Dependency","sidebar_label":"Overshot Dependency"},"sidebar":"Docs","previous":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/redundant_dependency"},"next":{"title":"Project Depth","permalink":"/ModuleCheck/docs/0.12.1/rules/project_depth"}}');var o=t(23420),d=t(65404);const r={id:"overshot_dependency",slug:"/rules/overshot_dependency",title:"Overshot Dependency",sidebar_label:"Overshot Dependency"},c=void 0,i={},l=[];function u(e){const n={code:"code",em:"em",p:"p",pre:"pre",strong:"strong",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"Finds project dependencies which aren't used by the declaring configuration, but are used by a\ndependent, downstream configuration."}),"\n",(0,o.jsxs)(n.p,{children:["For instance, assume that ",(0,o.jsx)(n.code,{children:":moduleB"})," declares an ",(0,o.jsx)(n.code,{children:"implementation"})," dependency upon ",(0,o.jsx)(n.code,{children:":moduleA"}),"."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n implementation(project(":moduleA"))\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["If ",(0,o.jsx)(n.code,{children:":moduleB"})," doesn't actually use ",(0,o.jsx)(n.code,{children:":moduleA"})," in its ",(0,o.jsx)(n.code,{children:"main"})," source, but it ",(0,o.jsx)(n.em,{children:"does"})," use it in ",(0,o.jsx)(n.code,{children:"test"}),"\nsource, it's an ",(0,o.jsx)(n.strong,{children:"overshot dependency"}),". The declaration should be changed to\nuse ",(0,o.jsx)(n.code,{children:"testImplementation"}),":"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n testImplementation(project(":moduleA"))\n}\n'})})]})}function a(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/a4e2bd41.6d1296f7.js b/assets/js/a4e2bd41.6d1296f7.js new file mode 100644 index 0000000000..d3acbe3c6e --- /dev/null +++ b/assets/js/a4e2bd41.6d1296f7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[406],{32088:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"","source":"@site/versioned_docs/version-0.10.0/rules/kapt/unused_kapt_plugin.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/kapt/unused_kapt_plugin.md","tags":[],"version":"0.10.0","frontMatter":{"id":"unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Rules","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.10.0/rules/kapt/custom_kapt_matchers"}}');var u=n(23420),o=n(65404);const r={id:"unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},a=void 0,i={},l=[];function p(e){return(0,u.jsx)(u.Fragment,{})}function c(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,u.jsx)(t,{...e,children:(0,u.jsx)(p,{...e})}):p()}},65404:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>a});var s=n(36672);const u={},o=s.createContext(u);function r(e){const t=s.useContext(o);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(u):e.components||u:r(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a559ab1c.eb18048e.js b/assets/js/a559ab1c.eb18048e.js new file mode 100644 index 0000000000..4a50ac693d --- /dev/null +++ b/assets/js/a559ab1c.eb18048e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[286],{65404:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>a});var o=s(36672);const t={},i=o.createContext(t);function r(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(i.Provider,{value:n},e.children)}},86729:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.11.1/rules/kapt/unused_kapt_processor.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/kapt/unused_kapt_processor.md","tags":[],"version":"0.11.1","frontMatter":{"id":"unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.11.1/rules/compiler/could_use_anvil_factory"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_plugin"}}');var t=s(23420),i=s(65404);const r={id:"unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,d={},c=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/assets/js/a5f1db42.71bce1f9.js b/assets/js/a5f1db42.71bce1f9.js new file mode 100644 index 0000000000..c90b2ceda6 --- /dev/null +++ b/assets/js/a5f1db42.71bce1f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7454],{58118:(e,n,t)=>{t.d(n,{A:()=>i});t(36672);var r=t(13526);const s={tabItem:"tabItem_qogc"};var a=t(23420);function i({children:e,hidden:n,className:t}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,t),hidden:n,children:e})}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var r=t(36672);const s={},a=r.createContext(s);function i(e){const n=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(a.Provider,{value:n},e.children)}},65780:(e,n,t)=>{t.d(n,{A:()=>x});var r=t(36672),s=t(13526),a=t(10452),i=t(85291),o=t(10914),l=t(41201),u=t(40622),c=t(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,t])}function h({value:e,tabValues:n}){return n.some(n=>n.value===e)}function f({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,l.aZ)(s),(0,r.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})},[s,t])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[i,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!h({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:a})),[u,d]=f({queryString:t,groupId:s}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,c.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),g=(()=>{const e=u??m;return h({value:e,tabValues:a})?e:null})();(0,o.A)(()=>{g&&l(g)},[g]);return{selectedValue:i,selectValue:(0,r.useCallback)(e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,a]),tabValues:a}}var b=t(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=t(23420);function y({className:e,block:n,selectedValue:t,selectValue:r,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),u=e=>{const n=e.currentTarget,s=o.indexOf(n),a=i[s].value;a!==t&&(l(n),r(a))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:r})=>(0,v.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...r,className:(0,s.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:t}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function w(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function x(e){const n=(0,b.A)();return(0,v.jsx)(w,{...e,children:d(e.children)},String(n))}},66592:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","source":"@site/versioned_docs/version-0.12.4/suppressing-findings.mdx","sourceDirName":".","slug":"/suppressing-findings","permalink":"/ModuleCheck/docs/0.12.4/suppressing-findings","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/suppressing-findings.mdx","tags":[],"version":"0.12.4","frontMatter":{"id":"suppressing-findings","title":"Suppressing Findings","sidebar_label":"Suppressing Findings"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.4/configuration"},"next":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.4/ci-workflow"}}');var s=t(23420),a=t(65404),i=t(65780),o=t(58118);const l={id:"suppressing-findings",title:"Suppressing Findings",sidebar_label:"Suppressing Findings"},u=void 0,c={},d=[];function p(e){const n={code:"code",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool."}),"\n",(0,s.jsxs)(n.p,{children:["The name of the check to disable can be found in the ",(0,s.jsx)(n.code,{children:"name"})," column of console output:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"> Task :moduleCheck\nModuleCheck found 3 issues in 6.157 seconds\n\n:app\n dependency name build file\n :fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):\n\n"})}),"\n",(0,s.jsxs)(i.A,{children:[(0,s.jsx)(o.A,{value:"Kotlin",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",metastring:'title="build.gradle.kts"',children:'@Suppress("must-be-api") // don\'t switch anything to an api config\ndependencies {\n\n @Suppress("unused-dependency") // don\'t comment out or delete this dependency\n implementation(project(":unused-lib"))\n\n @Suppress("inherited-dependency") // don\'t add dependencies which are inherited from this library\n implementation(project(":leaky"))\n}\n'})})}),(0,s.jsx)(o.A,{value:"Groovy",children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-groovy",metastring:'title="build.gradle"',children:'// don\'t switch anything to an api config\n//noinspection must-be-api\ndependencies {\n\n // don\'t comment out or delete this dependency\n //noinspection unused-dependency\n implementation(project(":unused-lib"))\n\n // don\'t add dependencies which are inherited from this library\n //noinspection inherited-dependency\n implementation(project(":leaky"))\n}\n'})})})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/a5fc5a0e.d705654f.js b/assets/js/a5fc5a0e.d705654f.js new file mode 100644 index 0000000000..ef50510e1c --- /dev/null +++ b/assets/js/a5fc5a0e.d705654f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4663],{65404:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(36672);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}},82454:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.11.3/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_dependencies","permalink":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/sorting/sort_dependencies.md","tags":[],"version":"0.11.3","frontMatter":{"id":"sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.11.3/rules/kapt/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_plugins"}}');var o=n(23420),r=n(65404);const i={id:"sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l()}}}]); \ No newline at end of file diff --git a/assets/js/a7456010.f7ae1996.js b/assets/js/a7456010.f7ae1996.js new file mode 100644 index 0000000000..b14c775440 --- /dev/null +++ b/assets/js/a7456010.f7ae1996.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1235],{88552:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.2484d96d.js b/assets/js/a7bd4aaa.2484d96d.js new file mode 100644 index 0000000000..8fde8965a9 --- /dev/null +++ b/assets/js/a7bd4aaa.2484d96d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7098],{31029:(e,n,s)=>{s.r(n),s.d(n,{default:()=>d});s(36672);var r=s(10352),o=s(11774),c=s(92688),t=s(26271),i=s(77398),u=s(23420);function l(e){const{version:n}=e;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(i.A,{version:n.version,tag:(0,o.k)(n.pluginId,n.version)}),(0,u.jsx)(r.be,{children:n.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function a(e){const{version:n,route:s}=e;return(0,u.jsx)(r.e3,{className:n.className,children:(0,u.jsx)(c.n,{version:n,children:(0,t.v)(s.routes)})})}function d(e){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(l,{...e}),(0,u.jsx)(a,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/a8ed45e8.71f7c343.js b/assets/js/a8ed45e8.71f7c343.js new file mode 100644 index 0000000000..9a5ee5e514 --- /dev/null +++ b/assets/js/a8ed45e8.71f7c343.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3149],{17547:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>i,contentTitle:()=>r,default:()=>a,frontMatter:()=>o,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.11.1/rules/unused.md","sourceDirName":"rules","slug":"/rules/unused","permalink":"/ModuleCheck/docs/0.11.1/rules/unused","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/unused.md","tags":[],"version":"0.11.1","frontMatter":{"id":"unused","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.11.1/configuration"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.11.1/rules/must_be_api"}}');var d=s(23420),u=s(65404);const o={id:"unused",title:"Unused Dependency",sidebar_label:"Unused Dependency"},r=void 0,i={},c=[];function l(e){const n={p:"p",...(0,u.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,d.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>r});var t=s(36672);const d={},u=t.createContext(d);function o(e){const n=t.useContext(u);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:o(e.components),t.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.43b485b1.js b/assets/js/a94703ab.43b485b1.js new file mode 100644 index 0000000000..1c8abfce26 --- /dev/null +++ b/assets/js/a94703ab.43b485b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9048],{19722:(e,t,n)=>{n.d(t,{A:()=>r});n(36672);var a=n(13526),o=n(50120),i=n(45544),s=n(23420);function r({className:e}){return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",e),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},39104:(e,t,n)=>{n.r(t),n.d(t,{default:()=>pe});var a=n(36672),o=n(13526),i=n(10352),s=n(40987),r=n(36149),c=n(80480),l=n(50120),d=n(10452),u=n(83770);const m={backToTopButton:"backToTopButton_N7e4",backToTopButtonShow:"backToTopButtonShow_xOSK"};var h=n(23420);function b(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:i,cancelScroll:s}=(0,d.gk)();return(0,d.Mq)(({scrollY:t},a)=>{const i=a?.scrollY;i&&(o.current?o.current=!1:t>=i?(s(),n(!1)):t<e?n(!1):t+window.innerHeight<document.documentElement.scrollHeight&&n(!0))}),(0,u.$)(e=>{e.location.hash&&(o.current=!0,n(!1))}),{shown:t,scrollToTop:()=>i(0)}}({threshold:300});return(0,h.jsx)("button",{"aria-label":(0,l.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(63345),x=n(85291),f=n(97297),j=n(74834),g=n(90592);function v(e){return(0,h.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,h.jsxs)("g",{fill:"#7a7a7a",children:[(0,h.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,h.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const _="collapseSidebarButton_tTaE",A="collapseSidebarButtonIcon_aVw4";function C({onClick:e}){return(0,h.jsx)("button",{type:"button",title:(0,l.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,l.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.A)("button button--secondary button--outline",_),onClick:e,children:(0,h.jsx)(v,{className:A})})}var k=n(69197),S=n(36496);const T=Symbol("EmptyContext"),N=a.createContext(T);function I({children:e}){const[t,n]=(0,a.useState)(null),o=(0,a.useMemo)(()=>({expandedItem:t,setExpandedItem:n}),[t]);return(0,h.jsx)(N.Provider,{value:o,children:e})}var y=n(42018),w=n(29837),B=n(28827),L=n(74682);function E({collapsed:e,categoryLabel:t,onClick:n}){return(0,h.jsx)("button",{"aria-label":e?(0,l.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:t}):(0,l.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:t}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:n})}function M({item:e,onItemClick:t,activePath:n,level:i,index:c,...l}){const{items:d,label:u,collapsible:m,className:b,href:p}=e,{docs:{sidebar:{autoCollapseCategories:x}}}=(0,j.p)(),f=function(e){const t=(0,L.A)();return(0,a.useMemo)(()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,r.Nr)(e):void 0,[e,t])}(e),g=(0,r.w8)(e,n),v=(0,w.ys)(p,n),{collapsed:_,setCollapsed:A}=(0,y.u)({initialState:()=>!!m&&(!g&&e.collapsed)}),{expandedItem:C,setExpandedItem:k}=function(){const e=(0,a.useContext)(N);if(e===T)throw new S.dV("DocSidebarItemsExpandedStateProvider");return e}(),I=(e=!_)=>{k(e?null:c),A(e)};return function({isActive:e,collapsed:t,updateCollapsed:n}){const o=(0,S.ZC)(e);(0,a.useEffect)(()=>{e&&!o&&t&&n(!1)},[e,o,t,n])}({isActive:g,collapsed:_,updateCollapsed:I}),(0,a.useEffect)(()=>{m&&null!=C&&C!==c&&x&&A(!0)},[m,C,c,A,x]),(0,h.jsxs)("li",{className:(0,o.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(i),"menu__list-item",{"menu__list-item--collapsed":_},b),children:[(0,h.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":v}),children:[(0,h.jsx)(B.A,{className:(0,o.A)("menu__link",{"menu__link--sublist":m,"menu__link--sublist-caret":!p&&m,"menu__link--active":g}),onClick:m?n=>{t?.(e),p?v?(n.preventDefault(),I()):I(!1):(n.preventDefault(),I())}:()=>{t?.(e)},"aria-current":v?"page":void 0,role:m&&!p?"button":void 0,"aria-expanded":m&&!p?!_:void 0,href:m?f??"#":f,...l,children:u}),p&&m&&(0,h.jsx)(E,{collapsed:_,categoryLabel:u,onClick:e=>{e.preventDefault(),I()}})]}),(0,h.jsx)(y.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:_,children:(0,h.jsx)(V,{items:d,tabIndex:_?-1:0,onItemClick:t,activePath:n,level:i+1})})]})}var H=n(15449),G=n(2266);const R="menuExternalLink_bkjJ";function D({item:e,onItemClick:t,activePath:n,level:a,index:i,...c}){const{href:l,label:d,className:u,autoAddBaseUrl:m}=e,b=(0,r.w8)(e,n),p=(0,H.A)(l);return(0,h.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(a),"menu__list-item",u),children:(0,h.jsxs)(B.A,{className:(0,o.A)("menu__link",!p&&R,{"menu__link--active":b}),autoAddBaseUrl:m,"aria-current":b?"page":void 0,to:l,...p&&{onClick:t?()=>t(e):void 0},...c,children:[d,!p&&(0,h.jsx)(G.A,{})]})},d)}const P="menuHtmlItem_SDir";function W({item:e,level:t,index:n}){const{value:a,defaultStyle:i,className:r}=e;return(0,h.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(t),i&&[P,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:a}},n)}function F({item:e,...t}){switch(e.type){case"category":return(0,h.jsx)(M,{item:e,...t});case"html":return(0,h.jsx)(W,{item:e,...t});default:return(0,h.jsx)(D,{item:e,...t})}}function U({items:e,...t}){const n=(0,r.Y)(e,t.activePath);return(0,h.jsx)(I,{children:n.map((e,n)=>(0,h.jsx)(F,{item:e,index:n,...t},n))})}const V=(0,a.memo)(U),O="menu_Ug5w",Y="menuWithAnnouncementBar_U9It";function z({path:e,sidebar:t,className:n}){const i=function(){const{isActive:e}=(0,k.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)(({scrollY:t})=>{e&&n(0===t)},[e]),e&&t}();return(0,h.jsx)("nav",{"aria-label":(0,l.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.A)("menu thin-scrollbar",O,i&&Y,n),children:(0,h.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,h.jsx)(V,{items:t,activePath:e,level:1})})})}const q="sidebar_kIjR",J="sidebarWithHideableNavbar_BO_l",K="sidebarHidden_XfJk",X="sidebarLogo_ag23";function Q({path:e,sidebar:t,onCollapse:n,isHidden:a}){const{navbar:{hideOnScroll:i},docs:{sidebar:{hideable:s}}}=(0,j.p)();return(0,h.jsxs)("div",{className:(0,o.A)(q,i&&J,a&&K),children:[i&&(0,h.jsx)(g.A,{tabIndex:-1,className:X}),(0,h.jsx)(z,{path:e,sidebar:t}),s&&(0,h.jsx)(C,{onClick:n})]})}const Z=a.memo(Q);var $=n(82916),ee=n(57377);const te=({sidebar:e,path:t})=>{const n=(0,ee.M)();return(0,h.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,h.jsx)(V,{items:e,activePath:t,onItemClick:e=>{"category"===e.type&&e.href&&n.toggle(),"link"===e.type&&n.toggle()},level:1})})};function ne(e){return(0,h.jsx)($.GX,{component:te,props:e})}const ae=a.memo(ne);function oe(e){const t=(0,f.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,h.jsxs)(h.Fragment,{children:[n&&(0,h.jsx)(Z,{...e}),a&&(0,h.jsx)(ae,{...e})]})}const ie={expandButton:"expandButton_Chnj",expandButtonIcon:"expandButtonIcon_ukA1"};function se({toggleSidebar:e}){return(0,h.jsx)("div",{className:ie.expandButton,title:(0,l.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,l.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:e,onClick:e,children:(0,h.jsx)(v,{className:ie.expandButtonIcon})})}const re={docSidebarContainer:"docSidebarContainer_LiYE",docSidebarContainerHidden:"docSidebarContainerHidden_FBNp",sidebarViewport:"sidebarViewport_yu1D"};function ce({children:e}){const t=(0,c.t)();return(0,h.jsx)(a.Fragment,{children:e},t?.name??"noSidebar")}function le({sidebar:e,hiddenSidebarContainer:t,setHiddenSidebarContainer:n}){const{pathname:i}=(0,x.zy)(),[r,c]=(0,a.useState)(!1),l=(0,a.useCallback)(()=>{r&&c(!1),!r&&(0,p.O)()&&c(!0),n(e=>!e)},[n,r]);return(0,h.jsx)("aside",{className:(0,o.A)(s.G.docs.docSidebarContainer,re.docSidebarContainer,t&&re.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(re.docSidebarContainer)&&t&&c(!0)},children:(0,h.jsx)(ce,{children:(0,h.jsxs)("div",{className:(0,o.A)(re.sidebarViewport,r&&re.sidebarViewportHidden),children:[(0,h.jsx)(oe,{sidebar:e,path:i,onCollapse:l,isHidden:r}),r&&(0,h.jsx)(se,{toggleSidebar:l})]})})})}const de={docMainContainer:"docMainContainer_hwfy",docMainContainerEnhanced:"docMainContainerEnhanced_Aqm8",docItemWrapperEnhanced:"docItemWrapperEnhanced_MOcI"};function ue({hiddenSidebarContainer:e,children:t}){const n=(0,c.t)();return(0,h.jsx)("main",{className:(0,o.A)(de.docMainContainer,(e||!n)&&de.docMainContainerEnhanced),children:(0,h.jsx)("div",{className:(0,o.A)("container padding-top--md padding-bottom--lg",de.docItemWrapper,e&&de.docItemWrapperEnhanced),children:t})})}const me={docRoot:"docRoot_Y0MQ",docsWrapper:"docsWrapper_O5Uu"};function he({children:e}){const t=(0,c.t)(),[n,o]=(0,a.useState)(!1);return(0,h.jsxs)("div",{className:me.docsWrapper,children:[(0,h.jsx)(b,{}),(0,h.jsxs)("div",{className:me.docRoot,children:[t&&(0,h.jsx)(le,{sidebar:t.items,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}),(0,h.jsx)(ue,{hiddenSidebarContainer:n,children:e})]})]})}var be=n(19722);function pe(e){const t=(0,r.B5)(e);if(!t)return(0,h.jsx)(be.A,{});const{docElement:n,sidebarName:a,sidebarItems:l}=t;return(0,h.jsx)(i.e3,{className:(0,o.A)(s.G.page.docsDocPage),children:(0,h.jsx)(c.V,{name:a,items:l,children:(0,h.jsx)(he,{children:n})})})}}}]); \ No newline at end of file diff --git a/assets/js/aad83134.e45bf932.js b/assets/js/aad83134.e45bf932.js new file mode 100644 index 0000000000..af08495ab0 --- /dev/null +++ b/assets/js/aad83134.e45bf932.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6644],{65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var o=t(36672);const s={},a=o.createContext(s);function i(e){const n=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:n},e.children)}},91584:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","source":"@site/versioned_docs/version-0.12.3/ci_workflow.md","sourceDirName":".","slug":"/ci-workflow","permalink":"/ModuleCheck/docs/0.12.3/ci-workflow","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/ci_workflow.md","tags":[],"version":"0.12.3","frontMatter":{"id":"ci-workflow","sidebar_label":"CI Workflow","title":"CI Workflow"},"sidebar":"Docs","previous":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.3/suppressing-findings"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_dependency"}}');var s=t(23420),a=t(65404);const i={id:"ci-workflow",sidebar_label:"CI Workflow",title:"CI Workflow"},l=void 0,r={},c=[{value:"Using CI over git hooks",id:"using-ci-over-git-hooks",level:3},{value:"Example Flow chart",id:"example-flow-chart",level:3},{value:"Example GitHub Action",id:"example-github-action",level:3}];function h(e){const n={a:"a",code:"code",h3:"h3",mermaid:"mermaid",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and\nautomatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to\napply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run.\nThis is similar to a git pre-commit hook, except the work is delegated to a build server."}),"\n",(0,s.jsx)(n.h3,{id:"using-ci-over-git-hooks",children:"Using CI over git hooks"}),"\n",(0,s.jsx)(n.p,{children:"The traditional method for applying changes automatically is with a git hook, such as pre-commit or\npre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor\ndeveloper experience. With a CI task, the execution is done automatically and asynchronously, while\nthe developer is already moving on to something else."}),"\n",(0,s.jsx)(n.p,{children:"A git hook also technically doesn't guarantee that a task is executed before code is checked in to a\nmain branch, since there's no guarantee that a hook is enabled. With CI, the task will output a\nstatus check. If a branch protection rule is enabled, that status check can be required. This will\nthen guarantee that the task has run (successfully) before any code is checked in to the protected\nbranch."}),"\n",(0,s.jsx)(n.h3,{id:"example-flow-chart",children:"Example Flow chart"}),"\n",(0,s.jsxs)(n.p,{children:['This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The\ncancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an\n"optimistic" workflow, in that it assumes that the ',(0,s.jsx)(n.code,{children:"modulecheck"})," task will not generate changes\nwhich would trigger a restart."]}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n Start(CI Start):::good --\x3e mGraph\n Start --\x3e tGraph\n Start --\x3e cGraph\n\n subgraph mGraph [runner 1]\n direction TB\n ModuleCheck(./gradlew moduleCheckAuto):::code --\x3e ChangesModuleCheck\n ChangesModuleCheck{Graph changes?} --- yesM[yes]:::lineLabel --\x3e CommitModuleCheck(Commit changes and push):::stop\n ChangesModuleCheck --- noM[no]:::lineLabel --\x3e EndModuleCheck("#10003;"):::good\n end\n\n subgraph tGraph [runner 2]\n direction TB\n Tests(./gradlew test):::code --\x3e EndTests("#10003;"):::good\n end\n\n subgraph cGraph [runner 3]\n direction TB\n Cancel(Cancel previous CI run):::code\n end\n\n style tGraph fill:#EEE,stroke:#000\n style cGraph fill:#EEE,stroke:#000\n style mGraph fill:#EEE,stroke:#000\n\n classDef good fill:#0B0,stroke:#000\n classDef stop fill:#E33,stroke:#000\n\n classDef code fill:#AAA,stroke:#000\n\n style ChangesModuleCheck fill:#CD1,stroke:#000\n\n classDef lineLabel fill:#FFF,stroke:#FFF'}),"\n",(0,s.jsx)(n.h3,{id:"example-github-action",children:"Example GitHub Action"}),"\n",(0,s.jsxs)(n.p,{children:["Here's an Action which will run ModuleCheck, then commit any changes\nusing ",(0,s.jsx)(n.a,{href:"https://github.com/stefanzweifel/git-auto-commit-action",children:"Stefanzweifel's auto-commit"}),". This\nrequires a personal access token secret, or the commit step will fail."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:"title=.github/workflows.module-check.yml",children:"name: ModuleCheck\n\non:\n pull_request:\n\njobs:\n\n cancel-stale-jobs:\n name: Cancel stale jobs\n runs-on: ubuntu-latest\n\n steps:\n # cancel previous jobs\n - name: Cancel Previous Runs\n uses: styfle/cancel-workflow-action@0.9.0\n env:\n GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'\n\n ModuleCheck:\n name: ModuleCheck\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n # Must use a personal access token in order to commit changes\n token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '11'\n\n # performs tree-shaking on the Gradle dependency graph\n - name: modulecheck\n run: ./gradlew moduleCheckAuto --no-daemon\n\n # If ModuleCheck generated changes, commit and push those changes.\n # If there are no changes, then this is a no-op.\n - name: commit changes\n uses: stefanzweifel/git-auto-commit-action@v4\n with:\n commit_message: Apply ModuleCheck changes\n commit_options: '--no-verify --signoff'\n\n tests:\n name: Unit tests\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n token: ${{ secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n - name: all tests\n run: ./gradlew test --no-daemon\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/aba21aa0.98fa788f.js b/assets/js/aba21aa0.98fa788f.js new file mode 100644 index 0000000000..41e1c0edf5 --- /dev/null +++ b/assets/js/aba21aa0.98fa788f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5742],{27093:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/abdba85e.26e5806f.js b/assets/js/abdba85e.26e5806f.js new file mode 100644 index 0000000000..934a29e068 --- /dev/null +++ b/assets/js/abdba85e.26e5806f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9961],{65404:(e,n,d)=>{d.d(n,{R:()=>i,x:()=>s});var t=d(36672);const o={},c=t.createContext(o);function i(e){const n=t.useContext(c);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(c.Provider,{value:n},e.children)}},82212:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>s,default:()=>a,frontMatter:()=>i,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.11.0/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/0.11.0/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/inherited_dependency.md","tags":[],"version":"0.11.0","frontMatter":{"id":"inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.11.0/rules/must_be_api"},"next":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.11.0/rules/compiler/could_use_anvil_factory"}}');var o=d(23420),c=d(65404);const i={id:"inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},s=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,c.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleB"}),", and ",(0,o.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,o.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,o.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,o.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,o.jsx)(n.code,{children:":moduleA"})," -> ",(0,o.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/ac2458d6.80ddf71a.js b/assets/js/ac2458d6.80ddf71a.js new file mode 100644 index 0000000000..affdd073e2 --- /dev/null +++ b/assets/js/ac2458d6.80ddf71a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[80],{16538:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.11.1/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_plugins","permalink":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/sorting/sort_plugins.md","tags":[],"version":"0.11.1","frontMatter":{"id":"sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.11.1/rules/android/disable_resources"}}');var o=t(23420),r=t(65404);const i={id:"sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(d,{...e})}):d()}},65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const o={},r=n.createContext(o);function i(e){const s=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b00e7a90.a49b6a39.js b/assets/js/b00e7a90.a49b6a39.js new file mode 100644 index 0000000000..c6bd786a14 --- /dev/null +++ b/assets/js/b00e7a90.a49b6a39.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[463],{65404:(e,n,s)=>{s.d(n,{R:()=>u,x:()=>r});var t=s(36672);const d={},o=t.createContext(d);function u(e){const n=t.useContext(o);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:u(e.components),t.createElement(o.Provider,{value:n},e.children)}},74269:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>a,frontMatter:()=>u,metadata:()=>t,toc:()=>i});const t=JSON.parse('{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.11.2/rules/unused.md","sourceDirName":"rules","slug":"/rules/unused","permalink":"/ModuleCheck/docs/0.11.2/rules/unused","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/unused.md","tags":[],"version":"0.11.2","frontMatter":{"id":"unused","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.11.2/ci-workflow"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.11.2/rules/must_be_api"}}');var d=s(23420),o=s(65404);const u={id:"unused",title:"Unused Dependency",sidebar_label:"Unused Dependency"},r=void 0,c={},i=[];function l(e){const n={p:"p",...(0,o.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,d.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/assets/js/b1002bca.3d470549.js b/assets/js/b1002bca.3d470549.js new file mode 100644 index 0000000000..8237f64886 --- /dev/null +++ b/assets/js/b1002bca.3d470549.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9152],{26626:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","source":"@site/versioned_docs/version-0.11.3/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.11.3/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/quickstart.mdx","tags":[],"version":"0.11.3","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.11.3/configuration"}}');var l=r(23420),t=r(65404),s=r(65780),o=r(58118);const i={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},u=void 0,c={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin."})}),"\n",(0,l.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,l.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,l.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:"// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.11.2"\n}\n'})})]}),(0,l.jsxs)(o.A,{value:"Groovy",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:"// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.11.2'\n}\n"})})]})]}),"\n",(0,l.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,l.jsx)(n.p,{children:"all checks"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,l.jsx)(n.p,{children:"kapt checks"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckKapt\n"})}),"\n",(0,l.jsx)(n.p,{children:"sorts"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,l.jsx)(n.p,{children:"unused"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gardlew moduleCheckUnused\n"})}),"\n",(0,l.jsx)(n.p,{children:"redundant"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckRedundant\n"})}),"\n",(0,l.jsx)(n.p,{children:"overshot"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckOvershot\n"})}),"\n",(0,l.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"/ModuleCheck/docs/0.11.3/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,l.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,l.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,l.jsx)(n.p,{children:"--or--"}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,l.jsx)(o.A,{value:"Groovy",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},58118:(e,n,r)=>{r.d(n,{A:()=>s});r(36672);var a=r(13526);const l={tabItem:"tabItem_qogc"};var t=r(23420);function s({children:e,hidden:n,className:r}){return(0,t.jsx)("div",{role:"tabpanel",className:(0,a.A)(l.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>s,x:()=>o});var a=r(36672);const l={},t=a.createContext(l);function s(e){const n=a.useContext(t);return a.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),a.createElement(t.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>w});var a=r(36672),l=r(13526),t=r(10452),s=r(85291),o=r(10914),i=r(41201),u=r(40622),c=r(42925);function d(e){return a.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,a.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:a}})=>({value:e,label:n,attributes:r,default:a}))}(r);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,s.W6)(),l=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,i.aZ)(l),(0,a.useCallback)(e=>{if(!l)return;const n=new URLSearchParams(r.location.search);n.set(l,e),r.replace({...r.location,search:n.toString()})},[l,r])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:l}=e,t=h(e),[s,i]=(0,a.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:t})),[u,d]=g({queryString:r,groupId:l}),[m,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,l]=(0,c.Dv)(n);return[r,(0,a.useCallback)(e=>{n&&l.set(e)},[n,l])]}({groupId:l}),v=(()=>{const e=u??m;return p({value:e,tabValues:t})?e:null})();(0,o.A)(()=>{v&&i(v)},[v]);return{selectedValue:s,selectValue:(0,a.useCallback)(e=>{if(!p({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)},[d,f,t]),tabValues:t}}var f=r(74682);const v={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var b=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:a,tabValues:s}){const o=[],{blockElementScrollPositionUntilNextRender:i}=(0,t.a_)(),u=e=>{const n=e.currentTarget,l=o.indexOf(n),t=s[l].value;t!==r&&(i(n),a(t))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":n},e),children:s.map(({value:e,label:n,attributes:a})=>(0,b.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...a,className:(0,l.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const t=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=t.find(e=>e.props.value===r);return e?(0,a.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",v.tabList),children:[(0,b.jsx)(x,{...n,...e}),(0,b.jsx)(k,{...n,...e})]})}function w(e){const n=(0,f.A)();return(0,b.jsx)(j,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/b1c76d35.8ff8d553.js b/assets/js/b1c76d35.8ff8d553.js new file mode 100644 index 0000000000..44fb8e6276 --- /dev/null +++ b/assets/js/b1c76d35.8ff8d553.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5264],{23049:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.12.2/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sort_plugins","permalink":"/ModuleCheck/docs/0.12.2/rules/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/sorting/sort_plugins.md","tags":[],"version":"0.12.2","frontMatter":{"id":"sort_plugins","slug":"/rules/sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.2/rules/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.2/rules/disable_android_resources"}}');var r=t(23420),o=t(65404);const i={id:"sort_plugins",slug:"/rules/sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(d,{...e})}):d()}},65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const r={},o=n.createContext(r);function i(e){const s=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b20814c1.bdea7f12.js b/assets/js/b20814c1.bdea7f12.js new file mode 100644 index 0000000000..d41a0ad5f4 --- /dev/null +++ b/assets/js/b20814c1.bdea7f12.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[704],{43569:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.11.3","label":"0.11.3","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.11.3","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.11.3/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.11.3/configuration","docId":"configuration","unlisted":false},{"type":"link","label":"Suppressing Findings","href":"/ModuleCheck/docs/0.11.3/suppressing-findings","docId":"suppressing-findings","unlisted":false},{"type":"link","label":"CI Workflow","href":"/ModuleCheck/docs/0.11.3/ci-workflow","docId":"ci-workflow","unlisted":false},{"type":"category","label":"Rules","collapsed":false,"items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.11.3/rules/unused","docId":"rules/unused","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/0.11.3/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/0.11.3/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"type":"category","label":"compiler","collapsed":false,"items":[{"type":"link","label":"Could Use Anvil Factory","href":"/ModuleCheck/docs/0.11.3/rules/compiler/could_use_anvil_factory","docId":"rules/compiler/could_use_anvil_factory","unlisted":false}],"collapsible":true},{"type":"category","label":"Kapt","collapsed":false,"items":[{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_processor","docId":"rules/kapt/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_plugin","docId":"rules/kapt/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.11.3/rules/kapt/custom_kapt_matchers","docId":"rules/kapt/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"type":"category","label":"Sorting","collapsed":false,"items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"type":"category","label":"Android","collapsed":false,"items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.11.3/rules/android/disable_resources","docId":"rules/android/disable_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.11.3/rules/android/disable_viewbinding","docId":"rules/android/disable_viewbinding","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"ci-workflow":{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","sidebar":"Docs"},"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","sidebar":"Docs"},"rules/android/disable_resources":{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_viewbinding":{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/compiler/could_use_anvil_factory":{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/kapt/custom_kapt_matchers":{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/kapt/unused_kapt_plugin":{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in applying","sidebar":"Docs"},"rules/kapt/unused_kapt_processor":{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused":{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"},"suppressing-findings":{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/b28afb00.b441d887.js b/assets/js/b28afb00.b441d887.js new file mode 100644 index 0000000000..57f03a5551 --- /dev/null +++ b/assets/js/b28afb00.b441d887.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4590],{12773:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","source":"@site/versioned_docs/version-0.12.3/rules/redundant_dependency.md","sourceDirName":"rules","slug":"/rules/redundant_dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/redundant_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/redundant_dependency.md","tags":[],"version":"0.12.3","frontMatter":{"id":"redundant_dependency","slug":"/rules/redundant_dependency","title":"Redundant Dependency","sidebar_label":"Redundant Dependency"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/inherited_dependency"},"next":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/overshot_dependency"}}');var i=d(23420),s=d(65404);const r={id:"redundant_dependency",slug:"/rules/redundant_dependency",title:"Redundant Dependency",sidebar_label:"Redundant Dependency"},a=void 0,l={},c=[];function o(e){const n={a:"a",admonition:"admonition",code:"code",mermaid:"mermaid",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.admonition,{type:"caution",children:[(0,i.jsx)(n.p,{children:"This rule creates a brittle dependency graph, because some necessary dependencies are only provided\ntransitively by other dependencies. Any manual changes to dependencies can have unexpected\nconsequences downstream."}),(0,i.jsxs)(n.p,{children:["This rule is ",(0,i.jsx)(n.strong,{children:"not recommended"})," and disabled by default, but it's still available for those who\nwant to keep their build files as small as possible."]})]}),"\n",(0,i.jsxs)(n.p,{children:["Finds project dependencies which are declared as ",(0,i.jsx)(n.code,{children:"api"})," in other dependency projects, but also\ndeclared in the current project. These dependencies can be removed without actually breaking the\nbuild, since they're still provided by an upstream dependency through the ",(0,i.jsx)(n.code,{children:"api"})," configuration."]}),"\n",(0,i.jsx)(n.mermaid,{value:"flowchart LR\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n subgraph sg_redundant [A redundant graph]\n direction TB\n\n lib1_redundant(:lib-1):::depth0\n lib2_redundant(:lib-2):::depth1\n app_redundant(:app):::depth2\n\n app_redundant --\x3e |api| lib1_redundant\n app_redundant --\x3e |api| lib2_redundant\n\n lib2_redundant --\x3e |api| lib1_redundant\n end\n\n subgraph sg_minimalist [A graph with no redundancy]\n direction TB\n\n lib1_minimalist(:lib-1):::depth0\n lib2_minimalist(:lib-2):::depth1\n app_minimalist(:app):::depth2\n\n app_minimalist --\x3e |api| lib2_minimalist\n\n lib2_minimalist --\x3e |api| lib1_minimalist\n end\n\n style sg_redundant fill:#C66,stroke:#000,color:#FFF\n style sg_minimalist fill:#696,stroke:#000,color:#FFF\n\n sg_redundant --\x3e |./gradlew moduleCheck| sg_minimalist\n"}),"\n",(0,i.jsxs)(n.p,{children:["This is the opposite of the ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.3/rules/inherited_dependency",children:"inherited dependency"})," rule, which ensures a stable graph by explicitly\ndeclaring each dependency. ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.3/rules/inherited_dependency",children:"Inherited dependency"})," is enabled by default, and is the recommended\napproach. Both rules may not be enabled at the same time."]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>r,x:()=>a});var t=d(36672);const i={},s=t.createContext(i);function r(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b35da6ab.0ba5b2bd.js b/assets/js/b35da6ab.0ba5b2bd.js new file mode 100644 index 0000000000..e3e4f10e12 --- /dev/null +++ b/assets/js/b35da6ab.0ba5b2bd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6601],{20954:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>c,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"Dependencies","source":"@site/versioned_docs/version-0.12.4/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.12.4/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/quickstart.mdx","tags":[],"version":"0.12.4","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.4/configuration"}}');var a=r(23420),s=r(65404),l=r(65780),o=r(58118);const c={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},i=void 0,u={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,a.jsxs)(l.A,{children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven("https://oss.sonatype.org/content/repositories/snapshots/")\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.12.4"\n}\n'})})]}),(0,a.jsxs)(o.A,{value:"Groovy",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:'// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven {\n url "https://oss.sonatype.org/content/repositories/snapshots"\n }\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.12.4'\n}\n"})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,a.jsx)(n.p,{children:"all checks"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,a.jsx)(n.p,{children:"all checks with auto-correct"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"check sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,a.jsx)(n.p,{children:"apply sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"report depths of each module"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckDepths\n"})}),"\n",(0,a.jsx)(n.p,{children:"generate (module-only) dependency graphs"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckGraphs\n"})}),"\n",(0,a.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,a.jsxs)(n.p,{children:["See ",(0,a.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.4/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,a.jsxs)(l.A,{children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,a.jsx)(n.p,{children:"--or--"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,a.jsx)(o.A,{value:"Groovy",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},58118:(e,n,r)=>{r.d(n,{A:()=>l});r(36672);var t=r(13526);const a={tabItem:"tabItem_qogc"};var s=r(23420);function l({children:e,hidden:n,className:r}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,t.A)(a.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>o});var t=r(36672);const a={},s=t.createContext(a);function l(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),t.createElement(s.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>y});var t=r(36672),a=r(13526),s=r(10452),l=r(85291),o=r(10914),c=r(41201),i=r(40622),u=r(42925);function d(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:t}})=>({value:e,label:n,attributes:r,default:t}))}(r);return function(e){const n=(0,i.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,l.W6)(),a=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,c.aZ)(a),(0,t.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})},[a,r])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:a}=e,s=h(e),[l,c]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:s})),[i,d]=g({queryString:r,groupId:a}),[m,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,a]=(0,u.Dv)(n);return[r,(0,t.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),b=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,o.A)(()=>{b&&c(b)},[b]);return{selectedValue:l,selectValue:(0,t.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);c(e),d(e),f(e)},[d,f,s]),tabValues:s}}var f=r(74682);const b={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:t,tabValues:l}){const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),i=e=>{const n=e.currentTarget,a=o.indexOf(n),s=l[a].value;s!==r&&(c(n),t(s))},u=e=>{let n=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:l.map(({value:e,label:n,attributes:t})=>(0,v.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:u,onClick:i,...t,className:(0,a.A)("tabs__item",b.tabItem,t?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const s=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===r);return e?(0,t.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:s.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,v.jsx)(x,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/b3a16c5b.d3c71a1c.js b/assets/js/b3a16c5b.d3c71a1c.js new file mode 100644 index 0000000000..8926c356bd --- /dev/null +++ b/assets/js/b3a16c5b.d3c71a1c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2520],{38196:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>l,contentTitle:()=>d,default:()=>c,frontMatter:()=>t,metadata:()=>o,toc:()=>u});const o=JSON.parse('{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"","source":"@site/versioned_docs/version-0.10.0/rules/android/disable_resources.md","sourceDirName":"rules/android","slug":"/rules/android/disable_resources","permalink":"/ModuleCheck/docs/0.10.0/rules/android/disable_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/android/disable_resources.md","tags":[],"version":"0.10.0","frontMatter":{"id":"disable_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Rules","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.10.0/rules/android/disable_viewbinding"}}');var n=r(23420),i=r(65404);const t={id:"disable_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},d=void 0,l={},u=[];function a(e){return(0,n.jsx)(n.Fragment,{})}function c(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(a,{...e})}):a()}},65404:(e,s,r)=>{r.d(s,{R:()=>t,x:()=>d});var o=r(36672);const n={},i=o.createContext(n);function t(e){const s=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:t(e.components),o.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b7c223ee.81ebafcd.js b/assets/js/b7c223ee.81ebafcd.js new file mode 100644 index 0000000000..4a51dec68c --- /dev/null +++ b/assets/js/b7c223ee.81ebafcd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6678],{65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}},80766:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>a,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.12.2/rules/android/disable_android_resources.md","sourceDirName":"rules/android","slug":"/rules/disable_android_resources","permalink":"/ModuleCheck/docs/0.12.2/rules/disable_android_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/android/disable_android_resources.md","tags":[],"version":"0.12.2","frontMatter":{"id":"disable_android_resources","slug":"/rules/disable_android_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.2/rules/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.2/rules/disable_view_binding"}}');var o=r(23420),d=r(65404);const i={id:"disable_android_resources",slug:"/rules/disable_android_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,a={},c=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/assets/js/ba3d50d9.6fdc1a92.js b/assets/js/ba3d50d9.6fdc1a92.js new file mode 100644 index 0000000000..b4cd37678d --- /dev/null +++ b/assets/js/ba3d50d9.6fdc1a92.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8463],{25708:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.11.0/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_plugins","permalink":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/sorting/sort_plugins.md","tags":[],"version":"0.11.0","frontMatter":{"id":"sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.11.0/rules/android/disable_resources"}}');var o=t(23420),r=t(65404);const i={id:"sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(d,{...e})}):d()}},65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const o={},r=n.createContext(o);function i(e){const s=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bc73dc9d.81b9925e.js b/assets/js/bc73dc9d.81b9925e.js new file mode 100644 index 0000000000..02b38b9029 --- /dev/null +++ b/assets/js/bc73dc9d.81b9925e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1895],{58118:(e,n,r)=>{r.d(n,{A:()=>s});r(36672);var a=r(13526);const l={tabItem:"tabItem_qogc"};var t=r(23420);function s({children:e,hidden:n,className:r}){return(0,t.jsx)("div",{role:"tabpanel",className:(0,a.A)(l.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>s,x:()=>o});var a=r(36672);const l={},t=a.createContext(l);function s(e){const n=a.useContext(t);return a.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),a.createElement(t.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>w});var a=r(36672),l=r(13526),t=r(10452),s=r(85291),o=r(10914),i=r(41201),u=r(40622),c=r(42925);function d(e){return a.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,a.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:a}})=>({value:e,label:n,attributes:r,default:a}))}(r);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,s.W6)(),l=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,i.aZ)(l),(0,a.useCallback)(e=>{if(!l)return;const n=new URLSearchParams(r.location.search);n.set(l,e),r.replace({...r.location,search:n.toString()})},[l,r])]}function f(e){const{defaultValue:n,queryString:r=!1,groupId:l}=e,t=h(e),[s,i]=(0,a.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:t})),[u,d]=g({queryString:r,groupId:l}),[f,m]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,l]=(0,c.Dv)(n);return[r,(0,a.useCallback)(e=>{n&&l.set(e)},[n,l])]}({groupId:l}),v=(()=>{const e=u??f;return p({value:e,tabValues:t})?e:null})();(0,o.A)(()=>{v&&i(v)},[v]);return{selectedValue:s,selectValue:(0,a.useCallback)(e=>{if(!p({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),m(e)},[d,m,t]),tabValues:t}}var m=r(74682);const v={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var b=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:a,tabValues:s}){const o=[],{blockElementScrollPositionUntilNextRender:i}=(0,t.a_)(),u=e=>{const n=e.currentTarget,l=o.indexOf(n),t=s[l].value;t!==r&&(i(n),a(t))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":n},e),children:s.map(({value:e,label:n,attributes:a})=>(0,b.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...a,className:(0,l.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const t=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=t.find(e=>e.props.value===r);return e?(0,a.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=f(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",v.tabList),children:[(0,b.jsx)(x,{...n,...e}),(0,b.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,b.jsx)(j,{...e,children:d(e.children)},String(n))}},74509:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","source":"@site/versioned_docs/version-0.11.1/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.11.1/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/quickstart.mdx","tags":[],"version":"0.11.1","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.11.1/configuration"}}');var l=r(23420),t=r(65404),s=r(65780),o=r(58118);const i={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},u=void 0,c={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin."})}),"\n",(0,l.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,l.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,l.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:"// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.11.0"\n}\n'})})]}),(0,l.jsxs)(o.A,{value:"Groovy",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:"// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.11.0'\n}\n"})})]})]}),"\n",(0,l.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,l.jsx)(n.p,{children:"all checks"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,l.jsx)(n.p,{children:"kapt checks"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckKapt\n"})}),"\n",(0,l.jsx)(n.p,{children:"sorts"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,l.jsx)(n.p,{children:"unused"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gardlew moduleCheckUnused\n"})}),"\n",(0,l.jsx)(n.p,{children:"redundant"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckRedundant\n"})}),"\n",(0,l.jsx)(n.p,{children:"overshot"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckOvershot\n"})}),"\n",(0,l.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"/ModuleCheck/docs/0.11.1/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,l.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,l.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nconfigure<com.rickbusarow.modulecheck.ModuleCheckExtension> {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,l.jsx)(n.p,{children:"--or--"}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nmoduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,l.jsx)(o.A,{value:"Groovy",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:'// top-level build.gradle\n\nmoduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/bc7e3c4b.a8fbf2c4.js b/assets/js/bc7e3c4b.a8fbf2c4.js new file mode 100644 index 0000000000..154d83faae --- /dev/null +++ b/assets/js/bc7e3c4b.a8fbf2c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[362],{65404:(e,n,d)=>{d.d(n,{R:()=>i,x:()=>s});var t=d(36672);const o={},c=t.createContext(o);function i(e){const n=t.useContext(c);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(c.Provider,{value:n},e.children)}},86257:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>s,default:()=>a,frontMatter:()=>i,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.11.1/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/0.11.1/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/inherited_dependency.md","tags":[],"version":"0.11.1","frontMatter":{"id":"inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.11.1/rules/must_be_api"},"next":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.11.1/rules/compiler/could_use_anvil_factory"}}');var o=d(23420),c=d(65404);const i={id:"inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},s=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,c.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["Assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleB"}),", and ",(0,o.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,o.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,o.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,o.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,o.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,o.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,o.jsx)(n.code,{children:":moduleA"})," -> ",(0,o.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/bd7e05cf.d916accd.js b/assets/js/bd7e05cf.d916accd.js new file mode 100644 index 0000000000..4aba9836cb --- /dev/null +++ b/assets/js/bd7e05cf.d916accd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7187],{30738:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.11.2/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_dependencies","permalink":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/sorting/sort_dependencies.md","tags":[],"version":"0.11.2","frontMatter":{"id":"sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.11.2/rules/kapt/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_plugins"}}');var o=n(23420),r=n(65404);const i={id:"sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l()}},65404:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(36672);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/be81e05d.7a86ef3f.js b/assets/js/be81e05d.7a86ef3f.js new file mode 100644 index 0000000000..f197912522 --- /dev/null +++ b/assets/js/be81e05d.7a86ef3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1917],{39033:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"","source":"@site/versioned_docs/version-0.10.0/rules/android/disable_viewbinding.md","sourceDirName":"rules/android","slug":"/rules/android/disable_viewbinding","permalink":"/ModuleCheck/docs/0.10.0/rules/android/disable_viewbinding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/android/disable_viewbinding.md","tags":[],"version":"0.10.0","frontMatter":{"id":"disable_viewbinding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Rules","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.10.0/rules/android/disable_resources"}}');var t=n(23420),d=n(65404);const r={id:"disable_viewbinding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},o=void 0,a={},l=[];function c(e){return(0,t.jsx)(t.Fragment,{})}function u(e={}){const{wrapper:i}={...(0,d.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(c,{...e})}):c()}},65404:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>o});var s=n(36672);const t={},d=s.createContext(t);function r(e){const i=s.useContext(d);return s.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function o(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(d.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c0050a27.1fdf8fd2.js b/assets/js/c0050a27.1fdf8fd2.js new file mode 100644 index 0000000000..32fca6ef02 --- /dev/null +++ b/assets/js/c0050a27.1fdf8fd2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6087],{60862:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.12.1","label":"0.12.1","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.12.1","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.12.1/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.12.1/configuration","docId":"configuration","unlisted":false},{"type":"link","label":"Suppressing Findings","href":"/ModuleCheck/docs/0.12.1/suppressing-findings","docId":"suppressing-findings","unlisted":false},{"type":"link","label":"CI Workflow","href":"/ModuleCheck/docs/0.12.1/ci-workflow","docId":"ci-workflow","unlisted":false},{"type":"category","label":"Rules","collapsed":false,"items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.12.1/rules/unused_dependency","docId":"rules/unused_dependency","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/0.12.1/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/0.12.1/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"type":"link","label":"Redundant Dependency","href":"/ModuleCheck/docs/0.12.1/rules/redundant_dependency","docId":"rules/redundant_dependency","unlisted":false},{"type":"link","label":"Overshot Dependency","href":"/ModuleCheck/docs/0.12.1/rules/overshot_dependency","docId":"rules/overshot_dependency","unlisted":false},{"type":"link","label":"Project Depth","href":"/ModuleCheck/docs/0.12.1/rules/project_depth","docId":"rules/project_depth","unlisted":false},{"type":"category","label":"Compiler","collapsed":false,"items":[{"type":"link","label":"Could Use Anvil Factory Generation","href":"/ModuleCheck/docs/0.12.1/rules/use_anvil_factory_generation","docId":"rules/compiler/use_anvil_factory_generation","unlisted":false},{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_processor","docId":"rules/compiler/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_plugin","docId":"rules/compiler/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.12.1/rules/custom_kapt_matchers","docId":"rules/compiler/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"type":"category","label":"Sorting","collapsed":false,"items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.12.1/rules/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.12.1/rules/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"type":"category","label":"Android","collapsed":false,"items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.12.1/rules/disable_android_resources","docId":"rules/android/disable_android_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.12.1/rules/disable_view_binding","docId":"rules/android/disable_view_binding","unlisted":false},{"type":"link","label":"Unused Kotlin Android Extensions","href":"/ModuleCheck/docs/0.12.1/rules/unused_kotlin_android_extensions","docId":"rules/android/unused_kotlin_android_extensions","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"ci-workflow":{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","sidebar":"Docs"},"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"Dependencies","sidebar":"Docs"},"rules/android/disable_android_resources":{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_view_binding":{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/android/unused_kotlin_android_extensions":{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","sidebar":"Docs"},"rules/compiler/custom_kapt_matchers":{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/compiler/unused_kapt_plugin":{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","sidebar":"Docs"},"rules/compiler/unused_kapt_processor":{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/compiler/use_anvil_factory_generation":{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/overshot_dependency":{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","sidebar":"Docs"},"rules/project_depth":{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","sidebar":"Docs"},"rules/redundant_dependency":{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused_dependency":{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"},"suppressing-findings":{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/c07a004a.f92899db.js b/assets/js/c07a004a.f92899db.js new file mode 100644 index 0000000000..0918f8bad6 --- /dev/null +++ b/assets/js/c07a004a.f92899db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4687],{51456:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","source":"@site/versioned_docs/version-0.11.0/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.11.0/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/quickstart.mdx","tags":[],"version":"0.11.0","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.11.0/configuration"}}');var l=r(23420),t=r(65404),s=r(65780),o=r(58118);const i={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},u=void 0,c={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsx)(n.p,{children:"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin."})}),"\n",(0,l.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,l.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,l.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:"// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.11.0"\n}\n'})})]}),(0,l.jsxs)(o.A,{value:"Groovy",children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:"// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n }\n}\n"})}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.11.0'\n}\n"})})]})]}),"\n",(0,l.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,l.jsx)(n.p,{children:"all checks"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,l.jsx)(n.p,{children:"kapt checks"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckKapt\n"})}),"\n",(0,l.jsx)(n.p,{children:"sorts"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,l.jsx)(n.p,{children:"unused"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gardlew moduleCheckUnused\n"})}),"\n",(0,l.jsx)(n.p,{children:"redundant"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckRedundant\n"})}),"\n",(0,l.jsx)(n.p,{children:"overshot"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckOvershot\n"})}),"\n",(0,l.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"/ModuleCheck/docs/0.11.0/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,l.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,l.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nconfigure<com.rickbusarow.modulecheck.ModuleCheckExtension> {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,l.jsx)(n.p,{children:"--or--"}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nmoduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,l.jsx)(o.A,{value:"Groovy",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-groovy",children:'// top-level build.gradle\n\nmoduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},58118:(e,n,r)=>{r.d(n,{A:()=>s});r(36672);var a=r(13526);const l={tabItem:"tabItem_qogc"};var t=r(23420);function s({children:e,hidden:n,className:r}){return(0,t.jsx)("div",{role:"tabpanel",className:(0,a.A)(l.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>s,x:()=>o});var a=r(36672);const l={},t=a.createContext(l);function s(e){const n=a.useContext(t);return a.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),a.createElement(t.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>w});var a=r(36672),l=r(13526),t=r(10452),s=r(85291),o=r(10914),i=r(41201),u=r(40622),c=r(42925);function d(e){return a.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,a.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:a}})=>({value:e,label:n,attributes:r,default:a}))}(r);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,s.W6)(),l=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,i.aZ)(l),(0,a.useCallback)(e=>{if(!l)return;const n=new URLSearchParams(r.location.search);n.set(l,e),r.replace({...r.location,search:n.toString()})},[l,r])]}function f(e){const{defaultValue:n,queryString:r=!1,groupId:l}=e,t=h(e),[s,i]=(0,a.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:t})),[u,d]=g({queryString:r,groupId:l}),[f,m]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,l]=(0,c.Dv)(n);return[r,(0,a.useCallback)(e=>{n&&l.set(e)},[n,l])]}({groupId:l}),v=(()=>{const e=u??f;return p({value:e,tabValues:t})?e:null})();(0,o.A)(()=>{v&&i(v)},[v]);return{selectedValue:s,selectValue:(0,a.useCallback)(e=>{if(!p({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),m(e)},[d,m,t]),tabValues:t}}var m=r(74682);const v={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var b=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:a,tabValues:s}){const o=[],{blockElementScrollPositionUntilNextRender:i}=(0,t.a_)(),u=e=>{const n=e.currentTarget,l=o.indexOf(n),t=s[l].value;t!==r&&(i(n),a(t))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":n},e),children:s.map(({value:e,label:n,attributes:a})=>(0,b.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...a,className:(0,l.A)("tabs__item",v.tabItem,a?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const t=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=t.find(e=>e.props.value===r);return e?(0,a.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:t.map((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=f(e);return(0,b.jsxs)("div",{className:(0,l.A)("tabs-container",v.tabList),children:[(0,b.jsx)(x,{...n,...e}),(0,b.jsx)(k,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,b.jsx)(j,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/c10c208b.a6ca7316.js b/assets/js/c10c208b.a6ca7316.js new file mode 100644 index 0000000000..48ce40e1a3 --- /dev/null +++ b/assets/js/c10c208b.a6ca7316.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2132],{65404:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>a});var o=s(36672);const t={},i=o.createContext(t);function r(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(i.Provider,{value:n},e.children)}},98428:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.11.3/rules/kapt/unused_kapt_processor.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/kapt/unused_kapt_processor.md","tags":[],"version":"0.11.3","frontMatter":{"id":"unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory","permalink":"/ModuleCheck/docs/0.11.3/rules/compiler/could_use_anvil_factory"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_plugin"}}');var t=s(23420),i=s(65404);const r={id:"unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,d={},c=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/assets/js/c141421f.484a90c2.js b/assets/js/c141421f.484a90c2.js new file mode 100644 index 0000000000..1e0639575e --- /dev/null +++ b/assets/js/c141421f.484a90c2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[957],{40936:e=>{e.exports=JSON.parse('{"name":"docusaurus-theme-search-algolia","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/c1600862.f5c16495.js b/assets/js/c1600862.f5c16495.js new file mode 100644 index 0000000000..2a262835ea --- /dev/null +++ b/assets/js/c1600862.f5c16495.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3641],{2501:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","source":"@site/docs/rules/redundant_dependency.md","sourceDirName":"rules","slug":"/rules/redundant_dependency","permalink":"/ModuleCheck/docs/next/rules/redundant_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/redundant_dependency.md","tags":[],"version":"current","frontMatter":{"id":"redundant_dependency","slug":"/rules/redundant_dependency","title":"Redundant Dependency","sidebar_label":"Redundant Dependency"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/next/rules/inherited_dependency"},"next":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/next/rules/overshot_dependency"}}');var i=d(23420),r=d(65404);const s={id:"redundant_dependency",slug:"/rules/redundant_dependency",title:"Redundant Dependency",sidebar_label:"Redundant Dependency"},a=void 0,l={},c=[];function o(e){const n={a:"a",admonition:"admonition",code:"code",mermaid:"mermaid",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.admonition,{type:"caution",children:[(0,i.jsx)(n.p,{children:"This rule creates a brittle dependency graph, because some necessary dependencies are only provided\ntransitively by other dependencies. Any manual changes to dependencies can have unexpected\nconsequences downstream."}),(0,i.jsxs)(n.p,{children:["This rule is ",(0,i.jsx)(n.strong,{children:"not recommended"})," and disabled by default, but it's still available for those who\nwant to keep their build files as small as possible."]})]}),"\n",(0,i.jsxs)(n.p,{children:["Finds project dependencies which are declared as ",(0,i.jsx)(n.code,{children:"api"})," in other dependency projects, but also\ndeclared in the current project. These dependencies can be removed without actually breaking the\nbuild, since they're still provided by an upstream dependency through the ",(0,i.jsx)(n.code,{children:"api"})," configuration."]}),"\n",(0,i.jsx)(n.mermaid,{value:"flowchart LR\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n subgraph sg_redundant [A redundant graph]\n direction TB\n\n lib1_redundant(:lib-1):::depth0\n lib2_redundant(:lib-2):::depth1\n app_redundant(:app):::depth2\n\n app_redundant --\x3e |api| lib1_redundant\n app_redundant --\x3e |api| lib2_redundant\n\n lib2_redundant --\x3e |api| lib1_redundant\n end\n\n subgraph sg_minimalist [A graph with no redundancy]\n direction TB\n\n lib1_minimalist(:lib-1):::depth0\n lib2_minimalist(:lib-2):::depth1\n app_minimalist(:app):::depth2\n\n app_minimalist --\x3e |api| lib2_minimalist\n\n lib2_minimalist --\x3e |api| lib1_minimalist\n end\n\n style sg_redundant fill:#C66,stroke:#000,color:#FFF\n style sg_minimalist fill:#696,stroke:#000,color:#FFF\n\n sg_redundant --\x3e |./gradlew moduleCheck| sg_minimalist\n"}),"\n",(0,i.jsxs)(n.p,{children:["This is the opposite of the ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/next/rules/inherited_dependency",children:"inherited dependency"})," rule, which ensures a stable graph by explicitly\ndeclaring each dependency. ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/next/rules/inherited_dependency",children:"Inherited dependency"})," is enabled by default, and is the recommended\napproach. Both rules may not be enabled at the same time."]})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>s,x:()=>a});var t=d(36672);const i={},r=t.createContext(i);function s(e){const n=t.useContext(r);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c2414a18.a5185bc2.js b/assets/js/c2414a18.a5185bc2.js new file mode 100644 index 0000000000..c9eea80bf5 --- /dev/null +++ b/assets/js/c2414a18.a5185bc2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8043],{65404:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>a});var o=s(36672);const n={},r=o.createContext(n);function c(e){const t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:c(e.components),o.createElement(r.Provider,{value:t},e.children)}},65787:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>m,frontMatter:()=>c,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.12.3/rules/compiler/custom_kapt_matchers.md","sourceDirName":"rules/compiler","slug":"/rules/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.12.3/rules/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/compiler/custom_kapt_matchers.md","tags":[],"version":"0.12.3","frontMatter":{"id":"custom_kapt_matchers","slug":"/rules/custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.3/rules/sort_dependencies"}}');var n=s(23420),r=s(65404);const c={id:"custom_kapt_matchers",slug:"/rules/custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},a=void 0,i={},l=[];function u(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,n.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/c4025719.ae817c79.js b/assets/js/c4025719.ae817c79.js new file mode 100644 index 0000000000..b613b51a5e --- /dev/null +++ b/assets/js/c4025719.ae817c79.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2406],{65404:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var o=s(36672);const t={},i=o.createContext(t);function d(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),o.createElement(i.Provider,{value:n},e.children)}},90773:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>c,frontMatter:()=>d,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","source":"@site/versioned_docs/version-0.12.4/rules/android/unused_kotlin_android_extensions.md","sourceDirName":"rules/android","slug":"/rules/unused_kotlin_android_extensions","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_kotlin_android_extensions","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/android/unused_kotlin_android_extensions.md","tags":[],"version":"0.12.4","frontMatter":{"id":"unused_kotlin_android_extensions","slug":"/rules/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","sidebar_label":"Unused Kotlin Android Extensions"},"sidebar":"Docs","previous":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.4/rules/disable_view_binding"}}');var t=s(23420),i=s(65404);const d={id:"unused_kotlin_android_extensions",slug:"/rules/unused_kotlin_android_extensions",title:"Unused Kotlin Android Extensions",sidebar_label:"Unused Kotlin Android Extensions"},r=void 0,u={},l=[];function a(e){const n={p:"p",...(0,i.R)(),...e.components};return(0,t.jsx)(n.p,{children:"Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any\nsynthetic imports or deprecated @Parcelize annotation"})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/c4b5a5df.f6e20324.js b/assets/js/c4b5a5df.f6e20324.js new file mode 100644 index 0000000000..aaacf022f9 --- /dev/null +++ b/assets/js/c4b5a5df.f6e20324.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2581],{42683:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>a,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.12.3/rules/android/disable_android_resources.md","sourceDirName":"rules/android","slug":"/rules/disable_android_resources","permalink":"/ModuleCheck/docs/0.12.3/rules/disable_android_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/android/disable_android_resources.md","tags":[],"version":"0.12.3","frontMatter":{"id":"disable_android_resources","slug":"/rules/disable_android_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.3/rules/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.3/rules/disable_view_binding"}}');var o=r(23420),d=r(65404);const i={id:"disable_android_resources",slug:"/rules/disable_android_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,a={},c=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.3afd3b59.js b/assets/js/c4f5d8e4.3afd3b59.js new file mode 100644 index 0000000000..5946dc0a04 --- /dev/null +++ b/assets/js/c4f5d8e4.3afd3b59.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2634],{29164:(e,s,r)=>{r.r(s),r.d(s,{default:()=>j});r(36672);var a=r(13526),c=r(32592),t=r(28827),l=r(68035),i=r(55928);const o="heroBanner_UJJx",n="buttons_pzbO",h="badges_T7Sn",d="features_keug",m="featureImage_yA8i",u="heroSlogan_kIIh",g="gettingStartedButton_mhEX";var p=r(23420);const x=[{title:"Tree shaking",imageUrl:"img/modulecheck_diagram.png",description:(0,p.jsxs)(p.Fragment,{children:["Blah blah blah.",(0,p.jsx)("br",{}),(0,p.jsx)("br",{}),"More text.",(0,p.jsx)("br",{}),(0,p.jsx)("br",{})]})}];function b({imageUrl:e,title:s,description:r}){const a=(0,i.Ay)(e);return(0,p.jsx)("div",{children:a&&(0,p.jsx)("div",{className:"text--center",children:(0,p.jsx)("img",{className:m,src:a,alt:s})})})}const j=function(){const e=(0,l.A)(),{siteConfig:s={}}=e;return(0,p.jsxs)(c.A,{title:`${s.title}`,description:"Fast Gradle dependency graph validation",children:[(0,p.jsx)("header",{className:(0,a.A)("hero hero--primary",o),children:(0,p.jsxs)("div",{className:"container",children:[(0,p.jsxs)("p",{className:(0,a.A)(u),children:[(0,p.jsx)("strong",{children:"ModuleCheck"})," removes unused module dependencies from your gradle project."]}),(0,p.jsxs)("div",{className:n,children:[(0,p.jsx)(t.A,{className:(0,a.A)("button button--outline button--secondary button--lg",g),to:(0,i.Ay)("docs"),children:"Get Started"}),"\xa0\xa0\xa0\xa0\xa0\xa0"]})]})}),(0,p.jsx)("main",{children:(0,p.jsx)("div",{className:h,children:(0,p.jsxs)("div",{className:"container",children:[(0,p.jsx)("a",{href:"https://search.maven.org/search?q=g:com.rickbusarow.modulecheck",children:(0,p.jsx)("img",{src:"https://img.shields.io/maven-central/v/com.rickbusarow.modulecheck/modulecheck-api.svg?label=release&style=for-the-badge&color=aa0055",alt:"version badge"})}),"\xa0",(0,p.jsx)("a",{href:"https://plugins.gradle.org/plugin/com.rickbusarow.module-check",children:(0,p.jsx)("img",{src:"https://img.shields.io/gradle-plugin-portal/v/com.rickbusarow.module-check?style=for-the-badge",alt:"Gradle Plugin Portal"})}),"\xa0",(0,p.jsx)("a",{href:"https://oss.sonatype.org/#nexus-search;quick~com.rickbusarow.modulecheck",children:(0,p.jsx)("img",{src:"https://img.shields.io/nexus/s/com.rickbusarow.modulecheck/modulecheck-api?label=snapshots&server=https%3A%2F%2Foss.sonatype.org&style=for-the-badge",alt:"Snapshot"})}),"\xa0",(0,p.jsx)("a",{href:"https://github.com/rbusarow/ModuleCheck/blob/main/LICENSE",children:(0,p.jsx)("img",{src:"https://img.shields.io/badge/license-apache2.0-blue?style=for-the-badge",alt:"license"})})]})})}),(0,p.jsx)("main",{children:(0,p.jsx)("section",{className:d,children:(0,p.jsx)("div",{className:"container",children:x.map((e,s)=>(0,p.jsx)(b,{...e},s))})})})]})}}}]); \ No newline at end of file diff --git a/assets/js/c5b979b0.ec745dfa.js b/assets/js/c5b979b0.ec745dfa.js new file mode 100644 index 0000000000..7d38a0aed1 --- /dev/null +++ b/assets/js/c5b979b0.ec745dfa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5734],{14198:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>c,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/docs/rules/compiler/custom_kapt_matchers.md","sourceDirName":"rules/compiler","slug":"/rules/custom_kapt_matchers","permalink":"/ModuleCheck/docs/next/rules/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/compiler/custom_kapt_matchers.md","tags":[],"version":"current","frontMatter":{"id":"custom_kapt_matchers","slug":"/rules/custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/next/rules/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/next/rules/sort_dependencies"}}');var o=s(23420),r=s(65404);const c={id:"custom_kapt_matchers",slug:"/rules/custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},a=void 0,l={},u=[];function i(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,o.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},65404:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>a});var n=s(36672);const o={},r=n.createContext(o);function c(e){const t=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c5f63adb.a5f2c02f.js b/assets/js/c5f63adb.a5f2c02f.js new file mode 100644 index 0000000000..ed0ef937e3 --- /dev/null +++ b/assets/js/c5f63adb.a5f2c02f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2133],{24772:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>u});const o=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.11.1/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.11.1/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/configuration.mdx","tags":[],"version":"0.11.1","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.11.1/"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.11.1/rules/unused"}}');var s=t(23420),r=t(65404);const i={id:"configuration",sidebar_label:"Configuration"},a=void 0,c={},u=[];function d(e){const n={code:"code",pre:"pre",...(0,r.R)(),...e.components};return(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:'plugins {\n id("com.rickbusarow.module-check") version "0.11.0"\n}\n\nmoduleCheck {\n\n autoCorrect = true // default is true\n deleteUnused = true // default is false\n\n checks {\n overshotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedImplementation = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n alwaysIgnore.set(setOf(":test:core-jvm", ":test:core-android"))\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n ignoreAll.set(setOf(":app"))\n\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var o=t(36672);const s={},r=o.createContext(s);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c7222430.7a1609fd.js b/assets/js/c7222430.7a1609fd.js new file mode 100644 index 0000000000..5837b87b78 --- /dev/null +++ b/assets/js/c7222430.7a1609fd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3361],{49477:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","source":"@site/versioned_docs/version-0.12.2/rules/compiler/unused_kapt_plugin.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/compiler/unused_kapt_plugin.md","tags":[],"version":"0.12.2","frontMatter":{"id":"unused_kapt_plugin","slug":"/rules/unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.2/rules/custom_kapt_matchers"}}');var o=t(23420),u=t(65404);const r={id:"unused_kapt_plugin",slug:"/rules/unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,l={},c=[];function p(e){const n={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(n.p,{children:["If there are no ",(0,o.jsx)(n.code,{children:"kapt"}),"/",(0,o.jsx)(n.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in\napplying the ",(0,o.jsx)(n.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function d(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>i});var s=t(36672);const o={},u=s.createContext(o);function r(e){const n=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c83ce79b.05c17cb8.js b/assets/js/c83ce79b.05c17cb8.js new file mode 100644 index 0000000000..0f5e2ad5e3 --- /dev/null +++ b/assets/js/c83ce79b.05c17cb8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8141],{9745:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.12.0/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/0.12.0/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/must_be_api.md","tags":[],"version":"0.12.0","frontMatter":{"id":"must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/unused"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c846d7aa.eb80452a.js b/assets/js/c846d7aa.eb80452a.js new file mode 100644 index 0000000000..ae648a3e23 --- /dev/null +++ b/assets/js/c846d7aa.eb80452a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4193],{25493:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.11.1/rules/compiler/could_use_anvil_factory.md","sourceDirName":"rules/compiler","slug":"/rules/compiler/could_use_anvil_factory","permalink":"/ModuleCheck/docs/0.11.1/rules/compiler/could_use_anvil_factory","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/compiler/could_use_anvil_factory.md","tags":[],"version":"0.11.1","frontMatter":{"id":"could_use_anvil_factory","title":"Could Use Anvil Factory","sidebar_label":"Could Use Anvil Factory"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.11.1/rules/inherited_dependency"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_processor"}}');var r=o(23420),s=o(65404);const i={id:"could_use_anvil_factory",title:"Could Use Anvil Factory",sidebar_label:"Could Use Anvil Factory"},c=void 0,l={},a=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or Subcomponents,\nand it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},65404:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>c});var t=o(36672);const r={},s=t.createContext(r);function i(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c902409b.ea48d292.js b/assets/js/c902409b.ea48d292.js new file mode 100644 index 0000000000..9aff419dac --- /dev/null +++ b/assets/js/c902409b.ea48d292.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5184],{45590:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","source":"@site/versioned_docs/version-0.11.3/ci_workflow.md","sourceDirName":".","slug":"/ci-workflow","permalink":"/ModuleCheck/docs/0.11.3/ci-workflow","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/ci_workflow.md","tags":[],"version":"0.11.3","frontMatter":{"id":"ci-workflow","sidebar_label":"CI Workflow","title":"CI Workflow"},"sidebar":"Docs","previous":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.11.3/suppressing-findings"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.11.3/rules/unused"}}');var s=t(23420),a=t(65404);const i={id:"ci-workflow",sidebar_label:"CI Workflow",title:"CI Workflow"},l=void 0,r={},c=[{value:"Using CI over git hooks",id:"using-ci-over-git-hooks",level:3},{value:"Example Flow chart",id:"example-flow-chart",level:3},{value:"Example GitHub Action",id:"example-github-action",level:3}];function h(e){const n={a:"a",code:"code",h3:"h3",mermaid:"mermaid",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and\nautomatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to\napply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run.\nThis is similar to a git pre-commit hook, except the work is delegated to a build server."}),"\n",(0,s.jsx)(n.h3,{id:"using-ci-over-git-hooks",children:"Using CI over git hooks"}),"\n",(0,s.jsx)(n.p,{children:"The traditional method for applying changes automatically is with a git hook, such as pre-commit or\npre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor\ndeveloper experience. With a CI task, the execution is done automatically and asynchronously, while\nthe developer is already moving on to something else."}),"\n",(0,s.jsx)(n.p,{children:"A git hook also technically doesn't guarantee that a task is executed before code is checked in to a\nmain branch, since there's no guarantee that a hook is enabled. With CI, the task will output a\nstatus check. If a branch protection rule is enabled, that status check can be required. This will\nthen guarantee that the task has run (successfully) before any code is checked in to the protected\nbranch."}),"\n",(0,s.jsx)(n.h3,{id:"example-flow-chart",children:"Example Flow chart"}),"\n",(0,s.jsxs)(n.p,{children:['This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The\ncancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an\n"optimistic" workflow, in that it assumes that the ',(0,s.jsx)(n.code,{children:"modulecheck"})," task will not generate changes\nwhich would trigger a restart."]}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n Start(CI Start):::good --\x3e mGraph\n Start --\x3e tGraph\n Start --\x3e cGraph\n\n subgraph mGraph [runner 1]\n direction TB\n ModuleCheck(./gradlew moduleCheck):::code --\x3e ChangesModuleCheck\n ChangesModuleCheck{Graph changes?} --- yesM[yes]:::lineLabel --\x3e CommitModuleCheck(Commit changes and push):::stop\n ChangesModuleCheck --- noM[no]:::lineLabel --\x3e EndModuleCheck("#10003;"):::good\n end\n\n subgraph tGraph [runner 2]\n direction TB\n Tests(./gradlew test):::code --\x3e EndTests("#10003;"):::good\n end\n\n subgraph cGraph [runner 3]\n direction TB\n Cancel(Cancel previous CI run):::code\n end\n\n style tGraph fill:#EEE,stroke:#000\n style cGraph fill:#EEE,stroke:#000\n style mGraph fill:#EEE,stroke:#000\n\n classDef good fill:#0B0,stroke:#000\n classDef stop fill:#E33,stroke:#000\n\n classDef code fill:#AAA,stroke:#000\n\n style ChangesModuleCheck fill:#CD1,stroke:#000\n\n classDef lineLabel fill:#FFF,stroke:#FFF'}),"\n",(0,s.jsx)(n.h3,{id:"example-github-action",children:"Example GitHub Action"}),"\n",(0,s.jsxs)(n.p,{children:["Here's an Action which will run ModuleCheck, then commit any changes\nusing ",(0,s.jsx)(n.a,{href:"https://github.com/stefanzweifel/git-auto-commit-action",children:"Stefanzweifel's auto-commit"}),". This\nrequires a personal access token secret, or the commit step will fail."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:"title=.github/workflows.module-check.yml",children:"name: ModuleCheck\n\non:\n pull_request:\n\njobs:\n\n cancel-stale-jobs:\n name: Cancel stale jobs\n runs-on: ubuntu-latest\n\n steps:\n # cancel previous jobs\n - name: Cancel Previous Runs\n uses: styfle/cancel-workflow-action@0.9.0\n env:\n GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'\n\n ModuleCheck:\n name: ModuleCheck\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n # Must use a personal access token in order to commit changes\n token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '11'\n\n # performs tree-shaking on the Gradle dependency graph\n - name: modulecheck\n run: ./gradlew modulecheck --no-daemon\n\n # If ModuleCheck generated changes, commit and push those changes.\n # If there are no changes, then this is a no-op.\n - name: commit changes\n uses: stefanzweifel/git-auto-commit-action@v4\n with:\n commit_message: Apply ModuleCheck changes\n commit_options: '--no-verify --signoff'\n\n tests:\n name: Unit tests\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n token: ${{ secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n - name: all tests\n run: ./gradlew test --no-daemon\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var o=t(36672);const s={},a=o.createContext(s);function i(e){const n=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c989d589.94d486a6.js b/assets/js/c989d589.94d486a6.js new file mode 100644 index 0000000000..d0316b1289 --- /dev/null +++ b/assets/js/c989d589.94d486a6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9082],{65404:(e,n,d)=>{d.d(n,{R:()=>o,x:()=>c});var t=d(36672);const s={},i=t.createContext(s);function o(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(i.Provider,{value:n},e.children)}},70856:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","source":"@site/versioned_docs/version-0.12.2/rules/inherited_dependency.md","sourceDirName":"rules","slug":"/rules/inherited_dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/inherited_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/inherited_dependency.md","tags":[],"version":"0.12.2","frontMatter":{"id":"inherited_dependency","slug":"/rules/inherited_dependency","title":"Inherited Dependency","sidebar_label":"Inherited Dependency"},"sidebar":"Docs","previous":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.2/rules/must_be_api"},"next":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.12.2/rules/redundant_dependency"}}');var s=d(23420),i=d(65404);const o={id:"inherited_dependency",slug:"/rules/inherited_dependency",title:"Inherited Dependency",sidebar_label:"Inherited Dependency"},c=void 0,r={},l=[];function u(e){const n={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleB"}),", and ",(0,s.jsx)(n.code,{children:":moduleB"})," depends upon ",(0,s.jsx)(n.code,{children:":moduleC"})," via\nan ",(0,s.jsx)(n.code,{children:"api"})," configuration. Also assume that ",(0,s.jsx)(n.code,{children:":moduleA"})," uses something from ",(0,s.jsx)(n.code,{children:":moduleC"}),", but doesn't\nhave an explicit dependency for it. It just inherits that dependency from ",(0,s.jsx)(n.code,{children:":moduleB"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["ModuleCheck will recommend adding a direct, explicit dependency for ",(0,s.jsx)(n.code,{children:":moduleA"})," -> ",(0,s.jsx)(n.code,{children:":moduleC"}),"."]})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/ca3e6c65.ecb85b48.js b/assets/js/ca3e6c65.ecb85b48.js new file mode 100644 index 0000000000..655ac0b7ce --- /dev/null +++ b/assets/js/ca3e6c65.ecb85b48.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1601],{29689:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.11.3/rules/compiler/could_use_anvil_factory.md","sourceDirName":"rules/compiler","slug":"/rules/compiler/could_use_anvil_factory","permalink":"/ModuleCheck/docs/0.11.3/rules/compiler/could_use_anvil_factory","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/compiler/could_use_anvil_factory.md","tags":[],"version":"0.11.3","frontMatter":{"id":"could_use_anvil_factory","title":"Could Use Anvil Factory","sidebar_label":"Could Use Anvil Factory"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.11.3/rules/inherited_dependency"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_processor"}}');var r=o(23420),s=o(65404);const i={id:"could_use_anvil_factory",title:"Could Use Anvil Factory",sidebar_label:"Could Use Anvil Factory"},c=void 0,l={},a=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or Subcomponents,\nand it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},65404:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>c});var t=o(36672);const r={},s=t.createContext(r);function i(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ca460041.6b486372.js b/assets/js/ca460041.6b486372.js new file mode 100644 index 0000000000..10a3e9d28e --- /dev/null +++ b/assets/js/ca460041.6b486372.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1084],{24762:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>a,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/docs/rules/android/disable_android_resources.md","sourceDirName":"rules/android","slug":"/rules/disable_android_resources","permalink":"/ModuleCheck/docs/next/rules/disable_android_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/android/disable_android_resources.md","tags":[],"version":"current","frontMatter":{"id":"disable_android_resources","slug":"/rules/disable_android_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/next/rules/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/next/rules/disable_view_binding"}}');var d=r(23420),o=r(65404);const i={id:"disable_android_resources",slug:"/rules/disable_android_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,a={},c=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,d.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,d.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,d.jsx)(s.pre,{children:(0,d.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,d.jsx)(s,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const d={},o=n.createContext(d);function i(e){const s=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:i(e.components),n.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ca873730.a1e0ddd6.js b/assets/js/ca873730.a1e0ddd6.js new file mode 100644 index 0000000000..4a817c7730 --- /dev/null +++ b/assets/js/ca873730.a1e0ddd6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4559],{35252:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.12.4/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.12.4/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/configuration.mdx","tags":[],"version":"0.12.4","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.12.4/"},"next":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.4/suppressing-findings"}}');var a=n(23420),s=n(65404),o=n(65780),u=n(58118);const l={id:"configuration",sidebar_label:"Configuration"},i=void 0,c={},d=[];function f(e){const t={code:"code",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(o.A,{children:[(0,a.jsx)(u.A,{value:"Kotlin",default:!0,children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'plugins {\n id("com.rickbusarow.module-check") version "0.12.4"\n}\n\nmoduleCheck {\n\n deleteUnused = true // default is false\n trace = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = setOf(":app")\n\n additionalCodeGenerators = listOf(\n modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n name = "My Processor",\n generatorMavenCoordinates = "my-project.codegen:processor",\n annotationNames = listOf(\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n )\n )\n )\n\n reports {\n checkstyle {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n}\n'})})}),(0,a.jsx)(u.A,{value:"Groovy",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'plugins {\n id \'com.rickbusarow.module-check\' version \'0.12.4\'\n}\n\nmoduleCheck {\n deleteUnused = true // default is false\n trace = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = [\':test:core-jvm\', \':test:core-android\']\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = [\':app\']\n\n additionalCodeGenerators = [\n new modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n \'My Processor\',\n \'my-project.codegen:processor\',\n [\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n ]\n )\n ]\n\n reports {\n checkstyle {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n it.enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n it.outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n}\n'})})})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}},58118:(e,t,n)=>{n.d(t,{A:()=>o});n(36672);var r=n(13526);const a={tabItem:"tabItem_qogc"};var s=n(23420);function o({children:e,hidden:t,className:n}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,n),hidden:t,children:e})}},65404:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>u});var r=n(36672);const a={},s=r.createContext(a);function o(e){const t=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:t},e.children)}},65780:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(36672),a=n(13526),s=n(10452),o=n(85291),u=n(10914),l=n(41201),i=n(40622),c=n(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function f(e){const{values:t,children:n}=e;return(0,r.useMemo)(()=>{const e=t??function(e){return d(e).map(({props:{value:e,label:t,attributes:n,default:r}})=>({value:e,label:t,attributes:n,default:r}))}(n);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[t,n])}function p({value:e,tabValues:t}){return t.some(t=>t.value===e)}function h({queryString:e=!1,groupId:t}){const n=(0,o.W6)(),a=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,l.aZ)(a),(0,r.useCallback)(e=>{if(!a)return;const t=new URLSearchParams(n.location.search);t.set(a,e),n.replace({...n.location,search:t.toString()})},[a,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,s=f(e),[o,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:s})),[i,d]=h({queryString:n,groupId:a}),[m,b]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,a]=(0,c.Dv)(t);return[n,(0,r.useCallback)(e=>{t&&a.set(e)},[t,a])]}({groupId:a}),g=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,u.A)(()=>{g&&l(g)},[g]);return{selectedValue:o,selectValue:(0,r.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,s]),tabValues:s}}var b=n(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var y=n(23420);function v({className:e,block:t,selectedValue:n,selectValue:r,tabValues:o}){const u=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),i=e=>{const t=e.currentTarget,a=u.indexOf(t),s=o[a].value;s!==n&&(l(t),r(s))},c=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},e),children:o.map(({value:e,label:t,attributes:r})=>(0,y.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{u.push(e)},onKeyDown:c,onClick:i,...r,className:(0,a.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function k({lazy:e,children:t,selectedValue:n}){const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===n);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:s.map((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function j(e){const t=m(e);return(0,y.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(k,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(t))}}}]); \ No newline at end of file diff --git a/assets/js/ca8e7b55.318cc4bc.js b/assets/js/ca8e7b55.318cc4bc.js new file mode 100644 index 0000000000..6546c271ab --- /dev/null +++ b/assets/js/ca8e7b55.318cc4bc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3867],{138:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.11.2/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/0.11.2/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/must_be_api.md","tags":[],"version":"0.11.2","frontMatter":{"id":"must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.11.2/rules/unused"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.11.2/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cb00cd0b.c5dbd77c.js b/assets/js/cb00cd0b.c5dbd77c.js new file mode 100644 index 0000000000..5bf168c77b --- /dev/null +++ b/assets/js/cb00cd0b.c5dbd77c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3263],{62768:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>i});const o=JSON.parse('{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"","source":"@site/versioned_docs/version-0.10.0/rules/kapt/custom_kapt_matchers.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.10.0/rules/kapt/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/kapt/custom_kapt_matchers.md","tags":[],"version":"0.10.0","frontMatter":{"id":"custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Rules","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_dependencies"}}');var r=s(23420),n=s(65404);const a={id:"custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},c=void 0,u={},i=[];function l(e){return(0,r.jsx)(r.Fragment,{})}function p(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l()}},65404:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>c});var o=s(36672);const r={},n=o.createContext(r);function a(e){const t=o.useContext(n);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cb4f58ba.46f93e40.js b/assets/js/cb4f58ba.46f93e40.js new file mode 100644 index 0000000000..1cd104b56b --- /dev/null +++ b/assets/js/cb4f58ba.46f93e40.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4074],{65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var o=t(36672);const s={},a=o.createContext(s);function i(e){const n=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:n},e.children)}},75686:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","source":"@site/versioned_docs/version-0.11.2/ci_workflow.md","sourceDirName":".","slug":"/ci-workflow","permalink":"/ModuleCheck/docs/0.11.2/ci-workflow","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/ci_workflow.md","tags":[],"version":"0.11.2","frontMatter":{"id":"ci-workflow","sidebar_label":"CI Workflow","title":"CI Workflow"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.11.2/configuration"},"next":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.11.2/rules/unused"}}');var s=t(23420),a=t(65404);const i={id:"ci-workflow",sidebar_label:"CI Workflow",title:"CI Workflow"},l=void 0,r={},c=[{value:"Using CI over git hooks",id:"using-ci-over-git-hooks",level:3},{value:"Example Flow chart",id:"example-flow-chart",level:3},{value:"Example GitHub Action",id:"example-github-action",level:3}];function h(e){const n={a:"a",code:"code",h3:"h3",mermaid:"mermaid",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and\nautomatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to\napply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run.\nThis is similar to a git pre-commit hook, except the work is delegated to a build server."}),"\n",(0,s.jsx)(n.h3,{id:"using-ci-over-git-hooks",children:"Using CI over git hooks"}),"\n",(0,s.jsx)(n.p,{children:"The traditional method for applying changes automatically is with a git hook, such as pre-commit or\npre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor\ndeveloper experience. With a CI task, the execution is done automatically and asynchronously, while\nthe developer is already moving on to something else."}),"\n",(0,s.jsx)(n.p,{children:"A git hook also technically doesn't guarantee that a task is executed before code is checked in to a\nmain branch, since there's no guarantee that a hook is enabled. With CI, the task will output a\nstatus check. If a branch protection rule is enabled, that status check can be required. This will\nthen guarantee that the task has run (successfully) before any code is checked in to the protected\nbranch."}),"\n",(0,s.jsx)(n.h3,{id:"example-flow-chart",children:"Example Flow chart"}),"\n",(0,s.jsxs)(n.p,{children:['This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The\ncancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an\n"optimistic" workflow, in that it assumes that the ',(0,s.jsx)(n.code,{children:"modulecheck"})," task will not generate changes\nwhich would trigger a restart."]}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n Start(CI Start):::good --\x3e mGraph\n Start --\x3e tGraph\n Start --\x3e cGraph\n\n subgraph mGraph [runner 1]\n direction TB\n ModuleCheck(./gradlew moduleCheck):::code --\x3e ChangesModuleCheck\n ChangesModuleCheck{Graph changes?} --- yesM[yes]:::lineLabel --\x3e CommitModuleCheck(Commit changes and push):::stop\n ChangesModuleCheck --- noM[no]:::lineLabel --\x3e EndModuleCheck("#10003;"):::good\n end\n\n subgraph tGraph [runner 2]\n direction TB\n Tests(./gradlew test):::code --\x3e EndTests("#10003;"):::good\n end\n\n subgraph cGraph [runner 3]\n direction TB\n Cancel(Cancel previous CI run):::code\n end\n\n style tGraph fill:#EEE,stroke:#000\n style cGraph fill:#EEE,stroke:#000\n style mGraph fill:#EEE,stroke:#000\n\n classDef good fill:#0B0,stroke:#000\n classDef stop fill:#E33,stroke:#000\n\n classDef code fill:#AAA,stroke:#000\n\n style ChangesModuleCheck fill:#CD1,stroke:#000\n\n classDef lineLabel fill:#FFF,stroke:#FFF'}),"\n",(0,s.jsx)(n.h3,{id:"example-github-action",children:"Example GitHub Action"}),"\n",(0,s.jsxs)(n.p,{children:["Here's an Action which will run ModuleCheck, then commit any changes\nusing ",(0,s.jsx)(n.a,{href:"https://github.com/stefanzweifel/git-auto-commit-action",children:"Stefanzweifel's auto-commit"}),". This\nrequires a personal access token secret, or the commit step will fail."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:"title=.github/workflows.module-check.yml",children:"name: ModuleCheck\n\non:\n pull_request:\n\njobs:\n\n cancel-stale-jobs:\n name: Cancel stale jobs\n runs-on: ubuntu-latest\n\n steps:\n # cancel previous jobs\n - name: Cancel Previous Runs\n uses: styfle/cancel-workflow-action@0.9.0\n env:\n GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'\n\n ModuleCheck:\n name: ModuleCheck\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n # Must use a personal access token in order to commit changes\n token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n # performs tree-shaking on the Gradle dependency graph\n - name: modulecheck\n run: ./gradlew modulecheck --no-daemon\n\n # If ModuleCheck generated changes, commit and push those changes.\n # If there are no changes, then this is a no-op.\n - name: commit changes\n uses: stefanzweifel/git-auto-commit-action@v4\n with:\n commit_message: Apply ModuleCheck changes\n commit_options: '--no-verify --signoff'\n\n tests:\n name: Unit tests\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n with:\n ref: ${{ github.event.pull_request.head.ref }}\n token: ${{ secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n - name: Set up JDK\n uses : actions/setup-java@v2\n with :\n distribution : 'temurin'\n java-version : '14'\n\n - name: all tests\n run: ./gradlew test --no-daemon\n"})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/assets/js/cbb899e4.d2075ad6.js b/assets/js/cbb899e4.d2075ad6.js new file mode 100644 index 0000000000..b4494f25a3 --- /dev/null +++ b/assets/js/cbb899e4.d2075ad6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5235],{58118:(e,t,n)=>{n.d(t,{A:()=>o});n(36672);var r=n(13526);const a={tabItem:"tabItem_qogc"};var s=n(23420);function o({children:e,hidden:t,className:n}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,n),hidden:t,children:e})}},65404:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>u});var r=n(36672);const a={},s=r.createContext(a);function o(e){const t=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:t},e.children)}},65780:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(36672),a=n(13526),s=n(10452),o=n(85291),u=n(10914),l=n(41201),i=n(40622),c=n(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function f(e){const{values:t,children:n}=e;return(0,r.useMemo)(()=>{const e=t??function(e){return d(e).map(({props:{value:e,label:t,attributes:n,default:r}})=>({value:e,label:t,attributes:n,default:r}))}(n);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[t,n])}function p({value:e,tabValues:t}){return t.some(t=>t.value===e)}function h({queryString:e=!1,groupId:t}){const n=(0,o.W6)(),a=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,l.aZ)(a),(0,r.useCallback)(e=>{if(!a)return;const t=new URLSearchParams(n.location.search);t.set(a,e),n.replace({...n.location,search:t.toString()})},[a,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,s=f(e),[o,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:s})),[i,d]=h({queryString:n,groupId:a}),[m,b]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,a]=(0,c.Dv)(t);return[n,(0,r.useCallback)(e=>{t&&a.set(e)},[t,a])]}({groupId:a}),g=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,u.A)(()=>{g&&l(g)},[g]);return{selectedValue:o,selectValue:(0,r.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,s]),tabValues:s}}var b=n(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var y=n(23420);function v({className:e,block:t,selectedValue:n,selectValue:r,tabValues:o}){const u=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),i=e=>{const t=e.currentTarget,a=u.indexOf(t),s=o[a].value;s!==n&&(l(t),r(s))},c=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},e),children:o.map(({value:e,label:t,attributes:r})=>(0,y.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{u.push(e)},onKeyDown:c,onClick:i,...r,className:(0,a.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function k({lazy:e,children:t,selectedValue:n}){const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===n);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:s.map((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function j(e){const t=m(e);return(0,y.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(k,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(t))}},94266:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/docs/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/next/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/configuration.mdx","tags":[],"version":"current","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/next/"},"next":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/next/suppressing-findings"}}');var a=n(23420),s=n(65404),o=n(65780),u=n(58118);const l={id:"configuration",sidebar_label:"Configuration"},i=void 0,c={},d=[];function f(e){const t={code:"code",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(o.A,{children:[(0,a.jsx)(u.A,{value:"Kotlin",default:!0,children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-kotlin",metastring:"title = root/build.gradle.kts",children:'plugins {\n id("com.rickbusarow.module-check")\n}\n\nmoduleCheck {\n\n deleteUnused = true // default is false\n trace = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = setOf(":app")\n\n additionalCodeGenerators = listOf(\n modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n name = "My Processor",\n generatorMavenCoordinates = "my-project.codegen:processor",\n annotationNames = listOf(\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n )\n )\n )\n\n reports {\n checkstyle {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n}\n'})})}),(0,a.jsx)(u.A,{value:"Groovy",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-groovy",metastring:"title = root/build.gradle",children:'plugins {\n id \'com.rickbusarow.module-check\'\n}\n\nmoduleCheck {\n deleteUnused = true // default is false\n trace = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = [\':test:core-jvm\', \':test:core-android\']\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = [\':app\']\n\n additionalCodeGenerators = [\n new modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n \'My Processor\',\n \'my-project.codegen:processor\',\n [\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n ]\n )\n ]\n\n reports {\n checkstyle {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n it.enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n it.outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n\n}\n'})})})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}}}]); \ No newline at end of file diff --git a/assets/js/cbe609e8.3d5c44f1.js b/assets/js/cbe609e8.3d5c44f1.js new file mode 100644 index 0000000000..81c78b0ada --- /dev/null +++ b/assets/js/cbe609e8.3d5c44f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9991],{30094:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","source":"@site/docs/rules/overshot_dependency.md","sourceDirName":"rules","slug":"/rules/overshot_dependency","permalink":"/ModuleCheck/docs/next/rules/overshot_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/overshot_dependency.md","tags":[],"version":"current","frontMatter":{"id":"overshot_dependency","slug":"/rules/overshot_dependency","title":"Overshot Dependency","sidebar_label":"Overshot Dependency"},"sidebar":"Docs","previous":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/next/rules/redundant_dependency"},"next":{"title":"Project Depth","permalink":"/ModuleCheck/docs/next/rules/project_depth"}}');var d=t(23420),o=t(65404);const r={id:"overshot_dependency",slug:"/rules/overshot_dependency",title:"Overshot Dependency",sidebar_label:"Overshot Dependency"},c=void 0,i={},l=[];function u(e){const n={code:"code",em:"em",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.p,{children:"Finds project dependencies which aren't used by the declaring configuration, but are used by a\ndependent, downstream configuration."}),"\n",(0,d.jsxs)(n.p,{children:["For instance, assume that ",(0,d.jsx)(n.code,{children:":moduleB"})," declares an ",(0,d.jsx)(n.code,{children:"implementation"})," dependency upon ",(0,d.jsx)(n.code,{children:":moduleA"}),"."]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n implementation(project(":moduleA"))\n}\n'})}),"\n",(0,d.jsxs)(n.p,{children:["If ",(0,d.jsx)(n.code,{children:":moduleB"})," doesn't actually use ",(0,d.jsx)(n.code,{children:":moduleA"})," in its ",(0,d.jsx)(n.code,{children:"main"})," source, but it ",(0,d.jsx)(n.em,{children:"does"})," use it in ",(0,d.jsx)(n.code,{children:"test"}),"\nsource, it's an ",(0,d.jsx)(n.strong,{children:"overshot dependency"}),". The declaration should be changed to\nuse ",(0,d.jsx)(n.code,{children:"testImplementation"}),":"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-kotlin",metastring:'title="moduleB/build.gradle.kts"',children:'dependencies {\n testImplementation(project(":moduleA"))\n}\n'})})]})}function a(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(u,{...e})}):u(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(36672);const d={},o=s.createContext(d);function r(e){const n=s.useContext(o);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cc640607.57d48479.js b/assets/js/cc640607.57d48479.js new file mode 100644 index 0000000000..9ab70003f1 --- /dev/null +++ b/assets/js/cc640607.57d48479.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5050],{10850:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>r,default:()=>c,frontMatter:()=>d,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","source":"@site/versioned_docs/version-0.12.2/rules/android/unused_kotlin_android_extensions.md","sourceDirName":"rules/android","slug":"/rules/unused_kotlin_android_extensions","permalink":"/ModuleCheck/docs/0.12.2/rules/unused_kotlin_android_extensions","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.2/rules/android/unused_kotlin_android_extensions.md","tags":[],"version":"0.12.2","frontMatter":{"id":"unused_kotlin_android_extensions","slug":"/rules/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","sidebar_label":"Unused Kotlin Android Extensions"},"sidebar":"Docs","previous":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.2/rules/disable_view_binding"}}');var t=s(23420),i=s(65404);const d={id:"unused_kotlin_android_extensions",slug:"/rules/unused_kotlin_android_extensions",title:"Unused Kotlin Android Extensions",sidebar_label:"Unused Kotlin Android Extensions"},r=void 0,u={},l=[];function a(e){const n={p:"p",...(0,i.R)(),...e.components};return(0,t.jsx)(n.p,{children:"Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any\nsynthetic imports or deprecated @Parcelize annotation"})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var o=s(36672);const t={},i=o.createContext(t);function d(e){const n=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cd2aa5fe.11b87afe.js b/assets/js/cd2aa5fe.11b87afe.js new file mode 100644 index 0000000000..6fed4aa078 --- /dev/null +++ b/assets/js/cd2aa5fe.11b87afe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2376],{35358:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.12.3/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sort_plugins","permalink":"/ModuleCheck/docs/0.12.3/rules/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/sorting/sort_plugins.md","tags":[],"version":"0.12.3","frontMatter":{"id":"sort_plugins","slug":"/rules/sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.3/rules/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.3/rules/disable_android_resources"}}');var r=t(23420),o=t(65404);const i={id:"sort_plugins",slug:"/rules/sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(d,{...e})}):d()}},65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const r={},o=n.createContext(r);function i(e){const s=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cd6f4c97.d2deb129.js b/assets/js/cd6f4c97.d2deb129.js new file mode 100644 index 0000000000..93cde31a8a --- /dev/null +++ b/assets/js/cd6f4c97.d2deb129.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1381],{36641:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.12.3/rules/compiler/unused_kapt_processor.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/compiler/unused_kapt_processor.md","tags":[],"version":"0.12.3","frontMatter":{"id":"unused_kapt_processor","slug":"/rules/unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/0.12.3/rules/use_anvil_factory_generation"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_plugin"}}');var t=s(23420),r=s(65404);const i={id:"unused_kapt_processor",slug:"/rules/unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,c={},d=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>a});var o=s(36672);const t={},r=o.createContext(t);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ce0be35a.84e31a7d.js b/assets/js/ce0be35a.84e31a7d.js new file mode 100644 index 0000000000..e0f22f33c7 --- /dev/null +++ b/assets/js/ce0be35a.84e31a7d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9303],{65404:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>i});var s=n(36672);const o={},u=s.createContext(o);function r(e){const t=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:t},e.children)}},70400:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","source":"@site/versioned_docs/version-0.12.0/rules/kapt/unused_kapt_plugin.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/kapt/unused_kapt_plugin.md","tags":[],"version":"0.12.0","frontMatter":{"id":"unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.0/rules/kapt/custom_kapt_matchers"}}');var o=n(23420),u=n(65404);const r={id:"unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,a={},p=[];function c(e){const t={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(t.p,{children:["If there are no ",(0,o.jsx)(t.code,{children:"kapt"}),"/",(0,o.jsx)(t.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in\napplying the ",(0,o.jsx)(t.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function d(e={}){const{wrapper:t}={...(0,u.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/assets/js/d05f0a7d.ebcd5ef9.js b/assets/js/d05f0a7d.ebcd5ef9.js new file mode 100644 index 0000000000..85d02ee54d --- /dev/null +++ b/assets/js/d05f0a7d.ebcd5ef9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9230],{18678:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>d,contentTitle:()=>u,default:()=>a,frontMatter:()=>c,metadata:()=>n,toc:()=>i});const n=JSON.parse('{"id":"rules/overshot","title":"Overshot Dependency","description":"","source":"@site/versioned_docs/version-0.10.0/rules/overshot.md","sourceDirName":"rules","slug":"/rules/overshot","permalink":"/ModuleCheck/docs/0.10.0/rules/overshot","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/overshot.md","tags":[],"version":"0.10.0","frontMatter":{"id":"overshot","title":"Overshot Dependency","sidebar_label":"Overshot Dependency"},"sidebar":"Rules","previous":{"title":"Redundant Dependency","permalink":"/ModuleCheck/docs/0.10.0/rules/redundant"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_processor"}}');var s=o(23420),r=o(65404);const c={id:"overshot",title:"Overshot Dependency",sidebar_label:"Overshot Dependency"},u=void 0,d={},i=[];function l(e){return(0,s.jsx)(s.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l()}},65404:(e,t,o)=>{o.d(t,{R:()=>c,x:()=>u});var n=o(36672);const s={},r=n.createContext(s);function c(e){const t=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d1cdaf24.c592a7cf.js b/assets/js/d1cdaf24.c592a7cf.js new file mode 100644 index 0000000000..6b09fb4b5f --- /dev/null +++ b/assets/js/d1cdaf24.c592a7cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4996],{68800:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.12.3","label":"0.12.3","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.12.3","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.12.3/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.12.3/configuration","docId":"configuration","unlisted":false},{"type":"link","label":"Suppressing Findings","href":"/ModuleCheck/docs/0.12.3/suppressing-findings","docId":"suppressing-findings","unlisted":false},{"type":"link","label":"CI Workflow","href":"/ModuleCheck/docs/0.12.3/ci-workflow","docId":"ci-workflow","unlisted":false},{"type":"category","label":"Rules","collapsed":false,"items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.12.3/rules/unused_dependency","docId":"rules/unused_dependency","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/0.12.3/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/0.12.3/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"type":"link","label":"Redundant Dependency","href":"/ModuleCheck/docs/0.12.3/rules/redundant_dependency","docId":"rules/redundant_dependency","unlisted":false},{"type":"link","label":"Overshot Dependency","href":"/ModuleCheck/docs/0.12.3/rules/overshot_dependency","docId":"rules/overshot_dependency","unlisted":false},{"type":"link","label":"Project Depth","href":"/ModuleCheck/docs/0.12.3/rules/project_depth","docId":"rules/project_depth","unlisted":false},{"type":"category","label":"Compiler","collapsed":false,"items":[{"type":"link","label":"Could Use Anvil Factory Generation","href":"/ModuleCheck/docs/0.12.3/rules/use_anvil_factory_generation","docId":"rules/compiler/use_anvil_factory_generation","unlisted":false},{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_processor","docId":"rules/compiler/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_plugin","docId":"rules/compiler/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.12.3/rules/custom_kapt_matchers","docId":"rules/compiler/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"type":"category","label":"Sorting","collapsed":false,"items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.12.3/rules/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.12.3/rules/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"type":"category","label":"Android","collapsed":false,"items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.12.3/rules/disable_android_resources","docId":"rules/android/disable_android_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.12.3/rules/disable_view_binding","docId":"rules/android/disable_view_binding","unlisted":false},{"type":"link","label":"Unused Kotlin Android Extensions","href":"/ModuleCheck/docs/0.12.3/rules/unused_kotlin_android_extensions","docId":"rules/android/unused_kotlin_android_extensions","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"ci-workflow":{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","sidebar":"Docs"},"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"Dependencies","sidebar":"Docs"},"rules/android/disable_android_resources":{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_view_binding":{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/android/unused_kotlin_android_extensions":{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","sidebar":"Docs"},"rules/compiler/custom_kapt_matchers":{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/compiler/unused_kapt_plugin":{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","sidebar":"Docs"},"rules/compiler/unused_kapt_processor":{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/compiler/use_anvil_factory_generation":{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/overshot_dependency":{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","sidebar":"Docs"},"rules/project_depth":{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","sidebar":"Docs"},"rules/redundant_dependency":{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused_dependency":{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"},"suppressing-findings":{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/d2866892.4829f6b3.js b/assets/js/d2866892.4829f6b3.js new file mode 100644 index 0000000000..9d39472b84 --- /dev/null +++ b/assets/js/d2866892.4829f6b3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1900],{5168:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.12.1/rules/compiler/unused_kapt_processor.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/compiler/unused_kapt_processor.md","tags":[],"version":"0.12.1","frontMatter":{"id":"unused_kapt_processor","slug":"/rules/unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/0.12.1/rules/use_anvil_factory_generation"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_plugin"}}');var t=s(23420),r=s(65404);const i={id:"unused_kapt_processor",slug:"/rules/unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,c={},d=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>a});var o=s(36672);const t={},r=o.createContext(t);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d425c21a.2155e74e.js b/assets/js/d425c21a.2155e74e.js new file mode 100644 index 0000000000..0844024e50 --- /dev/null +++ b/assets/js/d425c21a.2155e74e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5673],{64533:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>d,toc:()=>i});const d=JSON.parse('{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.12.4/rules/unused_dependency.md","sourceDirName":"rules","slug":"/rules/unused_dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/unused_dependency.md","tags":[],"version":"0.12.4","frontMatter":{"id":"unused_dependency","slug":"/rules/unused_dependency","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.4/ci-workflow"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/0.12.4/rules/must_be_api"}}');var t=s(23420),u=s(65404);const o={id:"unused_dependency",slug:"/rules/unused_dependency",title:"Unused Dependency",sidebar_label:"Unused Dependency"},c=void 0,r={},i=[];function l(e){const n={p:"p",...(0,u.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,t.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>c});var d=s(36672);const t={},u=d.createContext(t);function o(e){const n=d.useContext(u);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),d.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d4bc87de.eb870da7.js b/assets/js/d4bc87de.eb870da7.js new file mode 100644 index 0000000000..8111530726 --- /dev/null +++ b/assets/js/d4bc87de.eb870da7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3832],{86646:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.11.2","label":"0.11.2","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.11.2","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.11.2/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.11.2/configuration","docId":"configuration","unlisted":false},{"type":"link","label":"CI Workflow","href":"/ModuleCheck/docs/0.11.2/ci-workflow","docId":"ci-workflow","unlisted":false},{"type":"category","label":"Rules","collapsed":false,"items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.11.2/rules/unused","docId":"rules/unused","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/0.11.2/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/0.11.2/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"type":"category","label":"compiler","collapsed":false,"items":[{"type":"link","label":"Could Use Anvil Factory","href":"/ModuleCheck/docs/0.11.2/rules/compiler/could_use_anvil_factory","docId":"rules/compiler/could_use_anvil_factory","unlisted":false}],"collapsible":true},{"type":"category","label":"Kapt","collapsed":false,"items":[{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_processor","docId":"rules/kapt/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_plugin","docId":"rules/kapt/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.11.2/rules/kapt/custom_kapt_matchers","docId":"rules/kapt/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"type":"category","label":"Sorting","collapsed":false,"items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"type":"category","label":"Android","collapsed":false,"items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.11.2/rules/android/disable_resources","docId":"rules/android/disable_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.11.2/rules/android/disable_viewbinding","docId":"rules/android/disable_viewbinding","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"ci-workflow":{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","sidebar":"Docs"},"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.","sidebar":"Docs"},"rules/android/disable_resources":{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_viewbinding":{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/compiler/could_use_anvil_factory":{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/kapt/custom_kapt_matchers":{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/kapt/unused_kapt_plugin":{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in applying","sidebar":"Docs"},"rules/kapt/unused_kapt_processor":{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused":{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/d51efe31.8cb4c6e2.js b/assets/js/d51efe31.8cb4c6e2.js new file mode 100644 index 0000000000..7b5f663a78 --- /dev/null +++ b/assets/js/d51efe31.8cb4c6e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[183],{27923:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>u,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"quickstart","title":"Quick Start","description":"Dependencies","source":"@site/versioned_docs/version-0.12.3/quickstart.mdx","sourceDirName":".","slug":"/","permalink":"/ModuleCheck/docs/0.12.3/","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/quickstart.mdx","tags":[],"version":"0.12.3","frontMatter":{"id":"quickstart","title":"Quick Start","sidebar_label":"Quick Start","slug":"/"},"sidebar":"Docs","next":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.3/configuration"}}');var a=r(23420),l=r(65404),s=r(65780),o=r(58118);const i={id:"quickstart",title:"Quick Start",sidebar_label:"Quick Start",slug:"/"},c=void 0,u={},d=[{value:"Dependencies",id:"dependencies",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Configuration",id:"configuration",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",p:"p",pre:"pre",...(0,l.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,a.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// settings.gradle.kts\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven("https://oss.sonatype.org/content/repositories/snapshots/")\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",children:'// top-level build.gradle.kts\n\nplugins {\n id("com.rickbusarow.module-check") version "0.12.3"\n}\n'})})]}),(0,a.jsxs)(o.A,{value:"Groovy",children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:'// settings.gradle\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n // Add for SNAPSHOT builds\n maven {\n url "https://oss.sonatype.org/content/repositories/snapshots"\n }\n }\n}\n'})}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",children:"// top-level build.gradle\n\nplugins {\n id 'com.rickbusarow.module-check' version '0.12.3'\n}\n"})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,a.jsx)(n.p,{children:"all checks"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheck\n"})}),"\n",(0,a.jsx)(n.p,{children:"all checks with auto-correct"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"check sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPlugins moduleCheckSortDependencies\n"})}),"\n",(0,a.jsx)(n.p,{children:"apply sorting"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto\n"})}),"\n",(0,a.jsx)(n.p,{children:"report depths of each module"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckDepths\n"})}),"\n",(0,a.jsx)(n.p,{children:"generate (module-only) dependency graphs"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"./gradlew moduleCheckGraphs\n"})}),"\n",(0,a.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,a.jsxs)(n.p,{children:["See ",(0,a.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.3/configuration",children:"configuration"})," for a full list of options."]}),"\n",(0,a.jsxs)(s.A,{children:[(0,a.jsxs)(o.A,{value:"Kotlin",default:!0,children:[(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})}),(0,a.jsx)(n.p,{children:"--or--"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})]}),(0,a.jsx)(o.A,{value:"Groovy",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'moduleCheck {\n\n alwaysIgnore.set(setOf(":app"))\n\n checks {\n redundant.set(false)\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},58118:(e,n,r)=>{r.d(n,{A:()=>s});r(36672);var t=r(13526);const a={tabItem:"tabItem_qogc"};var l=r(23420);function s({children:e,hidden:n,className:r}){return(0,l.jsx)("div",{role:"tabpanel",className:(0,t.A)(a.tabItem,r),hidden:n,children:e})}},65404:(e,n,r)=>{r.d(n,{R:()=>s,x:()=>o});var t=r(36672);const a={},l=t.createContext(a);function s(e){const n=t.useContext(l);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),t.createElement(l.Provider,{value:n},e.children)}},65780:(e,n,r)=>{r.d(n,{A:()=>y});var t=r(36672),a=r(13526),l=r(10452),s=r(85291),o=r(10914),i=r(41201),c=r(40622),u=r(42925);function d(e){return t.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,t.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:r,default:t}})=>({value:e,label:n,attributes:r,default:t}))}(r);return function(e){const n=(0,c.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,r])}function p({value:e,tabValues:n}){return n.some(n=>n.value===e)}function g({queryString:e=!1,groupId:n}){const r=(0,s.W6)(),a=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,i.aZ)(a),(0,t.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})},[a,r])]}function m(e){const{defaultValue:n,queryString:r=!1,groupId:a}=e,l=h(e),[s,i]=(0,t.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=n.find(e=>e.default)??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:l})),[c,d]=g({queryString:r,groupId:a}),[m,f]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,a]=(0,u.Dv)(n);return[r,(0,t.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),b=(()=>{const e=c??m;return p({value:e,tabValues:l})?e:null})();(0,o.A)(()=>{b&&i(b)},[b]);return{selectedValue:s,selectValue:(0,t.useCallback)(e=>{if(!p({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)},[d,f,l]),tabValues:l}}var f=r(74682);const b={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=r(23420);function x({className:e,block:n,selectedValue:r,selectValue:t,tabValues:s}){const o=[],{blockElementScrollPositionUntilNextRender:i}=(0,l.a_)(),c=e=>{const n=e.currentTarget,a=o.indexOf(n),l=s[a].value;l!==r&&(i(n),t(l))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const r=o.indexOf(e.currentTarget)+1;n=o[r]??o[0];break}case"ArrowLeft":{const r=o.indexOf(e.currentTarget)-1;n=o[r]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:s.map(({value:e,label:n,attributes:t})=>(0,v.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{o.push(e)},onKeyDown:u,onClick:c,...t,className:(0,a.A)("tabs__item",b.tabItem,t?.className,{"tabs__item--active":r===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:r}){const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=l.find(e=>e.props.value===r);return e?(0,t.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:l.map((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==r}))})}function j(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,v.jsx)(x,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function y(e){const n=(0,f.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/d69a7b0b.901336c8.js b/assets/js/d69a7b0b.901336c8.js new file mode 100644 index 0000000000..902a808f42 --- /dev/null +++ b/assets/js/d69a7b0b.901336c8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4410],{6137:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","source":"@site/versioned_docs/version-0.12.3/rules/project_depth.md","sourceDirName":"rules","slug":"/rules/project_depth","permalink":"/ModuleCheck/docs/0.12.3/rules/project_depth","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/project_depth.md","tags":[],"version":"0.12.3","frontMatter":{"id":"project_depth","slug":"/rules/project_depth","title":"Project Depth","sidebar_label":"Project Depth"},"sidebar":"Docs","previous":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/overshot_dependency"},"next":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/0.12.3/rules/use_anvil_factory_generation"}}');var r=l(23420),t=l(65404);const d={id:"project_depth",slug:"/rules/project_depth",title:"Project Depth",sidebar_label:"Project Depth"},i=void 0,c={},o=[{value:"Dependencies and Build Concurrency",id:"dependencies-and-build-concurrency",level:3},{value:"Depth",id:"depth",level:3}];function h(e){const n={a:"a",code:"code",em:"em",h3:"h3",hr:"hr",li:"li",mermaid:"mermaid",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"TL;DR - Low depth values mean faster builds and better all-around scalability."}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["It's often useful to think of module dependencies as a directed tree\nor ",(0,r.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Directed_acyclic_graph",children:"directed acyclic graph"}),". If a module is a\nnode, then each module dependency is a child node, and the dependencies of those dependencies are\ngrand-child nodes."]}),"\n",(0,r.jsxs)(n.p,{children:["This is especially useful when thinking about ",(0,r.jsx)(n.strong,{children:"build performance"}),", because the parent-child\nrelationship is clear: ",(0,r.jsx)(n.em,{children:"child nodes must build before parent nodes"}),"."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(:app):::depth2\n\n screen1(:screen-1):::depth1\n screen2(:screen-2):::depth1\n\n lib1(:lib-1):::depth0\n lib2(:lib-2):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n\n screen1 --\x3e lib1\n screen1 --\x3e lib2\n screen2 --\x3e lib2"}),"\n",(0,r.jsx)(n.p,{children:"In the above example,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," must be built before ",(0,r.jsx)(n.code,{children:":screen-1"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-2"})," must be build before ",(0,r.jsx)(n.code,{children:":screen-2"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":screen-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," must be built before ",(0,r.jsx)(n.code,{children:":app"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build\nbefore their parents."}),"\n",(0,r.jsx)(n.h3,{id:"dependencies-and-build-concurrency",children:"Dependencies and Build Concurrency"}),"\n",(0,r.jsx)(n.p,{children:"Individual module builds are always done single-threaded, but multiple modules may build in parallel\nso long as no module in the set depends upon another module in that set. In the above graph,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":scren-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of parallel module builds is determined by the structure of the dependency graph\nand the number of available processor cores on the machine which is performing the build."}),"\n",(0,r.jsx)(n.h3,{id:"depth",children:"Depth"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Depth"})," refers to the maximum number of edges between a module and each of its leaf nodes in the\nproject dependency graph."]}),"\n",(0,r.jsx)(n.p,{children:"Low depth values indicate a shallow or flat project structure with loose (or no) coupling between\nmodules. In a full build, these projects scale well with hardware upgrades because they're able to\nbuild all those independent modules in parallel."}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n subgraph sg [A shallow graph]\n direction TB\n\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 2):::depth2\n\n screen1(depth: 1):::depth1\n screen2(depth: 1):::depth1\n screen3(depth: 1):::depth1\n screen4(depth: 1):::depth1\n\n lib1(depth: 0):::depth0\n lib2(depth: 0):::depth0\n lib3(depth: 0):::depth0\n lib4(depth: 0):::depth0\n lib5(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e lib1\n screen1 --\x3e lib4\n\n screen2 --\x3e lib1\n screen2 --\x3e lib3\n screen2 --\x3e lib4\n\n screen3 --\x3e lib2\n screen3 --\x3e lib3\n screen3 --\x3e lib4\n\n screen4 --\x3e lib3\n screen4 --\x3e lib5\n\n end\n\n style sg opacity:0.0\n"}),"\n",(0,r.jsxs)(n.p,{children:['On the other hand, "deep" projects do not offer many opportunities for parallelization. They have\nproject dependencies which must be built ',(0,r.jsx)(n.em,{children:"sequentially"}),". They also perform poorly in incremental\nbuilds, because a single change to even a mid-level module invalidates cached builds for half of the\nproject."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n style sg opacity:0.0\n subgraph sg [A deep graph]\n direction TB\n\n classDef depth6 fill:#800,stroke:#000,color:#FFF\n classDef depth5 fill:#A50,stroke:#000,color:#FFF\n classDef depth4 fill:#C0B,stroke:#000,color:#000\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 6):::depth6\n\n screen1(depth: 5):::depth5\n screen2(depth: 5):::depth5\n\n screen3(depth: 4):::depth4\n screen4(depth: 4):::depth4\n\n lib1(depth: 3):::depth3\n lib2(depth: 3):::depth3\n\n lib3(depth: 2):::depth2\n lib4(depth: 2):::depth2\n\n lib5(depth: 1):::depth1\n\n lib6(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e screen3\n screen1 --\x3e screen4\n\n screen2 --\x3e screen4\n\n screen3 --\x3e lib1\n screen3 --\x3e lib2\n\n screen4 --\x3e lib1\n screen4 --\x3e lib4\n\n lib1 --\x3e lib3\n lib1 --\x3e lib4\n\n lib2 --\x3e lib3\n\n lib3 --\x3e lib5\n lib4 --\x3e lib5\n\n lib5 --\x3e lib6\n\n end\n"})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},65404:(e,n,l)=>{l.d(n,{R:()=>d,x:()=>i});var s=l(36672);const r={},t=s.createContext(r);function d(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d968e4da.5e728ea5.js b/assets/js/d968e4da.5e728ea5.js new file mode 100644 index 0000000000..f133ae159b --- /dev/null +++ b/assets/js/d968e4da.5e728ea5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5326],{65404:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var d=i(36672);const s={},t=d.createContext(s);function o(e){const n=d.useContext(t);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),d.createElement(t.Provider,{value:n},e.children)}},65452:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>d,toc:()=>a});const d=JSON.parse('{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.12.4/rules/android/disable_view_binding.md","sourceDirName":"rules/android","slug":"/rules/disable_view_binding","permalink":"/ModuleCheck/docs/0.12.4/rules/disable_view_binding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/android/disable_view_binding.md","tags":[],"version":"0.12.4","frontMatter":{"id":"disable_view_binding","slug":"/rules/disable_view_binding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.4/rules/disable_android_resources"},"next":{"title":"Unused Kotlin Android Extensions","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_kotlin_android_extensions"}}');var s=i(23420),t=i(65404);const o={id:"disable_view_binding",slug:"/rules/disable_view_binding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,l={},a=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/assets/js/dc7f0b30.6d808dd0.js b/assets/js/dc7f0b30.6d808dd0.js new file mode 100644 index 0000000000..14cad64b1a --- /dev/null +++ b/assets/js/dc7f0b30.6d808dd0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8296],{38200:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.11.3/rules/android/disable_resources.md","sourceDirName":"rules/android","slug":"/rules/android/disable_resources","permalink":"/ModuleCheck/docs/0.11.3/rules/android/disable_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/android/disable_resources.md","tags":[],"version":"0.11.3","frontMatter":{"id":"disable_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.11.3/rules/android/disable_viewbinding"}}');var o=r(23420),d=r(65404);const i={id:"disable_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,c={},a=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/de297161.ef4d0adf.js b/assets/js/de297161.ef4d0adf.js new file mode 100644 index 0000000000..b31d2e04fa --- /dev/null +++ b/assets/js/de297161.ef4d0adf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1658],{63148:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","source":"@site/versioned_docs/version-0.12.5/rules/compiler/unused_kapt_processor.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_processor","permalink":"/ModuleCheck/docs/rules/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/compiler/unused_kapt_processor.md","tags":[],"version":"0.12.5","frontMatter":{"id":"unused_kapt_processor","slug":"/rules/unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Docs","previous":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/rules/use_anvil_factory_generation"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/rules/unused_kapt_plugin"}}');var t=s(23420),r=s(65404);const i={id:"unused_kapt_processor",slug:"/rules/unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},a=void 0,c={},d=[];function l(e){const n={code:"code",em:"em",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Annotation processors act upon a defined set of annotations. If an annotation processor is\nsufficiently popular and its api is stable, then it's relatively simple to define a list of\nannotations to search for. For instance, Dagger looks for the following annotations:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"javax.inject.Inject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Binds"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Module"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoMap"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.multibindings.IntoSet"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.BindsInstance"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.Component"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.Assisted"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedInject"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"dagger.assisted.AssistedFactory"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.ContributesTo"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeComponent"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"com.squareup.anvil.annotations.MergeSubomponent"})}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If a module has the Dagger ",(0,t.jsx)(n.code,{children:"kapt"})," dependency, and that module ",(0,t.jsx)(n.em,{children:"does not"})," have one of the above\nannotations somewhere, then Dagger isn't actually doing anything and can be removed."]}),"\n",(0,t.jsx)(n.p,{children:"This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of\nannotations for any processor may change. If this rule gives a false-positive finding because of a\nnew annotation, please open an issue and/or pull request."})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>a});var o=s(36672);const t={},r=o.createContext(t);function i(e){const n=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/de406b5e.777d18f0.js b/assets/js/de406b5e.777d18f0.js new file mode 100644 index 0000000000..86ff434fb4 --- /dev/null +++ b/assets/js/de406b5e.777d18f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6364],{9930:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.11.2/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_plugins","permalink":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/sorting/sort_plugins.md","tags":[],"version":"0.11.2","frontMatter":{"id":"sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.11.2/rules/android/disable_resources"}}');var o=t(23420),r=t(65404);const i={id:"sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(d,{...e})}):d()}},65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const o={},r=n.createContext(o);function i(e){const s=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/df248b36.3e0b0a95.js b/assets/js/df248b36.3e0b0a95.js new file mode 100644 index 0000000000..226458cf93 --- /dev/null +++ b/assets/js/df248b36.3e0b0a95.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1686],{65404:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>i});var s=n(36672);const o={},u=s.createContext(o);function r(e){const t=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:t},e.children)}},84629:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in applying","source":"@site/versioned_docs/version-0.11.1/rules/kapt/unused_kapt_plugin.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.1/rules/kapt/unused_kapt_plugin.md","tags":[],"version":"0.11.1","frontMatter":{"id":"unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.11.1/rules/kapt/custom_kapt_matchers"}}');var o=n(23420),u=n(65404);const r={id:"unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,a={},p=[];function c(e){const t={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(t.p,{children:["If there are no ",(0,o.jsx)(t.code,{children:"kapt"}),"/",(0,o.jsx)(t.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in applying\nthe ",(0,o.jsx)(t.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function l(e={}){const{wrapper:t}={...(0,u.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/assets/js/e0474f93.a9c558dc.js b/assets/js/e0474f93.a9c558dc.js new file mode 100644 index 0000000000..237612550f --- /dev/null +++ b/assets/js/e0474f93.a9c558dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8861],{5919:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>a,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.12.5/rules/android/disable_android_resources.md","sourceDirName":"rules/android","slug":"/rules/disable_android_resources","permalink":"/ModuleCheck/docs/rules/disable_android_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/android/disable_android_resources.md","tags":[],"version":"0.12.5","frontMatter":{"id":"disable_android_resources","slug":"/rules/disable_android_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/rules/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/rules/disable_view_binding"}}');var o=r(23420),d=r(65404);const i={id:"disable_android_resources",slug:"/rules/disable_android_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,a={},c=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e0a1aa17.e9aa4f41.js b/assets/js/e0a1aa17.e9aa4f41.js new file mode 100644 index 0000000000..0467d48fa2 --- /dev/null +++ b/assets/js/e0a1aa17.e9aa4f41.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2304],{12069:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>t,toc:()=>o});const t=JSON.parse('{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","source":"@site/versioned_docs/version-0.12.0/rules/redundant_dependency.md","sourceDirName":"rules","slug":"/rules/redundant_dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/redundant_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.0/rules/redundant_dependency.md","tags":[],"version":"0.12.0","frontMatter":{"id":"redundant_dependency","title":"Redundant Dependency","sidebar_label":"Redundant Dependency"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/inherited_dependency"},"next":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.0/rules/overshot_dependency"}}');var i=d(23420),s=d(65404);const r={id:"redundant_dependency",title:"Redundant Dependency",sidebar_label:"Redundant Dependency"},a=void 0,l={},o=[];function c(e){const n={a:"a",admonition:"admonition",code:"code",mermaid:"mermaid",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.admonition,{type:"caution",children:[(0,i.jsx)(n.p,{children:"This rule creates a brittle dependency graph, because some necessary dependencies are only provided\ntransitively by other dependencies. Any manual changes to dependencies can have unexpected\nconsequences downstream."}),(0,i.jsxs)(n.p,{children:["This rule is ",(0,i.jsx)(n.strong,{children:"not recommended"})," and disabled by default, but it's still available for those who\nwant to keep their build files as small as possible."]})]}),"\n",(0,i.jsxs)(n.p,{children:["Finds project dependencies which are declared as ",(0,i.jsx)(n.code,{children:"api"})," in other dependency projects, but also\ndeclared in the current project. These dependencies can be removed without actually breaking the\nbuild, since they're still provided by an upstream dependency through the ",(0,i.jsx)(n.code,{children:"api"})," configuration."]}),"\n",(0,i.jsx)(n.mermaid,{value:"flowchart LR\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n subgraph sg_redundant [A redundant graph]\n direction TB\n\n lib1_redundant(:lib-1):::depth0\n lib2_redundant(:lib-2):::depth1\n app_redundant(:app):::depth2\n\n app_redundant --\x3e |api| lib1_redundant\n app_redundant --\x3e |api| lib2_redundant\n\n lib2_redundant --\x3e |api| lib1_redundant\n end\n\n subgraph sg_minimalist [A graph with no redundancy]\n direction TB\n\n lib1_minimalist(:lib-1):::depth0\n lib2_minimalist(:lib-2):::depth1\n app_minimalist(:app):::depth2\n\n app_minimalist --\x3e |api| lib2_minimalist\n\n lib2_minimalist --\x3e |api| lib1_minimalist\n end\n\n style sg_redundant fill:#C66,stroke:#000,color:#FFF\n style sg_minimalist fill:#696,stroke:#000,color:#FFF\n\n sg_redundant --\x3e |./gradlew moduleCheck| sg_minimalist\n"}),"\n",(0,i.jsxs)(n.p,{children:["This is the opposite of the ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.0/rules/inherited_dependency",children:"inherited dependency"})," rule, which ensures a stable graph by explicitly\ndeclaring each dependency. ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.0/rules/inherited_dependency",children:"Inherited dependency"})," is enabled by default, and is the recommended\napproach. Both rules may not be enabled at the same time."]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>r,x:()=>a});var t=d(36672);const i={},s=t.createContext(i);function r(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e12d7f74.b33a1f87.js b/assets/js/e12d7f74.b33a1f87.js new file mode 100644 index 0000000000..2f3a3ef7cb --- /dev/null +++ b/assets/js/e12d7f74.b33a1f87.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9369],{62659:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","source":"@site/versioned_docs/version-0.12.4/rules/redundant_dependency.md","sourceDirName":"rules","slug":"/rules/redundant_dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/redundant_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/redundant_dependency.md","tags":[],"version":"0.12.4","frontMatter":{"id":"redundant_dependency","slug":"/rules/redundant_dependency","title":"Redundant Dependency","sidebar_label":"Redundant Dependency"},"sidebar":"Docs","previous":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/inherited_dependency"},"next":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/overshot_dependency"}}');var i=d(23420),s=d(65404);const r={id:"redundant_dependency",slug:"/rules/redundant_dependency",title:"Redundant Dependency",sidebar_label:"Redundant Dependency"},a=void 0,l={},c=[];function o(e){const n={a:"a",admonition:"admonition",code:"code",mermaid:"mermaid",p:"p",strong:"strong",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.admonition,{type:"caution",children:[(0,i.jsx)(n.p,{children:"This rule creates a brittle dependency graph, because some necessary dependencies are only provided\ntransitively by other dependencies. Any manual changes to dependencies can have unexpected\nconsequences downstream."}),(0,i.jsxs)(n.p,{children:["This rule is ",(0,i.jsx)(n.strong,{children:"not recommended"})," and disabled by default, but it's still available for those who\nwant to keep their build files as small as possible."]})]}),"\n",(0,i.jsxs)(n.p,{children:["Finds project dependencies which are declared as ",(0,i.jsx)(n.code,{children:"api"})," in other dependency projects, but also\ndeclared in the current project. These dependencies can be removed without actually breaking the\nbuild, since they're still provided by an upstream dependency through the ",(0,i.jsx)(n.code,{children:"api"})," configuration."]}),"\n",(0,i.jsx)(n.mermaid,{value:"flowchart LR\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n subgraph sg_redundant [A redundant graph]\n direction TB\n\n lib1_redundant(:lib-1):::depth0\n lib2_redundant(:lib-2):::depth1\n app_redundant(:app):::depth2\n\n app_redundant --\x3e |api| lib1_redundant\n app_redundant --\x3e |api| lib2_redundant\n\n lib2_redundant --\x3e |api| lib1_redundant\n end\n\n subgraph sg_minimalist [A graph with no redundancy]\n direction TB\n\n lib1_minimalist(:lib-1):::depth0\n lib2_minimalist(:lib-2):::depth1\n app_minimalist(:app):::depth2\n\n app_minimalist --\x3e |api| lib2_minimalist\n\n lib2_minimalist --\x3e |api| lib1_minimalist\n end\n\n style sg_redundant fill:#C66,stroke:#000,color:#FFF\n style sg_minimalist fill:#696,stroke:#000,color:#FFF\n\n sg_redundant --\x3e |./gradlew moduleCheck| sg_minimalist\n"}),"\n",(0,i.jsxs)(n.p,{children:["This is the opposite of the ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.4/rules/inherited_dependency",children:"inherited dependency"})," rule, which ensures a stable graph by explicitly\ndeclaring each dependency. ",(0,i.jsx)(n.a,{href:"/ModuleCheck/docs/0.12.4/rules/inherited_dependency",children:"Inherited dependency"})," is enabled by default, and is the recommended\napproach. Both rules may not be enabled at the same time."]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}},65404:(e,n,d)=>{d.d(n,{R:()=>r,x:()=>a});var t=d(36672);const i={},s=t.createContext(i);function r(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e4603b0e.eb25e36b.js b/assets/js/e4603b0e.eb25e36b.js new file mode 100644 index 0000000000..364e9f80cd --- /dev/null +++ b/assets/js/e4603b0e.eb25e36b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[3108],{22513:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>u,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"configuration","title":"configuration","description":"<Tabs groupId=\\"language\\"","source":"@site/versioned_docs/version-0.12.5/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/configuration.mdx","tags":[],"version":"0.12.5","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/"},"next":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/suppressing-findings"}}');var a=n(23420),o=n(65404),s=n(65780),l=n(58118);const u={id:"configuration",sidebar_label:"Configuration"},i=void 0,c={},d=[];function f(e){const t={code:"code",pre:"pre",...(0,o.R)(),...e.components};return(0,a.jsxs)(s.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,a.jsx)(l.A,{value:"Kotlin",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'plugins {\n id("com.rickbusarow.module-check") version "0.13.0-SNAPSHOT"\n}\n\nmoduleCheck {\n\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = setOf(":app")\n\n additionalCodeGenerators = listOf(\n modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n name = "My Processor",\n generatorMavenCoordinates = "my-project.codegen:processor",\n annotationNames = listOf(\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n )\n )\n )\n\n reports {\n checkstyle {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n}\n'})})}),(0,a.jsx)(l.A,{value:"Groovy",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'plugins {\n id \'com.rickbusarow.module-check\' version \'0.13.0-SNAPSHOT\'\n}\n\nmoduleCheck {\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = [\':test:core-jvm\', \':test:core-android\']\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = [\':app\']\n\n additionalCodeGenerators = [\n new modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n \'My Processor\',\n \'my-project.codegen:processor\',\n [\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n ]\n )\n ]\n\n reports {\n checkstyle {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n it.enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n it.outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n\n}\n'})})})]})}function p(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}},58118:(e,t,n)=>{n.d(t,{A:()=>s});n(36672);var r=n(13526);const a={tabItem:"tabItem_qogc"};var o=n(23420);function s({children:e,hidden:t,className:n}){return(0,o.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,n),hidden:t,children:e})}},65404:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>l});var r=n(36672);const a={},o=r.createContext(a);function s(e){const t=r.useContext(o);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),r.createElement(o.Provider,{value:t},e.children)}},65780:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(36672),a=n(13526),o=n(10452),s=n(85291),l=n(10914),u=n(41201),i=n(40622),c=n(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function f(e){const{values:t,children:n}=e;return(0,r.useMemo)(()=>{const e=t??function(e){return d(e).map(({props:{value:e,label:t,attributes:n,default:r}})=>({value:e,label:t,attributes:n,default:r}))}(n);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[t,n])}function p({value:e,tabValues:t}){return t.some(t=>t.value===e)}function h({queryString:e=!1,groupId:t}){const n=(0,s.W6)(),a=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,u.aZ)(a),(0,r.useCallback)(e=>{if(!a)return;const t=new URLSearchParams(n.location.search);t.set(a,e),n.replace({...n.location,search:t.toString()})},[a,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=f(e),[s,u]=(0,r.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o})),[i,d]=h({queryString:n,groupId:a}),[m,b]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,a]=(0,c.Dv)(t);return[n,(0,r.useCallback)(e=>{t&&a.set(e)},[t,a])]}({groupId:a}),g=(()=>{const e=i??m;return p({value:e,tabValues:o})?e:null})();(0,l.A)(()=>{g&&u(g)},[g]);return{selectedValue:s,selectValue:(0,r.useCallback)(e=>{if(!p({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);u(e),d(e),b(e)},[d,b,o]),tabValues:o}}var b=n(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var y=n(23420);function v({className:e,block:t,selectedValue:n,selectValue:r,tabValues:s}){const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,o.a_)(),i=e=>{const t=e.currentTarget,a=l.indexOf(t),o=s[a].value;o!==n&&(u(t),r(o))},c=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},e),children:s.map(({value:e,label:t,attributes:r})=>(0,y.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{l.push(e)},onKeyDown:c,onClick:i,...r,className:(0,a.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function k({lazy:e,children:t,selectedValue:n}){const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=o.find(e=>e.props.value===n);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:o.map((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function j(e){const t=m(e);return(0,y.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(k,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(t))}}}]); \ No newline at end of file diff --git a/assets/js/e480558e.6da81ca1.js b/assets/js/e480558e.6da81ca1.js new file mode 100644 index 0000000000..8dc1d44262 --- /dev/null +++ b/assets/js/e480558e.6da81ca1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7107],{65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>i});var s=t(36672);const o={},u=s.createContext(o);function r(e){const n=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:n},e.children)}},78397:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","source":"@site/versioned_docs/version-0.12.1/rules/compiler/unused_kapt_plugin.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/compiler/unused_kapt_plugin.md","tags":[],"version":"0.12.1","frontMatter":{"id":"unused_kapt_plugin","slug":"/rules/unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.1/rules/custom_kapt_matchers"}}');var o=t(23420),u=t(65404);const r={id:"unused_kapt_plugin",slug:"/rules/unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,l={},c=[];function p(e){const n={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(n.p,{children:["If there are no ",(0,o.jsx)(n.code,{children:"kapt"}),"/",(0,o.jsx)(n.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in\napplying the ",(0,o.jsx)(n.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function d(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/e4d3d2e1.0520673c.js b/assets/js/e4d3d2e1.0520673c.js new file mode 100644 index 0000000000..9b14feb0fd --- /dev/null +++ b/assets/js/e4d3d2e1.0520673c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1647],{65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}},79013:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.11.0/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/0.11.0/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/must_be_api.md","tags":[],"version":"0.11.0","frontMatter":{"id":"must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.11.0/rules/unused"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.11.0/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/e4f0c0bc.660ed59a.js b/assets/js/e4f0c0bc.660ed59a.js new file mode 100644 index 0000000000..572eab6e79 --- /dev/null +++ b/assets/js/e4f0c0bc.660ed59a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1338],{61546:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>d,toc:()=>i});const d=JSON.parse('{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","source":"@site/versioned_docs/version-0.12.5/rules/unused_dependency.md","sourceDirName":"rules","slug":"/rules/unused_dependency","permalink":"/ModuleCheck/docs/rules/unused_dependency","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/unused_dependency.md","tags":[],"version":"0.12.5","frontMatter":{"id":"unused_dependency","slug":"/rules/unused_dependency","title":"Unused Dependency","sidebar_label":"Unused Dependency"},"sidebar":"Docs","previous":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/ci-workflow"},"next":{"title":"Must Be Api","permalink":"/ModuleCheck/docs/rules/must_be_api"}}');var t=s(23420),u=s(65404);const o={id:"unused_dependency",slug:"/rules/unused_dependency",title:"Unused Dependency",sidebar_label:"Unused Dependency"},c=void 0,r={},i=[];function l(e){const n={p:"p",...(0,u.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead\nof building modules concurrently, Gradle must wait until the dependency module is built before\nbeginning to build the dependent one."}),"\n",(0,t.jsx)(n.p,{children:"ModuleCheck determines whether a dependency is unused by looking for all fully qualified names\ndeclared in its API, then searching the dependent module's code for references to any of those\nnames. If there are no references, the dependency module is considered to be unused."})]})}function a(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},65404:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>c});var d=s(36672);const t={},u=d.createContext(t);function o(e){const n=d.useContext(u);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),d.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e5eedb42.302cbb8a.js b/assets/js/e5eedb42.302cbb8a.js new file mode 100644 index 0000000000..7780447afc --- /dev/null +++ b/assets/js/e5eedb42.302cbb8a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9568],{59921:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>a,contentTitle:()=>t,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","source":"@site/versioned_docs/version-0.12.4/rules/android/disable_android_resources.md","sourceDirName":"rules/android","slug":"/rules/disable_android_resources","permalink":"/ModuleCheck/docs/0.12.4/rules/disable_android_resources","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/android/disable_android_resources.md","tags":[],"version":"0.12.4","frontMatter":{"id":"disable_android_resources","slug":"/rules/disable_android_resources","title":"Disable Android Resources","sidebar_label":"Disable Android Resources"},"sidebar":"Docs","previous":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.4/rules/sort_plugins"},"next":{"title":"Disable ViewBinding","permalink":"/ModuleCheck/docs/0.12.4/rules/disable_view_binding"}}');var o=r(23420),d=r(65404);const i={id:"disable_android_resources",slug:"/rules/disable_android_resources",title:"Disable Android Resources",sidebar_label:"Disable Android Resources"},t=void 0,a={},c=[];function l(e){const s={code:"code",p:"p",pre:"pre",...(0,d.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["If an Android module doesn't actually have any resources in the ",(0,o.jsx)(s.code,{children:"src/__/res"})," directory,\nthen ",(0,o.jsx)(s.code,{children:"android.buildFeatures.androidResources"})," can be disabled."]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n androidResource = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},65404:(e,s,r)=>{r.d(s,{R:()=>i,x:()=>t});var n=r(36672);const o={},d=n.createContext(o);function i(e){const s=n.useContext(d);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e69e4b95.4f61ca79.js b/assets/js/e69e4b95.4f61ca79.js new file mode 100644 index 0000000000..3a7dffa6cb --- /dev/null +++ b/assets/js/e69e4b95.4f61ca79.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2880],{55079:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>d,toc:()=>a});const d=JSON.parse('{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/docs/rules/android/disable_view_binding.md","sourceDirName":"rules/android","slug":"/rules/disable_view_binding","permalink":"/ModuleCheck/docs/next/rules/disable_view_binding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/docs/rules/android/disable_view_binding.md","tags":[],"version":"current","frontMatter":{"id":"disable_view_binding","slug":"/rules/disable_view_binding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/next/rules/disable_android_resources"},"next":{"title":"Unused Kotlin Android Extensions","permalink":"/ModuleCheck/docs/next/rules/unused_kotlin_android_extensions"}}');var s=i(23420),t=i(65404);const o={id:"disable_view_binding",slug:"/rules/disable_view_binding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,l={},a=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},65404:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var d=i(36672);const s={},t=d.createContext(s);function o(e){const n=d.useContext(t);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),d.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e7f8ca4b.e49f8895.js b/assets/js/e7f8ca4b.e49f8895.js new file mode 100644 index 0000000000..32d505efc1 --- /dev/null +++ b/assets/js/e7f8ca4b.e49f8895.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[575],{50353:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","source":"@site/versioned_docs/version-0.12.3/rules/sorting/sort_dependencies.md","sourceDirName":"rules/sorting","slug":"/rules/sort_dependencies","permalink":"/ModuleCheck/docs/0.12.3/rules/sort_dependencies","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/sorting/sort_dependencies.md","tags":[],"version":"0.12.3","frontMatter":{"id":"sort_dependencies","slug":"/rules/sort_dependencies","title":"Sort Dependencies","sidebar_label":"Sort Dependencies"},"sidebar":"Docs","previous":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.12.3/rules/custom_kapt_matchers"},"next":{"title":"Sort Plugins","permalink":"/ModuleCheck/docs/0.12.3/rules/sort_plugins"}}');var r=s(23420),o=s(65404);const i={id:"sort_dependencies",slug:"/rules/sort_dependencies",title:"Sort Dependencies",sidebar_label:"Sort Dependencies"},c=void 0,d={},u=[];function l(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l()}},65404:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>c});var n=s(36672);const r={},o=n.createContext(r);function i(e){const t=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e819ef22.1f7644ac.js b/assets/js/e819ef22.1f7644ac.js new file mode 100644 index 0000000000..c03cdb54b1 --- /dev/null +++ b/assets/js/e819ef22.1f7644ac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[247],{16240:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.12.0","label":"0.12.0","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.12.0","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.12.0/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.12.0/configuration","docId":"configuration","unlisted":false},{"type":"link","label":"Suppressing Findings","href":"/ModuleCheck/docs/0.12.0/suppressing-findings","docId":"suppressing-findings","unlisted":false},{"type":"link","label":"CI Workflow","href":"/ModuleCheck/docs/0.12.0/ci-workflow","docId":"ci-workflow","unlisted":false},{"type":"category","label":"Rules","collapsed":false,"items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.12.0/rules/unused","docId":"rules/unused","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/0.12.0/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/0.12.0/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"type":"link","label":"Redundant Dependency","href":"/ModuleCheck/docs/0.12.0/rules/redundant_dependency","docId":"rules/redundant_dependency","unlisted":false},{"type":"link","label":"Overshot Dependency","href":"/ModuleCheck/docs/0.12.0/rules/overshot_dependency","docId":"rules/overshot_dependency","unlisted":false},{"type":"link","label":"Depths","href":"/ModuleCheck/docs/0.12.0/rules/depths","docId":"rules/depths","unlisted":false},{"type":"category","label":"Compiler","collapsed":false,"items":[{"type":"link","label":"Could Use Anvil Factory","href":"/ModuleCheck/docs/0.12.0/rules/compiler/could_use_anvil_factory","docId":"rules/compiler/could_use_anvil_factory","unlisted":false}],"collapsible":true},{"type":"category","label":"Kapt","collapsed":false,"items":[{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_processor","docId":"rules/kapt/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_plugin","docId":"rules/kapt/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.12.0/rules/kapt/custom_kapt_matchers","docId":"rules/kapt/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"type":"category","label":"Sorting","collapsed":false,"items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"type":"category","label":"Android","collapsed":false,"items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.12.0/rules/android/disable_resources","docId":"rules/android/disable_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.12.0/rules/android/disable_viewbinding","docId":"rules/android/disable_viewbinding","unlisted":false},{"type":"link","label":"Unused Kotlin Android Extensions","href":"/ModuleCheck/docs/0.12.0/rules/android/unused_kotlin_android_extensions","docId":"rules/android/unused_kotlin_android_extensions","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"ci-workflow":{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","sidebar":"Docs"},"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"Dependencies","sidebar":"Docs"},"rules/android/disable_resources":{"id":"rules/android/disable_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_viewbinding":{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/android/unused_kotlin_android_extensions":{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","sidebar":"Docs"},"rules/compiler/could_use_anvil_factory":{"id":"rules/compiler/could_use_anvil_factory","title":"Could Use Anvil Factory","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/depths":{"id":"rules/depths","title":"Depths","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/kapt/custom_kapt_matchers":{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/kapt/unused_kapt_plugin":{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","sidebar":"Docs"},"rules/kapt/unused_kapt_processor":{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/overshot_dependency":{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","sidebar":"Docs"},"rules/redundant_dependency":{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused":{"id":"rules/unused","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"},"suppressing-findings":{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/e8303188.d53d0160.js b/assets/js/e8303188.d53d0160.js new file mode 100644 index 0000000000..51c7ee7de4 --- /dev/null +++ b/assets/js/e8303188.d53d0160.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6545],{65404:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>r});var d=i(36672);const s={},o=d.createContext(s);function t(e){const n=d.useContext(o);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),d.createElement(o.Provider,{value:n},e.children)}},89097:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>t,metadata:()=>d,toc:()=>l});const d=JSON.parse('{"id":"rules/android/disable_viewbinding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","source":"@site/versioned_docs/version-0.11.3/rules/android/disable_viewbinding.md","sourceDirName":"rules/android","slug":"/rules/android/disable_viewbinding","permalink":"/ModuleCheck/docs/0.11.3/rules/android/disable_viewbinding","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/android/disable_viewbinding.md","tags":[],"version":"0.11.3","frontMatter":{"id":"disable_viewbinding","title":"Disable ViewBinding","sidebar_label":"Disable ViewBinding"},"sidebar":"Docs","previous":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.11.3/rules/android/disable_resources"}}');var s=i(23420),o=i(65404);const t={id:"disable_viewbinding",title:"Disable ViewBinding",sidebar_label:"Disable ViewBinding"},r=void 0,a={},l=[];function c(e){const n={code:"code",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["If an Android module has ",(0,s.jsx)(n.code,{children:"viewBinding"})," enabled, but doesn't contribute any generated ",(0,s.jsx)(n.code,{children:"____Binding"}),"\nobjects from layout files which are actually used, then ",(0,s.jsx)(n.code,{children:"viewBinding"})," can be disabled."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",children:"android {\n buildFeatures {\n viewBinding = false\n }\n}\n"})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/assets/js/eadc19b4.06a401e4.js b/assets/js/eadc19b4.06a401e4.js new file mode 100644 index 0000000000..57b039c939 --- /dev/null +++ b/assets/js/eadc19b4.06a401e4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2946],{65404:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>c});var n=s(36672);const o={},r=n.createContext(o);function a(e){const t=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(r.Provider,{value:t},e.children)}},94064:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"rules/kapt/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.11.0/rules/kapt/custom_kapt_matchers.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.11.0/rules/kapt/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.0/rules/kapt/custom_kapt_matchers.md","tags":[],"version":"0.11.0","frontMatter":{"id":"custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_dependencies"}}');var o=s(23420),r=s(65404);const a={id:"custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},c=void 0,i={},u=[];function l(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,o.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/assets/js/eb10ccf4.83c5f603.js b/assets/js/eb10ccf4.83c5f603.js new file mode 100644 index 0000000000..5b63c5d74e --- /dev/null +++ b/assets/js/eb10ccf4.83c5f603.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[629],{49642:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.12.1/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sort_plugins","permalink":"/ModuleCheck/docs/0.12.1/rules/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/sorting/sort_plugins.md","tags":[],"version":"0.12.1","frontMatter":{"id":"sort_plugins","slug":"/rules/sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.1/rules/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.12.1/rules/disable_android_resources"}}');var r=t(23420),o=t(65404);const i={id:"sort_plugins",slug:"/rules/sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,r.jsx)(r.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(d,{...e})}):d()}},65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const r={},o=n.createContext(r);function i(e){const s=n.useContext(o);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/eb678835.77a07c94.js b/assets/js/eb678835.77a07c94.js new file mode 100644 index 0000000000..58199c8790 --- /dev/null +++ b/assets/js/eb678835.77a07c94.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7671],{5277:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","source":"@site/versioned_docs/version-0.12.5/rules/compiler/unused_kapt_plugin.md","sourceDirName":"rules/compiler","slug":"/rules/unused_kapt_plugin","permalink":"/ModuleCheck/docs/rules/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/compiler/unused_kapt_plugin.md","tags":[],"version":"0.12.5","frontMatter":{"id":"unused_kapt_plugin","slug":"/rules/unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/rules/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/rules/custom_kapt_matchers"}}');var o=t(23420),u=t(65404);const r={id:"unused_kapt_plugin",slug:"/rules/unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,l={},c=[];function p(e){const n={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(n.p,{children:["If there are no ",(0,o.jsx)(n.code,{children:"kapt"}),"/",(0,o.jsx)(n.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in\napplying the ",(0,o.jsx)(n.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function d(e={}){const{wrapper:n}={...(0,u.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}},65404:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>i});var s=t(36672);const o={},u=s.createContext(o);function r(e){const n=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ede96f45.13e02b5b.js b/assets/js/ede96f45.13e02b5b.js new file mode 100644 index 0000000000..0cf8de72c3 --- /dev/null +++ b/assets/js/ede96f45.13e02b5b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1007],{58118:(e,n,t)=>{t.d(n,{A:()=>i});t(36672);var r=t(13526);const s={tabItem:"tabItem_qogc"};var a=t(23420);function i({children:e,hidden:n,className:t}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,t),hidden:n,children:e})}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var r=t(36672);const s={},a=r.createContext(s);function i(e){const n=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(a.Provider,{value:n},e.children)}},65780:(e,n,t)=>{t.d(n,{A:()=>x});var r=t(36672),s=t(13526),a=t(10452),i=t(85291),o=t(10914),l=t(41201),u=t(40622),c=t(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,t])}function h({value:e,tabValues:n}){return n.some(n=>n.value===e)}function f({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,l.aZ)(s),(0,r.useCallback)(e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})},[s,t])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=p(e),[i,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!h({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:a})),[u,d]=f({queryString:t,groupId:s}),[m,b]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,c.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&s.set(e)},[n,s])]}({groupId:s}),g=(()=>{const e=u??m;return h({value:e,tabValues:a})?e:null})();(0,o.A)(()=>{g&&l(g)},[g]);return{selectedValue:i,selectValue:(0,r.useCallback)(e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,a]),tabValues:a}}var b=t(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=t(23420);function y({className:e,block:n,selectedValue:t,selectValue:r,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),u=e=>{const n=e.currentTarget,s=o.indexOf(n),a=i[s].value;a!==t&&(l(n),r(a))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:r})=>(0,v.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...r,className:(0,s.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:t}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function w(e){const n=m(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function x(e){const n=(0,b.A)();return(0,v.jsx)(w,{...e,children:d(e.children)},String(n))}},95838:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","source":"@site/versioned_docs/version-0.12.3/suppressing-findings.mdx","sourceDirName":".","slug":"/suppressing-findings","permalink":"/ModuleCheck/docs/0.12.3/suppressing-findings","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/suppressing-findings.mdx","tags":[],"version":"0.12.3","frontMatter":{"id":"suppressing-findings","title":"Suppressing Findings","sidebar_label":"Suppressing Findings"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/0.12.3/configuration"},"next":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/0.12.3/ci-workflow"}}');var s=t(23420),a=t(65404),i=t(65780),o=t(58118);const l={id:"suppressing-findings",title:"Suppressing Findings",sidebar_label:"Suppressing Findings"},u=void 0,c={},d=[];function p(e){const n={code:"code",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool."}),"\n",(0,s.jsxs)(n.p,{children:["The name of the check to disable can be found in the ",(0,s.jsx)(n.code,{children:"name"})," column of console output:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"> Task :moduleCheck\nModuleCheck found 3 issues in 6.157 seconds\n\n:app\n dependency name build file\n :fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):\n\n"})}),"\n",(0,s.jsxs)(i.A,{children:[(0,s.jsx)(o.A,{value:"Kotlin",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-kotlin",metastring:'title="build.gradle.kts"',children:'@Suppress("must-be-api") // don\'t switch anything to an api config\ndependencies {\n\n @Suppress("unused-dependency") // don\'t comment out or delete this dependency\n implementation(project(":unused-lib"))\n\n @Suppress("inherited-dependency") // don\'t add dependencies which are inherited from this library\n implementation(project(":leaky"))\n}\n'})})}),(0,s.jsx)(o.A,{value:"Groovy",children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-groovy",metastring:'title="build.gradle"',children:'// don\'t switch anything to an api config\n//noinspection must-be-api\ndependencies {\n\n // don\'t comment out or delete this dependency\n //noinspection unused-dependency\n implementation(project(":unused-lib"))\n\n // don\'t add dependencies which are inherited from this library\n //noinspection inherited-dependency\n implementation(project(":leaky"))\n}\n'})})})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}}}]); \ No newline at end of file diff --git a/assets/js/ef09bccd.a990ad2c.js b/assets/js/ef09bccd.a990ad2c.js new file mode 100644 index 0000000000..fb8d7afaef --- /dev/null +++ b/assets/js/ef09bccd.a990ad2c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6823],{17135:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.12.3/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/0.12.3/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.3/rules/must_be_api.md","tags":[],"version":"0.12.3","frontMatter":{"id":"must_be_api","slug":"/rules/must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/unused_dependency"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.3/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",slug:"/rules/must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ef46515e.198010c5.js b/assets/js/ef46515e.198010c5.js new file mode 100644 index 0000000000..03916585c9 --- /dev/null +++ b/assets/js/ef46515e.198010c5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[2852],{58114:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"configuration","title":"configuration","description":"","source":"@site/versioned_docs/version-0.12.1/configuration.mdx","sourceDirName":".","slug":"/configuration","permalink":"/ModuleCheck/docs/0.12.1/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/configuration.mdx","tags":[],"version":"0.12.1","frontMatter":{"id":"configuration","sidebar_label":"Configuration"},"sidebar":"Docs","previous":{"title":"Quick Start","permalink":"/ModuleCheck/docs/0.12.1/"},"next":{"title":"Suppressing Findings","permalink":"/ModuleCheck/docs/0.12.1/suppressing-findings"}}');var a=n(23420),s=n(65404),o=n(65780),u=n(58118);const l={id:"configuration",sidebar_label:"Configuration"},i=void 0,c={},d=[];function f(e){const t={code:"code",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(o.A,{children:[(0,a.jsx)(u.A,{value:"Kotlin",default:!0,children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-kotlin",metastring:'title="root/build.gradle.kts"',children:'plugins {\n id("com.rickbusarow.module-check") version "0.12.1"\n}\n\nmoduleCheck {\n\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = setOf(":app")\n\n additionalCodeGenerators = listOf(\n modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n name = "My Processor",\n generatorMavenCoordinates = "my-project.codegen:processor",\n annotationNames = listOf(\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n )\n )\n )\n\n reports {\n checkstyle {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n enabled = true // default is false\n outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n}\n'})})}),(0,a.jsx)(u.A,{value:"Groovy",children:(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-groovy",metastring:'title="root/build.gradle"',children:'plugins {\n id \'com.rickbusarow.module-check\' version \'0.12.1\'\n}\n\nmoduleCheck {\n deleteUnused = true // default is false\n\n checks {\n overShotDependency = true // default is true\n redundantDependency = false // default is false\n unusedDependency = true // default is true\n mustBeApi = true // default is true\n inheritedDependency = true // default is true\n sortDependencies = false // default is false\n sortPlugins = false // default is false\n unusedKapt = true // default is true\n anvilFactoryGeneration = true // default is true\n disableAndroidResources = false // default is false\n disableViewBinding = false // default is false\n unusedKotlinAndroidExtensions = false // default is false\n depths = false // default is false\n }\n\n // allow these modules to be declared as dependency anywhere,\n // regardless of whether they\'re used\n ignoreUnusedFinding = [\':test:core-jvm\', \':test:core-android\']\n\n // do not check the dependencies of these modules.\n // in this case, :app could declare any module it wants without issue\n doNotCheck = [\':app\']\n\n additionalCodeGenerators = [\n new modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(\n \'My Processor\',\n \'my-project.codegen:processor\',\n [\n "myproject.MyInject",\n "myproject.MyInject.Factory",\n "myproject.MyInjectParam",\n "myproject.MyInjectModule"\n ]\n )\n ]\n\n reports {\n checkstyle {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"\n }\n sarif {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"\n }\n depths {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"\n }\n graphs {\n it.enabled = true // default is false\n // The root directory of all generated graphs. If set, directories will be created\n // for each module, mirroring the structure of the project. If this property is null,\n // graphs will be created in the `build/reports/modulecheck/graphs/` relative\n // directory of each project.\n it.outputDir = "${project.buildDir}/reports/modulecheck/graphs"\n }\n text {\n it.enabled = true // default is false\n it.outputPath = "${project.buildDir}/reports/modulecheck/report.txt"\n }\n }\n\n}\n'})})})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}},58118:(e,t,n)=>{n.d(t,{A:()=>o});n(36672);var r=n(13526);const a={tabItem:"tabItem_qogc"};var s=n(23420);function o({children:e,hidden:t,className:n}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,n),hidden:t,children:e})}},65404:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>u});var r=n(36672);const a={},s=r.createContext(a);function o(e){const t=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:t},e.children)}},65780:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(36672),a=n(13526),s=n(10452),o=n(85291),u=n(10914),l=n(41201),i=n(40622),c=n(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function f(e){const{values:t,children:n}=e;return(0,r.useMemo)(()=>{const e=t??function(e){return d(e).map(({props:{value:e,label:t,attributes:n,default:r}})=>({value:e,label:t,attributes:n,default:r}))}(n);return function(e){const t=(0,i.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[t,n])}function p({value:e,tabValues:t}){return t.some(t=>t.value===e)}function h({queryString:e=!1,groupId:t}){const n=(0,o.W6)(),a=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,l.aZ)(a),(0,r.useCallback)(e=>{if(!a)return;const t=new URLSearchParams(n.location.search);t.set(a,e),n.replace({...n.location,search:t.toString()})},[a,n])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,s=f(e),[o,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!p({value:e,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:s})),[i,d]=h({queryString:n,groupId:a}),[m,b]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,a]=(0,c.Dv)(t);return[n,(0,r.useCallback)(e=>{t&&a.set(e)},[t,a])]}({groupId:a}),g=(()=>{const e=i??m;return p({value:e,tabValues:s})?e:null})();(0,u.A)(()=>{g&&l(g)},[g]);return{selectedValue:o,selectValue:(0,r.useCallback)(e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)},[d,b,s]),tabValues:s}}var b=n(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var y=n(23420);function v({className:e,block:t,selectedValue:n,selectValue:r,tabValues:o}){const u=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),i=e=>{const t=e.currentTarget,a=u.indexOf(t),s=o[a].value;s!==n&&(l(t),r(s))},c=e=>{let t=null;switch(e.key){case"Enter":i(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},e),children:o.map(({value:e,label:t,attributes:r})=>(0,y.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{u.push(e)},onKeyDown:c,onClick:i,...r,className:(0,a.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function k({lazy:e,children:t,selectedValue:n}){const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===n);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:s.map((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function j(e){const t=m(e);return(0,y.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(k,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(t))}}}]); \ No newline at end of file diff --git a/assets/js/f354998b.75ea0a3d.js b/assets/js/f354998b.75ea0a3d.js new file mode 100644 index 0000000000..bb1c3a37ff --- /dev/null +++ b/assets/js/f354998b.75ea0a3d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6673],{45247:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","source":"@site/versioned_docs/version-0.12.4/rules/project_depth.md","sourceDirName":"rules","slug":"/rules/project_depth","permalink":"/ModuleCheck/docs/0.12.4/rules/project_depth","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/project_depth.md","tags":[],"version":"0.12.4","frontMatter":{"id":"project_depth","slug":"/rules/project_depth","title":"Project Depth","sidebar_label":"Project Depth"},"sidebar":"Docs","previous":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.12.4/rules/overshot_dependency"},"next":{"title":"Could Use Anvil Factory Generation","permalink":"/ModuleCheck/docs/0.12.4/rules/use_anvil_factory_generation"}}');var r=l(23420),t=l(65404);const d={id:"project_depth",slug:"/rules/project_depth",title:"Project Depth",sidebar_label:"Project Depth"},i=void 0,c={},o=[{value:"Dependencies and Build Concurrency",id:"dependencies-and-build-concurrency",level:3},{value:"Depth",id:"depth",level:3}];function h(e){const n={a:"a",code:"code",em:"em",h3:"h3",hr:"hr",li:"li",mermaid:"mermaid",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"TL;DR - Low depth values mean faster builds and better all-around scalability."}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["It's often useful to think of module dependencies as a directed tree\nor ",(0,r.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Directed_acyclic_graph",children:"directed acyclic graph"}),". If a module is a\nnode, then each module dependency is a child node, and the dependencies of those dependencies are\ngrand-child nodes."]}),"\n",(0,r.jsxs)(n.p,{children:["This is especially useful when thinking about ",(0,r.jsx)(n.strong,{children:"build performance"}),", because the parent-child\nrelationship is clear: ",(0,r.jsx)(n.em,{children:"child nodes must build before parent nodes"}),"."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(:app):::depth2\n\n screen1(:screen-1):::depth1\n screen2(:screen-2):::depth1\n\n lib1(:lib-1):::depth0\n lib2(:lib-2):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n\n screen1 --\x3e lib1\n screen1 --\x3e lib2\n screen2 --\x3e lib2"}),"\n",(0,r.jsx)(n.p,{children:"In the above example,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," must be built before ",(0,r.jsx)(n.code,{children:":screen-1"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-2"})," must be build before ",(0,r.jsx)(n.code,{children:":screen-2"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":screen-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," must be built before ",(0,r.jsx)(n.code,{children:":app"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build\nbefore their parents."}),"\n",(0,r.jsx)(n.h3,{id:"dependencies-and-build-concurrency",children:"Dependencies and Build Concurrency"}),"\n",(0,r.jsx)(n.p,{children:"Individual module builds are always done single-threaded, but multiple modules may build in parallel\nso long as no module in the set depends upon another module in that set. In the above graph,"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":lib-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":lib-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:":scren-1"})," and ",(0,r.jsx)(n.code,{children:":screen-2"})," may build in parallel"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The maximum number of parallel module builds is determined by the structure of the dependency graph\nand the number of available processor cores on the machine which is performing the build."}),"\n",(0,r.jsx)(n.h3,{id:"depth",children:"Depth"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Depth"})," refers to the maximum number of edges between a module and each of its leaf nodes in the\nproject dependency graph."]}),"\n",(0,r.jsx)(n.p,{children:"Low depth values indicate a shallow or flat project structure with loose (or no) coupling between\nmodules. In a full build, these projects scale well with hardware upgrades because they're able to\nbuild all those independent modules in parallel."}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n subgraph sg [A shallow graph]\n direction TB\n\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 2):::depth2\n\n screen1(depth: 1):::depth1\n screen2(depth: 1):::depth1\n screen3(depth: 1):::depth1\n screen4(depth: 1):::depth1\n\n lib1(depth: 0):::depth0\n lib2(depth: 0):::depth0\n lib3(depth: 0):::depth0\n lib4(depth: 0):::depth0\n lib5(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e lib1\n screen1 --\x3e lib4\n\n screen2 --\x3e lib1\n screen2 --\x3e lib3\n screen2 --\x3e lib4\n\n screen3 --\x3e lib2\n screen3 --\x3e lib3\n screen3 --\x3e lib4\n\n screen4 --\x3e lib3\n screen4 --\x3e lib5\n\n end\n\n style sg opacity:0.0\n"}),"\n",(0,r.jsxs)(n.p,{children:['On the other hand, "deep" projects do not offer many opportunities for parallelization. They have\nproject dependencies which must be built ',(0,r.jsx)(n.em,{children:"sequentially"}),". They also perform poorly in incremental\nbuilds, because a single change to even a mid-level module invalidates cached builds for half of the\nproject."]}),"\n",(0,r.jsx)(n.mermaid,{value:"flowchart TB\n\n style sg opacity:0.0\n subgraph sg [A deep graph]\n direction TB\n\n classDef depth6 fill:#800,stroke:#000,color:#FFF\n classDef depth5 fill:#A50,stroke:#000,color:#FFF\n classDef depth4 fill:#C0B,stroke:#000,color:#000\n classDef depth3 fill:#F7B,stroke:#000,color:#000\n classDef depth2 fill:#BBF,stroke:#000,color:#000\n classDef depth1 fill:#B9B,stroke:#000,color:#000\n classDef depth0 fill:#FBB,stroke:#000,color:#000\n\n linkStyle default stroke-width:2px,fill:none,stroke:green;\n\n app(depth: 6):::depth6\n\n screen1(depth: 5):::depth5\n screen2(depth: 5):::depth5\n\n screen3(depth: 4):::depth4\n screen4(depth: 4):::depth4\n\n lib1(depth: 3):::depth3\n lib2(depth: 3):::depth3\n\n lib3(depth: 2):::depth2\n lib4(depth: 2):::depth2\n\n lib5(depth: 1):::depth1\n\n lib6(depth: 0):::depth0\n\n app --\x3e screen1\n app --\x3e screen2\n app --\x3e screen3\n app --\x3e screen4\n\n screen1 --\x3e screen3\n screen1 --\x3e screen4\n\n screen2 --\x3e screen4\n\n screen3 --\x3e lib1\n screen3 --\x3e lib2\n\n screen4 --\x3e lib1\n screen4 --\x3e lib4\n\n lib1 --\x3e lib3\n lib1 --\x3e lib4\n\n lib2 --\x3e lib3\n\n lib3 --\x3e lib5\n lib4 --\x3e lib5\n\n lib5 --\x3e lib6\n\n end\n"})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},65404:(e,n,l)=>{l.d(n,{R:()=>d,x:()=>i});var s=l(36672);const r={},t=s.createContext(r);function d(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f399bb6f.cf5dbf41.js b/assets/js/f399bb6f.cf5dbf41.js new file mode 100644 index 0000000000..0e23f9e505 --- /dev/null +++ b/assets/js/f399bb6f.cf5dbf41.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[6884],{62826:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"rules/kapt/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in applying","source":"@site/versioned_docs/version-0.11.2/rules/kapt/unused_kapt_plugin.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_plugin","permalink":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_plugin","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.2/rules/kapt/unused_kapt_plugin.md","tags":[],"version":"0.11.2","frontMatter":{"id":"unused_kapt_plugin","title":"Unused Kapt Plugin","sidebar_label":"Unused Kapt Plugin"},"sidebar":"Docs","previous":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_processor"},"next":{"title":"Custom Kapt Matchers","permalink":"/ModuleCheck/docs/0.11.2/rules/kapt/custom_kapt_matchers"}}');var o=n(23420),u=n(65404);const r={id:"unused_kapt_plugin",title:"Unused Kapt Plugin",sidebar_label:"Unused Kapt Plugin"},i=void 0,a={},p=[];function c(e){const t={code:"code",p:"p",...(0,u.R)(),...e.components};return(0,o.jsxs)(t.p,{children:["If there are no ",(0,o.jsx)(t.code,{children:"kapt"}),"/",(0,o.jsx)(t.code,{children:"kaptTest"}),"/etc. processor dependencies in a module, there's no point in applying\nthe ",(0,o.jsx)(t.code,{children:"org.jetbrains.kotlin.kapt"})," plugin."]})}function l(e={}){const{wrapper:t}={...(0,u.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},65404:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>i});var s=n(36672);const o={},u=s.createContext(o);function r(e){const t=s.useContext(u);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(u.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f435945d.f9006091.js b/assets/js/f435945d.f9006091.js new file mode 100644 index 0000000000..c5225b7475 --- /dev/null +++ b/assets/js/f435945d.f9006091.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[7509],{52767:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","source":"@site/versioned_docs/version-0.12.5/suppressing-findings.mdx","sourceDirName":".","slug":"/suppressing-findings","permalink":"/ModuleCheck/docs/suppressing-findings","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/suppressing-findings.mdx","tags":[],"version":"0.12.5","frontMatter":{"id":"suppressing-findings","title":"Suppressing Findings","sidebar_label":"Suppressing Findings"},"sidebar":"Docs","previous":{"title":"Configuration","permalink":"/ModuleCheck/docs/configuration"},"next":{"title":"CI Workflow","permalink":"/ModuleCheck/docs/ci-workflow"}}');var a=t(23420),s=t(65404),i=t(65780),o=t(58118);const l={id:"suppressing-findings",title:"Suppressing Findings",sidebar_label:"Suppressing Findings"},u=void 0,c={},d=[];function p(e){const n={code:"code",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool."}),"\n",(0,a.jsxs)(n.p,{children:["The name of the check to disable can be found in the ",(0,a.jsx)(n.code,{children:"name"})," column of console output:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"> Task :moduleCheck\nModuleCheck found 3 issues in 6.157 seconds\n\n:app\n dependency name build file\n :fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):\n :unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):\n\n"})}),"\n",(0,a.jsxs)(i.A,{groupId:"language",defaultValue:"Kotlin",values:[{label:"Kotlin",value:"Kotlin"},{label:"Groovy",value:"Groovy"}],children:[(0,a.jsx)(o.A,{value:"Kotlin",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-kotlin",metastring:'title="build.gradle.kts"',children:'@Suppress("must-be-api") // don\'t switch anything to an api config\ndependencies {\n\n @Suppress("unused-dependency") // don\'t comment out or delete this dependency\n implementation(project(":unused-lib"))\n\n @Suppress("inherited-dependency") // don\'t add dependencies which are inherited from this library\n implementation(project(":leaky"))\n}\n'})})}),(0,a.jsx)(o.A,{value:"Groovy",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-groovy",metastring:'title="build.gradle"',children:'// don\'t switch anything to an api config\n//noinspection must-be-api\ndependencies {\n\n // don\'t comment out or delete this dependency\n //noinspection unused-dependency\n implementation(project(":unused-lib"))\n\n // don\'t add dependencies which are inherited from this library\n //noinspection inherited-dependency\n implementation(project(":leaky"))\n}\n'})})})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}},58118:(e,n,t)=>{t.d(n,{A:()=>i});t(36672);var r=t(13526);const a={tabItem:"tabItem_qogc"};var s=t(23420);function i({children:e,hidden:n,className:t}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(a.tabItem,t),hidden:n,children:e})}},65404:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var r=t(36672);const a={},s=r.createContext(a);function i(e){const n=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),r.createElement(s.Provider,{value:n},e.children)}},65780:(e,n,t)=>{t.d(n,{A:()=>x});var r=t(36672),a=t(13526),s=t(10452),i=t(85291),o=t(10914),l=t(41201),u=t(40622),c=t(42925);function d(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)(()=>{const e=n??function(e){return d(e).map(({props:{value:e,label:n,attributes:t,default:r}})=>({value:e,label:n,attributes:t,default:r}))}(t);return function(e){const n=(0,u.XI)(e,(e,n)=>e.value===n.value);if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[n,t])}function h({value:e,tabValues:n}){return n.some(n=>n.value===e)}function f({queryString:e=!1,groupId:n}){const t=(0,i.W6)(),a=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,l.aZ)(a),(0,r.useCallback)(e=>{if(!a)return;const n=new URLSearchParams(t.location.search);n.set(a,e),t.replace({...t.location,search:n.toString()})},[a,t])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=p(e),[i,l]=(0,r.useState)(()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!h({value:e,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find(e=>e.default)??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:s})),[u,d]=f({queryString:t,groupId:a}),[b,m]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,a]=(0,c.Dv)(n);return[t,(0,r.useCallback)(e=>{n&&a.set(e)},[n,a])]}({groupId:a}),g=(()=>{const e=u??b;return h({value:e,tabValues:s})?e:null})();(0,o.A)(()=>{g&&l(g)},[g]);return{selectedValue:i,selectValue:(0,r.useCallback)(e=>{if(!h({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),m(e)},[d,m,s]),tabValues:s}}var m=t(74682);const g={tabList:"tabList_KWM2",tabItem:"tabItem_qGQB"};var v=t(23420);function y({className:e,block:n,selectedValue:t,selectValue:r,tabValues:i}){const o=[],{blockElementScrollPositionUntilNextRender:l}=(0,s.a_)(),u=e=>{const n=e.currentTarget,a=o.indexOf(n),s=i[a].value;s!==t&&(l(n),r(s))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":n},e),children:i.map(({value:e,label:n,attributes:r})=>(0,v.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{o.push(e)},onKeyDown:c,onClick:u,...r,className:(0,a.A)("tabs__item",g.tabItem,r?.className,{"tabs__item--active":t===e}),children:n??e},e))})}function k({lazy:e,children:n,selectedValue:t}){const s=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=s.find(e=>e.props.value===t);return e?(0,r.cloneElement)(e,{className:(0,a.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:s.map((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==t}))})}function w(e){const n=b(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...n,...e}),(0,v.jsx)(k,{...n,...e})]})}function x(e){const n=(0,m.A)();return(0,v.jsx)(w,{...e,children:d(e.children)},String(n))}}}]); \ No newline at end of file diff --git a/assets/js/f9546978.0ec94175.js b/assets/js/f9546978.0ec94175.js new file mode 100644 index 0000000000..8fa5ff250a --- /dev/null +++ b/assets/js/f9546978.0ec94175.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4025],{65404:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>a});var o=s(36672);const n={},r=o.createContext(n);function c(e){const t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:c(e.components),o.createElement(r.Provider,{value:t},e.children)}},97905:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>m,frontMatter:()=>c,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","source":"@site/versioned_docs/version-0.12.4/rules/compiler/custom_kapt_matchers.md","sourceDirName":"rules/compiler","slug":"/rules/custom_kapt_matchers","permalink":"/ModuleCheck/docs/0.12.4/rules/custom_kapt_matchers","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.4/rules/compiler/custom_kapt_matchers.md","tags":[],"version":"0.12.4","frontMatter":{"id":"custom_kapt_matchers","slug":"/rules/custom_kapt_matchers","title":"Custom Kapt Matchers","sidebar_label":"Custom Kapt Matchers"},"sidebar":"Docs","previous":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_plugin"},"next":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.12.4/rules/sort_dependencies"}}');var n=s(23420),r=s(65404);const c={id:"custom_kapt_matchers",slug:"/rules/custom_kapt_matchers",title:"Custom Kapt Matchers",sidebar_label:"Custom Kapt Matchers"},a=void 0,i={},l=[];function u(e){const t={code:"code",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"It's simple to add a custom matcher for an internal-use annotation processor."}),"\n",(0,n.jsx)(t.p,{children:"Just define a list of regex strings for all of the fully qualified names of its annotations."}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-kotlin",children:'moduleCheck {\n additionalKaptMatchers.set(\n listOf(\n modulecheck.api.KaptMatcher(\n name = "MyProcessor",\n processor = "my-project.codegen:processor",\n annotationImports = listOf(\n "myproject\\\\.\\\\*",\n "myproject\\\\.MyInject",\n "myproject\\\\.MyInject\\\\.Factory",\n "myproject\\\\.MyInjectParam",\n "myproject\\\\.MyInjectModule"\n )\n )\n )\n )\n}\n'})})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}}}]); \ No newline at end of file diff --git a/assets/js/f963ac8e.5450a01f.js b/assets/js/f963ac8e.5450a01f.js new file mode 100644 index 0000000000..ddea0ddc9b --- /dev/null +++ b/assets/js/f963ac8e.5450a01f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[9440],{37588:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","source":"@site/versioned_docs/version-0.12.5/rules/compiler/use_anvil_factory_generation.md","sourceDirName":"rules/compiler","slug":"/rules/use_anvil_factory_generation","permalink":"/ModuleCheck/docs/rules/use_anvil_factory_generation","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.5/rules/compiler/use_anvil_factory_generation.md","tags":[],"version":"0.12.5","frontMatter":{"id":"use_anvil_factory_generation","slug":"/rules/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","sidebar_label":"Could Use Anvil Factory Generation"},"sidebar":"Docs","previous":{"title":"Project Depth","permalink":"/ModuleCheck/docs/rules/project_depth"},"next":{"title":"Unused Kapt Processor","permalink":"/ModuleCheck/docs/rules/unused_kapt_processor"}}');var r=o(23420),i=o(65404);const s={id:"use_anvil_factory_generation",slug:"/rules/use_anvil_factory_generation",title:"Could Use Anvil Factory Generation",sidebar_label:"Could Use Anvil Factory Generation"},a=void 0,l={},c=[];function d(e){const n={a:"a",code:"code",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["Anvil's ",(0,r.jsx)(n.a,{href:"https://github.com/square/anvil#dagger-factory-generation",children:"factory generation"})," is faster\nthan Dagger's generation using Kapt. However, it doesn't support generating Components or\nSubcomponents, and it doesn't work in Java code."]}),"\n",(0,r.jsx)(n.p,{children:"This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation."}),"\n",(0,r.jsx)(n.p,{children:"Criteria:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Anvil plugin applied with a version greater than 2.0.11"}),"\n",(0,r.jsx)(n.li,{children:"Anvil's factory generation isn't already enabled (nothing to do in this case)"}),"\n",(0,r.jsxs)(n.li,{children:["No ",(0,r.jsx)(n.code,{children:"@MergeComponent"}),", ",(0,r.jsx)(n.code,{children:"@MergeSubcomponent"}),", ",(0,r.jsx)(n.code,{children:"@Component"})," or ",(0,r.jsx)(n.code,{children:"@Subcomponent"})," annotations"]}),"\n",(0,r.jsxs)(n.li,{children:["No Dagger annotations in ",(0,r.jsx)(n.code,{children:".java"})," files"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},65404:(e,n,o)=>{o.d(n,{R:()=>s,x:()=>a});var t=o(36672);const r={},i=t.createContext(r);function s(e){const n=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fb031341.984994de.js b/assets/js/fb031341.984994de.js new file mode 100644 index 0000000000..5b36803d0b --- /dev/null +++ b/assets/js/fb031341.984994de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5397],{19282:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>a,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","source":"@site/versioned_docs/version-0.11.3/rules/sorting/sort_plugins.md","sourceDirName":"rules/sorting","slug":"/rules/sorting/sort_plugins","permalink":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_plugins","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.11.3/rules/sorting/sort_plugins.md","tags":[],"version":"0.11.3","frontMatter":{"id":"sort_plugins","title":"Sort Plugins","sidebar_label":"Sort Plugins"},"sidebar":"Docs","previous":{"title":"Sort Dependencies","permalink":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_dependencies"},"next":{"title":"Disable Android Resources","permalink":"/ModuleCheck/docs/0.11.3/rules/android/disable_resources"}}');var o=t(23420),r=t(65404);const i={id:"sort_plugins",title:"Sort Plugins",sidebar_label:"Sort Plugins"},l=void 0,u={},c=[];function d(e){return(0,o.jsx)(o.Fragment,{})}function a(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(d,{...e})}):d()}},65404:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var n=t(36672);const o={},r=n.createContext(o);function i(e){const s=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fde89899.a1e49d64.js b/assets/js/fde89899.a1e49d64.js new file mode 100644 index 0000000000..b20067cb17 --- /dev/null +++ b/assets/js/fde89899.a1e49d64.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[4719],{36442:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"0.12.2","label":"0.12.2","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.12.2","isLast":false,"docsSidebars":{"Docs":[{"type":"link","label":"Quick Start","href":"/ModuleCheck/docs/0.12.2/","docId":"quickstart","unlisted":false},{"type":"link","label":"Configuration","href":"/ModuleCheck/docs/0.12.2/configuration","docId":"configuration","unlisted":false},{"type":"link","label":"Suppressing Findings","href":"/ModuleCheck/docs/0.12.2/suppressing-findings","docId":"suppressing-findings","unlisted":false},{"type":"link","label":"CI Workflow","href":"/ModuleCheck/docs/0.12.2/ci-workflow","docId":"ci-workflow","unlisted":false},{"type":"category","label":"Rules","collapsed":false,"items":[{"type":"link","label":"Unused Dependency","href":"/ModuleCheck/docs/0.12.2/rules/unused_dependency","docId":"rules/unused_dependency","unlisted":false},{"type":"link","label":"Must Be Api","href":"/ModuleCheck/docs/0.12.2/rules/must_be_api","docId":"rules/must_be_api","unlisted":false},{"type":"link","label":"Inherited Dependency","href":"/ModuleCheck/docs/0.12.2/rules/inherited_dependency","docId":"rules/inherited_dependency","unlisted":false},{"type":"link","label":"Redundant Dependency","href":"/ModuleCheck/docs/0.12.2/rules/redundant_dependency","docId":"rules/redundant_dependency","unlisted":false},{"type":"link","label":"Overshot Dependency","href":"/ModuleCheck/docs/0.12.2/rules/overshot_dependency","docId":"rules/overshot_dependency","unlisted":false},{"type":"link","label":"Project Depth","href":"/ModuleCheck/docs/0.12.2/rules/project_depth","docId":"rules/project_depth","unlisted":false},{"type":"category","label":"Compiler","collapsed":false,"items":[{"type":"link","label":"Could Use Anvil Factory Generation","href":"/ModuleCheck/docs/0.12.2/rules/use_anvil_factory_generation","docId":"rules/compiler/use_anvil_factory_generation","unlisted":false},{"type":"link","label":"Unused Kapt Processor","href":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_processor","docId":"rules/compiler/unused_kapt_processor","unlisted":false},{"type":"link","label":"Unused Kapt Plugin","href":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_plugin","docId":"rules/compiler/unused_kapt_plugin","unlisted":false},{"type":"link","label":"Custom Kapt Matchers","href":"/ModuleCheck/docs/0.12.2/rules/custom_kapt_matchers","docId":"rules/compiler/custom_kapt_matchers","unlisted":false}],"collapsible":true},{"type":"category","label":"Sorting","collapsed":false,"items":[{"type":"link","label":"Sort Dependencies","href":"/ModuleCheck/docs/0.12.2/rules/sort_dependencies","docId":"rules/sorting/sort_dependencies","unlisted":false},{"type":"link","label":"Sort Plugins","href":"/ModuleCheck/docs/0.12.2/rules/sort_plugins","docId":"rules/sorting/sort_plugins","unlisted":false}],"collapsible":true},{"type":"category","label":"Android","collapsed":false,"items":[{"type":"link","label":"Disable Android Resources","href":"/ModuleCheck/docs/0.12.2/rules/disable_android_resources","docId":"rules/android/disable_android_resources","unlisted":false},{"type":"link","label":"Disable ViewBinding","href":"/ModuleCheck/docs/0.12.2/rules/disable_view_binding","docId":"rules/android/disable_view_binding","unlisted":false},{"type":"link","label":"Unused Kotlin Android Extensions","href":"/ModuleCheck/docs/0.12.2/rules/unused_kotlin_android_extensions","docId":"rules/android/unused_kotlin_android_extensions","unlisted":false}],"collapsible":true}],"collapsible":true}]},"docs":{"ci-workflow":{"id":"ci-workflow","title":"CI Workflow","description":"ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and","sidebar":"Docs"},"configuration":{"id":"configuration","title":"configuration","description":"","sidebar":"Docs"},"quickstart":{"id":"quickstart","title":"Quick Start","description":"Dependencies","sidebar":"Docs"},"rules/android/disable_android_resources":{"id":"rules/android/disable_android_resources","title":"Disable Android Resources","description":"If an Android module doesn\'t actually have any resources in the src//res directory,","sidebar":"Docs"},"rules/android/disable_view_binding":{"id":"rules/android/disable_view_binding","title":"Disable ViewBinding","description":"If an Android module has viewBinding enabled, but doesn\'t contribute any generated Binding","sidebar":"Docs"},"rules/android/unused_kotlin_android_extensions":{"id":"rules/android/unused_kotlin_android_extensions","title":"Unused Kotlin Android Extensions","description":"Finds modules which have deprecated Kotlin Android Extensions enabled, but don\'t actually use any","sidebar":"Docs"},"rules/compiler/custom_kapt_matchers":{"id":"rules/compiler/custom_kapt_matchers","title":"Custom Kapt Matchers","description":"It\'s simple to add a custom matcher for an internal-use annotation processor.","sidebar":"Docs"},"rules/compiler/unused_kapt_plugin":{"id":"rules/compiler/unused_kapt_plugin","title":"Unused Kapt Plugin","description":"If there are no kapt/kaptTest/etc. processor dependencies in a module, there\'s no point in","sidebar":"Docs"},"rules/compiler/unused_kapt_processor":{"id":"rules/compiler/unused_kapt_processor","title":"Unused Kapt Processor","description":"Annotation processors act upon a defined set of annotations. If an annotation processor is","sidebar":"Docs"},"rules/compiler/use_anvil_factory_generation":{"id":"rules/compiler/use_anvil_factory_generation","title":"Could Use Anvil Factory Generation","description":"Anvil\'s factory generation is faster","sidebar":"Docs"},"rules/inherited_dependency":{"id":"rules/inherited_dependency","title":"Inherited Dependency","description":"Assume thatmoduleB, andmoduleC via","sidebar":"Docs"},"rules/must_be_api":{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","sidebar":"Docs"},"rules/overshot_dependency":{"id":"rules/overshot_dependency","title":"Overshot Dependency","description":"Finds project dependencies which aren\'t used by the declaring configuration, but are used by a","sidebar":"Docs"},"rules/project_depth":{"id":"rules/project_depth","title":"Project Depth","description":"TL;DR - Low depth values mean faster builds and better all-around scalability.","sidebar":"Docs"},"rules/redundant_dependency":{"id":"rules/redundant_dependency","title":"Redundant Dependency","description":"This rule creates a brittle dependency graph, because some necessary dependencies are only provided","sidebar":"Docs"},"rules/sorting/sort_dependencies":{"id":"rules/sorting/sort_dependencies","title":"Sort Dependencies","description":"","sidebar":"Docs"},"rules/sorting/sort_plugins":{"id":"rules/sorting/sort_plugins","title":"Sort Plugins","description":"","sidebar":"Docs"},"rules/unused_dependency":{"id":"rules/unused_dependency","title":"Unused Dependency","description":"Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead","sidebar":"Docs"},"suppressing-findings":{"id":"suppressing-findings","title":"Suppressing Findings","description":"You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.","sidebar":"Docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/ff366317.3645d264.js b/assets/js/ff366317.3645d264.js new file mode 100644 index 0000000000..243666a592 --- /dev/null +++ b/assets/js/ff366317.3645d264.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[1349],{65404:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>r});var t=n(36672);const o={},i=t.createContext(o);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),t.createElement(i.Provider,{value:s},e.children)}},86811:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"rules/must_be_api","title":"Must Be Api","description":"Dependencies are considered to be part of a module\'s public \\"ABI\\" if that module exposes some aspect","source":"@site/versioned_docs/version-0.12.1/rules/must_be_api.md","sourceDirName":"rules","slug":"/rules/must_be_api","permalink":"/ModuleCheck/docs/0.12.1/rules/must_be_api","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.12.1/rules/must_be_api.md","tags":[],"version":"0.12.1","frontMatter":{"id":"must_be_api","slug":"/rules/must_be_api","title":"Must Be Api","sidebar_label":"Must Be Api"},"sidebar":"Docs","previous":{"title":"Unused Dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/unused_dependency"},"next":{"title":"Inherited Dependency","permalink":"/ModuleCheck/docs/0.12.1/rules/inherited_dependency"}}');var o=n(23420),i=n(65404);const d={id:"must_be_api",slug:"/rules/must_be_api",title:"Must Be Api",sidebar_label:"Must Be Api"},r=void 0,c={},u=[];function a(e){const s={code:"code",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.p,{children:'Dependencies are considered to be part of a module\'s public "ABI" if that module exposes some aspect\nof the dependency in its own API.'}),"\n",(0,o.jsxs)(s.p,{children:["For instance, if a ",(0,o.jsx)(s.code,{children:":moduleA"})," extends a class/interface from ",(0,o.jsx)(s.code,{children:":moduleB"}),", or takes a type\nfrom ",(0,o.jsx)(s.code,{children:":moduleB"})," as a function parameter, then any consumer of ",(0,o.jsx)(s.code,{children:":moduleA"}),"'s API must also have a\ndependency upon ",(0,o.jsx)(s.code,{children:":moduleB"}),". In scenarios like this, the dependency module(s) should be declared\nusing Gradle's ",(0,o.jsx)(s.code,{children:"api"})," configuration."]})]})}function l(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/assets/js/ffeead90.0bf02578.js b/assets/js/ffeead90.0bf02578.js new file mode 100644 index 0000000000..758fe5a4b9 --- /dev/null +++ b/assets/js/ffeead90.0bf02578.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[5817],{65404:(e,s,t)=>{t.d(s,{R:()=>u,x:()=>c});var o=t(36672);const r={},n=o.createContext(r);function u(e){const s=o.useContext(n);return o.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:u(e.components),o.createElement(n.Provider,{value:s},e.children)}},74280:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>a,contentTitle:()=>c,default:()=>i,frontMatter:()=>u,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"rules/kapt/unused_kapt_processor","title":"Unused Kapt Processor","description":"","source":"@site/versioned_docs/version-0.10.0/rules/kapt/unused_kapt_processor.md","sourceDirName":"rules/kapt","slug":"/rules/kapt/unused_kapt_processor","permalink":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_processor","draft":false,"unlisted":false,"editUrl":"https://github.com/rbusarow/ModuleCheck/blob/main/website/versioned_docs/version-0.10.0/rules/kapt/unused_kapt_processor.md","tags":[],"version":"0.10.0","frontMatter":{"id":"unused_kapt_processor","title":"Unused Kapt Processor","sidebar_label":"Unused Kapt Processor"},"sidebar":"Rules","previous":{"title":"Overshot Dependency","permalink":"/ModuleCheck/docs/0.10.0/rules/overshot"},"next":{"title":"Unused Kapt Plugin","permalink":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_plugin"}}');var r=t(23420),n=t(65404);const u={id:"unused_kapt_processor",title:"Unused Kapt Processor",sidebar_label:"Unused Kapt Processor"},c=void 0,a={},d=[];function p(e){return(0,r.jsx)(r.Fragment,{})}function i(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(p,{...e})}):p()}}}]); \ No newline at end of file diff --git a/assets/js/main.2ca436d8.js b/assets/js/main.2ca436d8.js new file mode 100644 index 0000000000..d3e050a9a6 --- /dev/null +++ b/assets/js/main.2ca436d8.js @@ -0,0 +1,2 @@ +/*! For license information please see main.2ca436d8.js.LICENSE.txt */ +(self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[]).push([[8792],{1870:(e,t)=>{"use strict";var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var a in r={},t)"key"!==a&&(r[a]=t[a]);else r=t;return t=r.ref,{$$typeof:n,type:e,key:o,ref:void 0!==t?t:null,props:r}}t.Fragment=r,t.jsx=o,t.jsxs=o},2266:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});n(36672);const r={iconExternalLink:"iconExternalLink_bfN_"};var o=n(23420);const a="#theme-svg-external-link";function s({width:e=13.5,height:t=13.5}){return(0,o.jsx)("svg",{width:e,height:t,"aria-hidden":"true",className:r.iconExternalLink,children:(0,o.jsx)("use",{href:a})})}},2736:(e,t,n)=>{e.exports=n(16186)()},3416:(e,t,n)=>{"use strict";n.d(t,{My:()=>k,f4:()=>Y});var r,o,a=n(36672),s=n(13526),i=Object.create,c=Object.defineProperty,l=Object.defineProperties,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyDescriptors,p=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,h=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,g=Object.prototype.propertyIsEnumerable,b=(e,t,n)=>t in e?c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,y=(e,t)=>{for(var n in t||(t={}))m.call(t,n)&&b(e,n,t[n]);if(f)for(var n of f(t))g.call(t,n)&&b(e,n,t[n]);return e},v=(e,t)=>l(e,d(t)),_=(e,t)=>{var n={};for(var r in e)m.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&f)for(var r of f(e))t.indexOf(r)<0&&g.call(e,r)&&(n[r]=e[r]);return n},k=((e,t,n)=>(n=null!=e?i(h(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of p(t))m.call(e,o)||o===n||c(e,o,{get:()=>t[o],enumerable:!(r=u(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:c(n,"default",{value:e,enumerable:!0}),e)))((r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var o,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var s in o={},n[a]=o,t)t.hasOwnProperty(s)&&(o[s]=e(t[s],n));return o;case"Array":return a=r.util.objId(t),n[a]?n[a]:(o=[],n[a]=o,t.forEach(function(t,r){o[r]=e(t,n)}),o);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var o=e.classList;if(o.contains(t))return!0;if(o.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var a=(o=o||r.languages)[e],s={};for(var i in a)if(a.hasOwnProperty(i)){if(i==t)for(var c in n)n.hasOwnProperty(c)&&(s[c]=n[c]);n.hasOwnProperty(i)||(s[i]=a[i])}var l=o[e];return o[e]=s,r.languages.DFS(r.languages,function(t,n){n===l&&t!=e&&(this[t]=s)}),s},DFS:function e(t,n,o,a){a=a||{};var s=r.util.objId;for(var i in t)if(t.hasOwnProperty(i)){n.call(t,i,t[i],o||i);var c=t[i],l=r.util.type(c);"Object"!==l||a[s(c)]?"Array"!==l||a[s(c)]||(a[s(c)]=!0,e(c,n,i,a)):(a[s(c)]=!0,e(c,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",a),!a.grammar)throw new Error('The language "'+a.language+'" has no grammar.');return a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),o.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var o=new i;return c(o,o.head,e),s(e,o,t,o.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(o)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,a=0;o=n[a++];)o(t)}},Token:o};function o(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var o=e.exec(n);if(o&&r&&o[1]){var a=o[1].length;o.index+=a,o[0]=o[0].slice(a)}return o}function s(e,t,n,i,u,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var h=0;h<f.length;++h){if(d&&d.cause==p+","+h)return;var m=f[h],g=m.inside,b=!!m.lookbehind,y=!!m.greedy,v=m.alias;if(y&&!m.pattern.global){var _=m.pattern.toString().match(/[imsuy]*$/)[0];m.pattern=RegExp(m.pattern.source,_+"g")}for(var k=m.pattern||m,w=i.next,C=u;w!==t.tail&&!(d&&C>=d.reach);C+=w.value.length,w=w.next){var x=w.value;if(t.length>e.length)return;if(!(x instanceof o)){var S,M=1;if(y){if(!(S=a(k,C,e,b))||S.index>=e.length)break;var E=S.index,O=S.index+S[0].length,A=C;for(A+=w.value.length;E>=A;)A+=(w=w.next).value.length;if(C=A-=w.value.length,w.value instanceof o)continue;for(var j=w;j!==t.tail&&(A<O||"string"==typeof j.value);j=j.next)M++,A+=j.value.length;M--,x=e.slice(C,A),S.index-=C}else if(!(S=a(k,0,x,b)))continue;E=S.index;var D=S[0],P=x.slice(0,E),T=x.slice(E+D.length),I=C+x.length;d&&I>d.reach&&(d.reach=I);var N=w.prev;if(P&&(N=c(t,N,P),C+=P.length),l(t,N,M),w=c(t,N,new o(p,g?r.tokenize(D,g):D,v,D)),T&&c(t,w,T),M>1){var L={cause:p+","+h,reach:I};s(e,t,n,w.prev,C,L),d&&L.reach>d.reach&&(d.reach=L.reach)}}}}}}function i(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function c(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function l(e,t,n){for(var r=t.next,o=0;o<n&&r!==e.tail;o++)r=r.next;t.next=r,r.prev=t,e.length-=o}return o.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var o="";return t.forEach(function(t){o+=e(t,n)}),o}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},s=t.alias;s&&(Array.isArray(s)?Array.prototype.push.apply(a.classes,s):a.classes.push(s)),r.hooks.run("wrap",a);var i="";for(var c in a.attributes)i+=" "+c+'="'+(a.attributes[c]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+i+">"+a.content+"</"+a.tag+">"},r}();t.exports=n,n.default=n}},function(){return o||(0,r[p(r)[0]])((o={exports:{}}).exports,o),o.exports})());k.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},k.languages.markup.tag.inside["attr-value"].inside.entity=k.languages.markup.entity,k.languages.markup.doctype.inside["internal-subset"].inside=k.languages.markup,k.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(k.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:k.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:k.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},k.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(k.languages.markup.tag,"addAttribute",{value:function(e,t){k.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:k.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),k.languages.html=k.languages.markup,k.languages.mathml=k.languages.markup,k.languages.svg=k.languages.markup,k.languages.xml=k.languages.extend("markup",{}),k.languages.ssml=k.languages.xml,k.languages.atom=k.languages.xml,k.languages.rss=k.languages.xml,function(e){var t={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},n=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,r="(?:[^\\\\-]|"+n.source+")",o=(r=RegExp(r+"-"+r),{pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"});e.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:r,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":t,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:n}},"special-escape":t,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":o}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":o}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}}}(k),k.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},k.languages.javascript=k.languages.extend("clike",{"class-name":[k.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),k.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,k.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:k.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:k.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:k.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:k.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:k.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),k.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:k.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),k.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),k.languages.markup&&(k.languages.markup.tag.addInlined("script","javascript"),k.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),k.languages.js=k.languages.javascript,k.languages.actionscript=k.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),k.languages.actionscript["class-name"].alias="function",delete k.languages.actionscript.parameter,delete k.languages.actionscript["literal-property"],k.languages.markup&&k.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:k.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(k),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach(function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},o="doc-comment";if(a=e.languages[t]){var a,s=a[o];if((s=s||(a=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[o])instanceof RegExp&&(s=a[o]={pattern:s}),Array.isArray(s))for(var i=0,c=s.length;i<c;i++)s[i]instanceof RegExp&&(s[i]={pattern:s[i]}),r(s[i]);else r(s)}})}}),t.addSupport(["java","javascript","php"],t)}(k),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(k),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(k),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function s(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<value>>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<key>>/g,function(){return"(?:"+o+"|"+a+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:s(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:s(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:s(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:s(a),lookbehind:!0,greedy:!0},number:{pattern:s(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(k),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return r}),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,s=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var o,a=t[n];"code"!==a.type?e(a.content):(o=a.content[1],a=a.content[3],o&&a&&"code-language"===o.type&&"code-block"===a.type&&"string"==typeof o.content&&(o=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),o="language-"+(o=(/[a-z][\w-]*/i.exec(o)||[""])[0].toLowerCase()),a.alias?"string"==typeof a.alias?a.alias=[a.alias,o]:a.alias.push(o):a.alias=[o]))}}(e.tokens)}),e.hooks.add("wrap",function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var a=t.classes[r];if(a=/language-(.+)/.exec(a)){n=a[1];break}}var l,u=e.languages[n];u?t.content=e.highlight(t.content.replace(s,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),c(n)):i[t]||e}),u,n):n&&"none"!==n&&e.plugins.autoloader&&(l="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=l,e.plugins.autoloader.loadLanguages(n,function(){var t=document.getElementById(l);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}),RegExp(e.languages.markup.tag.pattern.source,"gi")),i={amp:"&",lt:"<",gt:">",quot:'"'},c=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(k),k.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:k.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},k.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var t=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var o=[];if(d(["definition-mutation","punctuation"])&&"("===u(1).content){n+=2;var a=p(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var s=u(0);"variable"===s.type&&(f(s,"variable-input"),o.push(s.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,f(u(0),"property-mutation"),0<o.length)){var i=p(/^\{$/,/^\}$/);if(-1!==i)for(var c=n;c<i;c++){var l=t[c];"variable"===l.type&&0<=o.indexOf(l.content)&&f(l,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return}return 1}function p(e,r){for(var o=1,a=n;a<t.length;a++){var s=t[a],i=s.content;if("punctuation"===s.type&&"string"==typeof i)if(e.test(i))o++;else if(r.test(i)&&0===--o)return a}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}}),k.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],a=r.pattern.source;function s(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function i(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function c(t,n,s){var c=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),l=0,u={},d=(c=i(c.map(function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=l++,n="___"+s.toUpperCase()+"_"+r+"___")););return u[n]=e,n}).join(""),n,s),Object.keys(u));return l=0,function t(n){for(var a=0;a<n.length;a++){if(l>=d.length)return;var s,c,p,f,h,m,g,b=n[a];"string"==typeof b||"string"==typeof b.content?(s=d[l],-1!==(g=(m="string"==typeof b?b:b.content).indexOf(s))&&(++l,c=m.substring(0,g),h=u[s],p=void 0,(f={})["interpolation-punctuation"]=o,3===(f=e.tokenize(h,f)).length&&((p=[1,1]).push.apply(p,i(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,h),f=m.substring(g+s.length),h=[],c&&h.push(c),h.push(p),f&&(t(m=[f]),h.push.apply(h,m)),"string"==typeof b?(n.splice.apply(n,[a,1].concat(h)),a+=h.length-1):b.content=h)):(g=b.content,Array.isArray(g)?t(g):t([g]))}}(c),new e.Token(s,c,"language-"+s,t)}e.languages.javascript["template-string"]=[s("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),s("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),s("svg",/\bsvg/.source),s("markdown",/\b(?:markdown|md)/.source),s("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),s("sql",/\bsql/.source),t].filter(Boolean);var l={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return"string"==typeof e?e:Array.isArray(e)?e.map(u).join(""):u(e.content)}e.hooks.add("after-tokenize",function(t){t.language in l&&function t(n){for(var r=0,o=n.length;r<o;r++){var a,s,i,l=n[r];"string"!=typeof l&&(a=l.content,Array.isArray(a)?"template-string"===l.type?(l=a[1],3===a.length&&"string"!=typeof l&&"embedded-code"===l.type&&(s=u(l),l=l.alias,l=Array.isArray(l)?l[0]:l,i=e.languages[l])&&(a[1]=c(s,i,l))):t(a):"string"!=typeof a&&t([a]))}}(t.tokens)})}(k),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(k),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,function(){return n})),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(k),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(k),k.languages.n4js=k.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),k.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),k.languages.n4jsd=k.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source}),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var o=n[r],a=e.languages.javascript[o];o=(a="RegExp"===e.util.type(a)?e.languages.javascript[o]={pattern:a}:a).inside||{};(a.inside=o)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(k),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,o=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,function(){return n}).replace(/<BRACES>/g,function(){return r}).replace(/<SPREAD>/g,function(){return o}),RegExp(e,t)}function s(t){for(var n=[],r=0;r<t.length;r++){var o=t[r],a=!1;"string"!=typeof o&&("tag"===o.type&&o.content[0]&&"tag"===o.content[0].type?"</"===o.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===i(o.content[0].content[1])&&n.pop():"/>"!==o.content[o.content.length-1].content&&n.push({tagName:i(o.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&0<n.length&&0===n[n.length-1].openedBraces&&(a=i(o),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(a+=i(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(a=i(t[r-1])+a,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",a,null,a)),o.content&&"string"!=typeof o.content&&s(o.content)}}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""};e.hooks.add("after-tokenize",function(e){"jsx"!==e.language&&"tsx"!==e.language||s(e.tokens)})}(k),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(k),k.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},k.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=k.languages.swift}),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(k),k.languages.c=k.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),k.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),k.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},k.languages.c.string],char:k.languages.c.char,comment:k.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:k.languages.c}}}}),k.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete k.languages.c.boolean,k.languages.objectivec=k.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete k.languages.objectivec["class-name"],k.languages.objc=k.languages.objectivec,k.languages.reason=k.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),k.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete k.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,function(){return t});t=t.replace(/<self>/g,function(){return/[^\s\S]/.source}),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(k),k.languages.go=k.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),k.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete k.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(k),k.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},k.languages.python["string-interpolation"].inside.interpolation.inside.rest=k.languages.python,k.languages.py=k.languages.python,k.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},k.languages.webmanifest=k.languages.json;((e,t)=>{for(var n in t)c(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>w,duotoneDark:()=>C,duotoneLight:()=>x,github:()=>S,gruvboxMaterialDark:()=>U,gruvboxMaterialLight:()=>q,jettwaveDark:()=>F,jettwaveLight:()=>z,nightOwl:()=>M,nightOwlLight:()=>E,oceanicNext:()=>j,okaidia:()=>D,oneDark:()=>B,oneLight:()=>$,palenight:()=>P,shadesOfPurple:()=>T,synthwave84:()=>I,ultramin:()=>N,vsDark:()=>L,vsLight:()=>R});var w={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},C={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},x={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},S={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},M={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},E={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},O="#c5a5c5",A="#8dc891",j={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:O}},{types:["attr-value"],style:{color:A}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:A}},{types:["punctuation"],style:{color:A}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:O}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},D={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},P={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},T={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},I={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},N={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},L={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},R={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},F={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},z={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},B={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},$={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},U={plain:{color:"#ebdbb2",backgroundColor:"#292828"},styles:[{types:["imports","class-name","maybe-class-name","constant","doctype","builtin","function"],style:{color:"#d8a657"}},{types:["property-access"],style:{color:"#7daea3"}},{types:["tag"],style:{color:"#e78a4e"}},{types:["attr-name","char","url","regex"],style:{color:"#a9b665"}},{types:["attr-value","string"],style:{color:"#89b482"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#ea6962"}},{types:["entity","number","symbol"],style:{color:"#d3869b"}}]},q={plain:{color:"#654735",backgroundColor:"#f9f5d7"},styles:[{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#af2528"}},{types:["imports","class-name","maybe-class-name","constant","doctype","builtin"],style:{color:"#b4730e"}},{types:["string","attr-value"],style:{color:"#477a5b"}},{types:["property-access"],style:{color:"#266b79"}},{types:["function","attr-name","char","url"],style:{color:"#72761e"}},{types:["tag"],style:{color:"#b94c07"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["entity","number","symbol"],style:{color:"#924f79"}}]},H=/\r\n|\r|\n/,V=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},W=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},G=e=>{const t=[[]],n=[e],r=[0],o=[e.length];let a=0,s=0,i=[];const c=[i];for(;s>-1;){for(;(a=r[s]++)<o[s];){let e,l=t[s];const u=n[s][a];if("string"==typeof u?(l=s>0?l:["plain"],e=u):(l=W(l,u.type),u.alias&&(l=W(l,u.alias)),e=u.content),"string"!=typeof e){s++,t.push(l),n.push(e),r.push(0),o.push(e.length);continue}const d=e.split(H),p=d.length;i.push({types:l,content:d[0]});for(let t=1;t<p;t++)V(i),c.push(i=[]),i.push({types:l,content:d[t]})}s--,t.pop(),n.pop(),r.pop(),o.pop()}return V(i),c},K=(e,t)=>{const{plain:n}=e,r=e.styles.reduce((e,n)=>{const{languages:r,style:o}=n;return r&&!r.includes(t)||n.types.forEach(t=>{const n=y(y({},e[t]),o);e[t]=n}),e},{});return r.root=n,r.plain=v(y({},n),{backgroundColor:void 0}),r},Q=({children:e,language:t,code:n,theme:r,prism:o})=>{const i=t.toLowerCase(),c=K(r,i),l=(e=>(0,a.useCallback)(t=>{var n=t,{className:r,style:o,line:a}=n,i=_(n,["className","style","line"]);const c=v(y({},i),{className:(0,s.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(c.style=e.plain),"object"==typeof o&&(c.style=y(y({},c.style||{}),o)),c},[e]))(c),u=(e=>{const t=(0,a.useCallback)(({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map(t=>e[t]))},[e]);return(0,a.useCallback)(e=>{var n=e,{token:r,className:o,style:a}=n,i=_(n,["token","className","style"]);const c=v(y({},i),{className:(0,s.A)("token",...r.types,o),children:r.content,style:t(r)});return null!=a&&(c.style=y(y({},c.style||{}),a)),c},[t])})(c),d=(({prism:e,code:t,grammar:n,language:r})=>(0,a.useMemo)(()=>{if(null==n)return G([t]);const o={code:t,grammar:n,language:r,tokens:[]};return e.hooks.run("before-tokenize",o),o.tokens=e.tokenize(t,n),e.hooks.run("after-tokenize",o),G(o.tokens)},[t,n,r,e]))({prism:o,language:i,code:n,grammar:o.languages[i]});return e({tokens:d,className:`prism-code language-${i}`,style:null!=c?c.root:{},getLineProps:l,getTokenProps:u})},Y=e=>(0,a.createElement)(Q,v(y({},e),{prism:e.prism||k,theme:e.theme||L,code:e.code,language:e.language}))},4784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"ModuleCheck",tagline:"Fast dependency graph linting for Gradle projects",url:"https://rbusarow.github.io",baseUrl:"/ModuleCheck/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"throw",favicon:"img/favicon.ico",markdown:{mermaid:!0,format:"mdx",mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}},themes:["@docusaurus/theme-mermaid"],organizationName:"rickbusarow",projectName:"ModuleCheck",presets:[["classic",{docs:{remarkPlugins:[null],sidebarPath:"./sidebars.js",editUrl:"https://github.com/rbusarow/ModuleCheck/blob/main/website"},blog:{showReadingTime:!0,editUrl:"https://github.com/rbusarow/ModuleCheck"},theme:{customCss:"./src/css/custom.css"}}]],themeConfig:{docs:{sidebar:{hideable:!0,autoCollapseCategories:!1},versionPersistence:"localStorage"},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!0},navbar:{title:"ModuleCheck",logo:{alt:"ModuleCheck Logo",src:"img/logo.png"},items:[{type:"doc",docId:"quickstart",label:"Docs",position:"left"},{to:"changelog",label:"ChangeLog",position:"left"},{to:"migrations",label:"Migrations",position:"left"},{type:"docsVersionDropdown",position:"left",dropdownActiveClassDisabled:!0,dropdownItemsAfter:[{to:"/changelog",label:"CHANGELOG"}],dropdownItemsBefore:[]},{label:"Api",href:"pathname:///api/index.html",position:"left"},{label:"GitHub",href:"https://github.com/rbusarow/ModuleCheck",position:"right"}],hideOnScroll:!1},footer:{copyright:"Copyright \xa9 2025 Rick Busarow, Built with Docusaurus.",style:"light",links:[]},mermaid:{theme:{light:"neutral",dark:"dark"},options:{}},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:["kotlin","groovy","java"],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},algolia:{appId:"D6Z21RYLG1",apiKey:"2b25d0dd3470c3fdbe2ffa4e3299b0e9",indexName:"modulecheck",contextualSearch:!0,searchParameters:{},searchPagePath:"search"},blog:{sidebar:{groupByYear:!0}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",path:"i18n",locales:["en"],localeConfigs:{}},future:{v4:{removeLegacyPostBuildHeadAttribute:!1,useCssCascadeLayers:!1},experimental_faster:{swcJsLoader:!1,swcJsMinimizer:!1,swcHtmlMinimizer:!1,lightningCssMinimizer:!1,mdxCrossCompilerCache:!1,rspackBundler:!1,rspackPersistentCache:!1,ssgWorkerThreads:!1},experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},5482:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>N,__assign:()=>a,__asyncDelegator:()=>S,__asyncGenerator:()=>x,__asyncValues:()=>M,__await:()=>C,__awaiter:()=>h,__classPrivateFieldGet:()=>P,__classPrivateFieldIn:()=>I,__classPrivateFieldSet:()=>T,__createBinding:()=>g,__decorate:()=>i,__disposeResources:()=>R,__esDecorate:()=>l,__exportStar:()=>b,__extends:()=>o,__generator:()=>m,__importDefault:()=>D,__importStar:()=>j,__makeTemplateObject:()=>E,__metadata:()=>f,__param:()=>c,__propKey:()=>d,__read:()=>v,__rest:()=>s,__rewriteRelativeImportExtension:()=>F,__runInitializers:()=>u,__setFunctionName:()=>p,__spread:()=>_,__spreadArray:()=>w,__spreadArrays:()=>k,__values:()=>y,default:()=>z});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},a.apply(this,arguments)};function s(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}function i(e,t,n,r){var o,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var i=e.length-1;i>=0;i--)(o=e[i])&&(s=(a<3?o(s):a>3?o(t,n,s):o(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s}function c(e,t){return function(n,r){t(n,r,e)}}function l(e,t,n,r,o,a){function s(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var i,c=r.kind,l="getter"===c?"get":"setter"===c?"set":"value",u=!t&&e?r.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,r.name):{}),p=!1,f=n.length-1;f>=0;f--){var h={};for(var m in r)h[m]="access"===m?{}:r[m];for(var m in r.access)h.access[m]=r.access[m];h.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(s(e||null))};var g=(0,n[f])("accessor"===c?{get:d.get,set:d.set}:d[l],h);if("accessor"===c){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(i=s(g.get))&&(d.get=i),(i=s(g.set))&&(d.set=i),(i=s(g.init))&&o.unshift(i)}else(i=s(g))&&("field"===c?o.unshift(i):d[l]=i)}u&&Object.defineProperty(u,r.name,d),p=!0}function u(e,t,n){for(var r=arguments.length>2,o=0;o<t.length;o++)n=r?t[o].call(e,n):t[o].call(e);return r?n:void 0}function d(e){return"symbol"==typeof e?e:"".concat(e)}function p(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function f(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function h(e,t,n,r){return new(n||(n=Promise))(function(o,a){function s(e){try{c(r.next(e))}catch(t){a(t)}}function i(e){try{c(r.throw(e))}catch(t){a(t)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,i)}c((r=r.apply(e,t||[])).next())})}function m(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=i(0),s.throw=i(1),s.return=i(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function i(i){return function(c){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(c){i=[6,c],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}var g=Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function b(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||g(t,e,n)}function y(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)s.push(r.value)}catch(i){o={error:i}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return s}function _(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(v(arguments[t]));return e}function k(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var a=arguments[t],s=0,i=a.length;s<i;s++,o++)r[o]=a[s];return r}function w(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}function C(e){return this instanceof C?(this.v=e,this):new C(e)}function x(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(e,t||[]),a=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",function(e){return function(t){return Promise.resolve(t).then(e,l)}}),r[Symbol.asyncIterator]=function(){return this},r;function s(e,t){o[e]&&(r[e]=function(t){return new Promise(function(n,r){a.push([e,t,n,r])>1||i(e,t)})},t&&(r[e]=t(r[e])))}function i(e,t){try{(n=o[e](t)).value instanceof C?Promise.resolve(n.value.v).then(c,l):u(a[0][2],n)}catch(r){u(a[0][3],r)}var n}function c(e){i("next",e)}function l(e){i("throw",e)}function u(e,t){e(t),a.shift(),a.length&&i(a[0][0],a[0][1])}}function S(e){var t,n;return t={},r("next"),r("throw",function(e){throw e}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:C(e[r](t)),done:!1}:o?o(t):t}:o}}function M(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=y(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,o){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,o,(t=e[n](t)).done,t.value)})}}}function E(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var O=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},A=function(e){return A=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},A(e)};function j(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=A(e),r=0;r<n.length;r++)"default"!==n[r]&&g(t,e,n[r]);return O(t,e),t}function D(e){return e&&e.__esModule?e:{default:e}}function P(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function T(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}function I(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function N(e,t,n){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var r,o;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");r=t[Symbol.asyncDispose]}if(void 0===r){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");r=t[Symbol.dispose],n&&(o=r)}if("function"!=typeof r)throw new TypeError("Object not disposable.");o&&(r=function(){try{o.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t}var L="function"==typeof SuppressedError?SuppressedError:function(e,t,n){var r=new Error(n);return r.name="SuppressedError",r.error=e,r.suppressed=t,r};function R(e){function t(t){e.error=e.hasError?new L(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}var n,r=0;return function o(){for(;n=e.stack.pop();)try{if(!n.async&&1===r)return r=0,e.stack.push(n),Promise.resolve().then(o);if(n.dispose){var a=n.dispose.call(n.value);if(n.async)return r|=2,Promise.resolve(a).then(o,function(e){return t(e),o()})}else r|=1}catch(s){t(s)}if(1===r)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}()}function F(e,t){return"string"==typeof e&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,o,a){return n?t?".jsx":".js":!r||o&&a?r+o+"."+a.toLowerCase()+"js":e}):e}const z={__extends:o,__assign:a,__rest:s,__decorate:i,__param:c,__esDecorate:l,__runInitializers:u,__propKey:d,__setFunctionName:p,__metadata:f,__awaiter:h,__generator:m,__createBinding:g,__exportStar:b,__values:y,__read:v,__spread:_,__spreadArrays:k,__spreadArray:w,__await:C,__asyncGenerator:x,__asyncDelegator:S,__asyncValues:M,__makeTemplateObject:E,__importStar:j,__importDefault:D,__classPrivateFieldGet:P,__classPrivateFieldSet:T,__classPrivateFieldIn:I,__addDisposableResource:N,__disposeResources:R,__rewriteRelativeImportExtension:F}},5526:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},6769:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},8155:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var r=n(36672),o=n(40932),a=n(19521),s=n(49263),i=n(32592),c=n(88103),l=n(23420);function u({error:e,tryAgain:t}){return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:t,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(d,{error:e})]})}function d({error:e}){const t=(0,s.rA)(e).map(e=>e.message).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:t})}function p({children:e}){return(0,l.jsx)(c.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:e})}function f({error:e,tryAgain:t}){return(0,l.jsx)(p,{children:(0,l.jsxs)(m,{fallback:()=>(0,l.jsx)(u,{error:e,tryAgain:t}),children:[(0,l.jsx)(a.A,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(i.A,{children:(0,l.jsx)(u,{error:e,tryAgain:t})})]})})}const h=e=>(0,l.jsx)(f,{...e});class m extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??h)(e)}return e??null}}},8243:(e,t,n)=>{"use strict";n.d(t,{b:()=>i,w:()=>c});var r=n(36672),o=n(68035),a=n(41201);const s="q";function i(){return(0,a.l)(s)}function c(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,o.A)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)(t=>`${e}${n}?${s}=${encodeURIComponent(t)}`,[e,n])}},10239:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(36672),o=n(13526),a=n(74682),s=n(77137);const i={themedComponent:"themedComponent_kh6W","themedComponent--light":"themedComponent--light_h03h","themedComponent--dark":"themedComponent--dark_QNPN"};var c=n(23420);function l({className:e,children:t}){const n=(0,a.A)(),{colorMode:l}=(0,s.G)();return(0,c.jsx)(c.Fragment,{children:(n?"dark"===l?["dark"]:["light"]:["light","dark"]).map(n=>{const a=t({theme:n,className:(0,o.A)(e,i.themedComponent,i[`themedComponent--${n}`])});return(0,c.jsx)(r.Fragment,{children:a},n)})})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,c.jsx)(l,{className:n,children:({theme:e,className:n})=>(0,c.jsx)("img",{src:t[e],alt:r,className:n,...o})})}},10344:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach(([n,a])=>{const s=o?`${o}.${n}`:n;r(a)?e(a,s):t[s]=a})}(e),t}},10352:(e,t,n)=>{"use strict";n.d(t,{Jx:()=>b,be:()=>h,e3:()=>g});var r=n(36672),o=n(13526),a=n(19521),s=n(23316),i=n(55928),c=n(49167),l=n(23420);function u({title:e}){const t=(0,c.s$)().format(e);return(0,l.jsxs)(a.A,{children:[(0,l.jsx)("title",{children:t}),(0,l.jsx)("meta",{property:"og:title",content:t})]})}function d({description:e}){return(0,l.jsxs)(a.A,{children:[(0,l.jsx)("meta",{name:"description",content:e}),(0,l.jsx)("meta",{property:"og:description",content:e})]})}function p({image:e}){const{withBaseUrl:t}=(0,i.hH)(),n=t(e,{absolute:!0});return(0,l.jsxs)(a.A,{children:[(0,l.jsx)("meta",{property:"og:image",content:n}),(0,l.jsx)("meta",{name:"twitter:image",content:n})]})}function f({keywords:e}){return(0,l.jsx)(a.A,{children:(0,l.jsx)("meta",{name:"keywords",content:Array.isArray(e)?e.join(","):e})})}function h({title:e,description:t,keywords:n,image:r,children:o}){return(0,l.jsxs)(l.Fragment,{children:[e&&(0,l.jsx)(u,{title:e}),t&&(0,l.jsx)(d,{description:t}),n&&(0,l.jsx)(f,{keywords:n}),r&&(0,l.jsx)(p,{image:r}),o&&(0,l.jsx)(a.A,{children:o})]})}const m=r.createContext(void 0);function g({className:e,children:t}){const n=r.useContext(m),s=(0,o.A)(n,e);return(0,l.jsxs)(m.Provider,{value:s,children:[(0,l.jsx)(a.A,{children:(0,l.jsx)("html",{className:s})}),t]})}function b({children:e}){const t=(0,s.A)(),n=`plugin-${t.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const r=`plugin-id-${t.plugin.id}`;return(0,l.jsx)(g,{className:(0,o.A)(n,r),children:e})}},10452:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,a_:()=>h,gk:()=>m});var r=n(36672),o=n(40932),a=n(74682),s=n(10914),i=n(36496),c=n(23420);const l=r.createContext(void 0);function u({children:e}){const t=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)(()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}}),[])}();return(0,c.jsx)(l.Provider,{value:t,children:e})}function d(){const e=(0,r.useContext)(l);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const p=()=>o.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t=[]){const{scrollEventsEnabledRef:n}=d(),o=(0,r.useRef)(p()),a=(0,i._q)(e);(0,r.useEffect)(()=>{const e=()=>{if(!n.current)return;const e=p();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)},[a,n,...t])}function h(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)(t=>{e.current={elem:t,top:t.getBoundingClientRect().top}},[]),n=(0,r.useCallback)(()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}},[]);return(0,r.useMemo)(()=>({save:t,restore:n}),[n,t])}(),n=(0,r.useRef)(void 0),o=(0,r.useCallback)(r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}},[e,t]);return(0,s.A)(()=>{queueMicrotask(()=>n.current?.())}),{blockElementScrollPositionUntilNextRender:o}}function m(){const e=(0,r.useRef)(null),t=(0,a.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&o<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(o-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},10809:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>o})},10914:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(36672);const o=n(40932).A.canUseDOM?r.useLayoutEffect:r.useEffect},11591:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(36672);var r=n(35387),o=n.n(r),a=n(84054);const s={"011d940f":[()=>Promise.all([n.e(1869),n.e(1536)]).then(n.bind(n,33735)),"@site/versioned_docs/version-0.12.3/configuration.mdx",33735],"021c8caa":[()=>n.e(3924).then(n.t.bind(n,4356,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-10-0-825.json",4356],"02359d8a":[()=>n.e(5859).then(n.bind(n,18184)),"@site/versioned_docs/version-0.12.5/rules/redundant_dependency.md",18184],"03459661":[()=>n.e(9335).then(n.bind(n,38611)),"@site/versioned_docs/version-0.12.5/rules/overshot_dependency.md",38611],"044a6187":[()=>n.e(2370).then(n.bind(n,28850)),"@site/versioned_docs/version-0.12.4/ci_workflow.md",28850],"048b8cd8":[()=>n.e(6150).then(n.bind(n,26704)),"@site/versioned_docs/version-0.11.0/rules/unused.md",26704],"051962a1":[()=>n.e(4094).then(n.bind(n,33107)),"@site/versioned_docs/version-0.12.2/rules/compiler/unused_kapt_processor.md",33107],"05d123c0":[()=>Promise.all([n.e(1869),n.e(7155)]).then(n.bind(n,21637)),"@site/versioned_docs/version-0.11.3/suppressing-findings.mdx",21637],"0807349d":[()=>n.e(4182).then(n.bind(n,62264)),"@site/docs/rules/compiler/use_anvil_factory_generation.md",62264],"09b50579":[()=>n.e(228).then(n.bind(n,38331)),"@site/versioned_docs/version-0.11.2/rules/android/disable_viewbinding.md",38331],"0b199b14":[()=>n.e(8321).then(n.bind(n,91906)),"@site/versioned_docs/version-0.12.4/rules/overshot_dependency.md",91906],"0f29fa4c":[()=>n.e(646).then(n.bind(n,93589)),"@site/versioned_docs/version-0.12.2/rules/redundant_dependency.md",93589],"0fc8e5d5":[()=>n.e(4931).then(n.bind(n,84835)),"@site/versioned_docs/version-0.12.5/rules/sorting/sort_dependencies.md",84835],"1050d62e":[()=>Promise.all([n.e(1869),n.e(998)]).then(n.bind(n,67373)),"@site/versioned_docs/version-0.12.2/quickstart.mdx",67373],"107eb4cc":[()=>n.e(832).then(n.bind(n,55325)),"@site/versioned_docs/version-0.12.3/rules/android/unused_kotlin_android_extensions.md",55325],"109fab02":[()=>n.e(5142).then(n.bind(n,91647)),"@site/versioned_docs/version-0.11.0/rules/kapt/unused_kapt_processor.md",91647],"10b686c7":[()=>n.e(6720).then(n.bind(n,73236)),"@site/versioned_docs/version-0.12.0/rules/overshot_dependency.md",73236],"12b0e932":[()=>n.e(8561).then(n.bind(n,27594)),"@site/versioned_docs/version-0.11.2/rules/android/disable_resources.md",27594],"1483dc01":[()=>n.e(1949).then(n.bind(n,58572)),"@site/versioned_docs/version-0.10.0/rules/redundant.md",58572],"14e1fcc3":[()=>n.e(8305).then(n.bind(n,18164)),"@site/versioned_docs/version-0.10.0/rules/sorting/sort_dependencies.md",18164],"150ef1cb":[()=>n.e(9384).then(n.bind(n,84007)),"@site/versioned_docs/version-0.12.1/rules/compiler/use_anvil_factory_generation.md",84007],"15a9c06b":[()=>n.e(2610).then(n.bind(n,96911)),"@site/versioned_docs/version-0.12.1/rules/redundant_dependency.md",96911],"171ac7cc":[()=>n.e(1273).then(n.bind(n,34673)),"@site/versioned_docs/version-0.11.2/rules/compiler/could_use_anvil_factory.md",34673],"171f1b26":[()=>n.e(6679).then(n.bind(n,28677)),"@site/versioned_docs/version-0.12.0/rules/kapt/custom_kapt_matchers.md",28677],17896441:[()=>Promise.all([n.e(1869),n.e(3332),n.e(8401)]).then(n.bind(n,93932)),"@theme/DocItem",93932],"19b95078":[()=>n.e(8104).then(n.bind(n,74568)),"@site/versioned_docs/version-0.12.4/rules/sorting/sort_plugins.md",74568],"19d61b19":[()=>n.e(7432).then(n.bind(n,19148)),"@site/versioned_docs/version-0.11.3/rules/must_be_api.md",19148],"1a3a5cbb":[()=>n.e(3821).then(n.bind(n,33875)),"@site/versioned_docs/version-0.11.1/rules/android/disable_resources.md",33875],"1a3bb66a":[()=>n.e(8029).then(n.bind(n,6478)),"@site/versioned_docs/version-0.12.1/ci_workflow.md",6478],"1a4e3797":[()=>Promise.all([n.e(1869),n.e(2138)]).then(n.bind(n,57277)),"@theme/SearchPage",57277],"1c291fdc":[()=>n.e(9206).then(n.bind(n,38566)),"@site/versioned_docs/version-0.12.1/rules/android/unused_kotlin_android_extensions.md",38566],"1e828d0d":[()=>n.e(7259).then(n.bind(n,87612)),"@site/versioned_docs/version-0.12.3/rules/unused_dependency.md",87612],"1ecac929":[()=>n.e(7930).then(n.bind(n,68255)),"@site/versioned_docs/version-0.12.3/rules/compiler/use_anvil_factory_generation.md",68255],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(3332),n.e(6061)]).then(n.bind(n,65314)),"@theme/MDXPage",65314],"20c870cb":[()=>n.e(314).then(n.bind(n,74503)),"@site/versioned_docs/version-0.11.0/rules/android/disable_viewbinding.md",74503],"2192b561":[()=>n.e(8945).then(n.bind(n,47784)),"@site/versioned_docs/version-0.12.2/ci_workflow.md",47784],"228d1b45":[()=>n.e(755).then(n.bind(n,58873)),"@site/versioned_docs/version-0.12.2/rules/must_be_api.md",58873],"23284c9b":[()=>n.e(9254).then(n.bind(n,59643)),"@site/versioned_docs/version-0.12.3/rules/android/disable_view_binding.md",59643],"23c216bb":[()=>n.e(4196).then(n.bind(n,28802)),"@site/versioned_docs/version-0.11.2/configuration.mdx",28802],"24af6869":[()=>Promise.all([n.e(1869),n.e(1753)]).then(n.bind(n,50786)),"@site/versioned_docs/version-0.10.0/quickstart.mdx",50786],25072094:[()=>n.e(4422).then(n.bind(n,58591)),"@site/versioned_docs/version-0.12.1/rules/project_depth.md",58591],"2950f807":[()=>n.e(7914).then(n.bind(n,48456)),"@site/docs/rules/must_be_api.md",48456],"29a2444a":[()=>n.e(4040).then(n.bind(n,61091)),"@site/versioned_docs/version-0.12.2/rules/compiler/custom_kapt_matchers.md",61091],"2f675600":[()=>n.e(7079).then(n.bind(n,99112)),"@site/versioned_docs/version-0.12.0/rules/sorting/sort_plugins.md",99112],"30f6db9d":[()=>n.e(3911).then(n.bind(n,32305)),"@site/versioned_docs/version-0.11.0/configuration.mdx",32305],"3139ff2f":[()=>n.e(8355).then(n.bind(n,82295)),"@site/versioned_docs/version-0.11.2/rules/kapt/unused_kapt_processor.md",82295],"324fc7ff":[()=>Promise.all([n.e(1869),n.e(8020)]).then(n.bind(n,13335)),"@site/versioned_docs/version-0.12.5/quickstart.mdx",13335],"325152a5":[()=>n.e(6313).then(n.bind(n,46461)),"@site/versioned_docs/version-0.12.1/rules/android/disable_android_resources.md",46461],"3325f0a2":[()=>n.e(7141).then(n.bind(n,31347)),"@site/versioned_docs/version-0.12.4/rules/compiler/unused_kapt_plugin.md",31347],"341c85ac":[()=>n.e(9479).then(n.bind(n,22281)),"@site/versioned_docs/version-0.12.1/rules/inherited_dependency.md",22281],"341f4c6e":[()=>n.e(5143).then(n.bind(n,84633)),"@site/versioned_docs/version-0.12.2/rules/compiler/use_anvil_factory_generation.md",84633],35179155:[()=>n.e(4151).then(n.bind(n,57534)),"@site/versioned_docs/version-0.12.4/rules/inherited_dependency.md",57534],"368eb302":[()=>n.e(3914).then(n.bind(n,75305)),"@site/versioned_docs/version-0.12.2/rules/project_depth.md",75305],"388f1aef":[()=>n.e(4955).then(n.bind(n,28859)),"@site/versioned_docs/version-0.12.5/rules/inherited_dependency.md",28859],"3abc021e":[()=>Promise.all([n.e(1869),n.e(6966)]).then(n.bind(n,51302)),"@site/versioned_docs/version-0.12.1/quickstart.mdx",51302],"3e41c308":[()=>n.e(8596).then(n.bind(n,35212)),"@site/versioned_docs/version-0.11.0/rules/kapt/unused_kapt_plugin.md",35212],"3e68fbe7":[()=>n.e(5241).then(n.bind(n,62027)),"@site/versioned_docs/version-0.12.2/rules/unused_dependency.md",62027],"3fb0a163":[()=>Promise.all([n.e(1869),n.e(9805)]).then(n.bind(n,98273)),"@site/versioned_docs/version-0.12.2/configuration.mdx",98273],"400cc4b7":[()=>n.e(1472).then(n.bind(n,32652)),"@site/versioned_docs/version-0.12.3/rules/compiler/unused_kapt_plugin.md",32652],"4047c50f":[()=>n.e(9514).then(n.bind(n,72275)),"@site/versioned_docs/version-0.12.0/rules/android/unused_kotlin_android_extensions.md",72275],"411bcc8b":[()=>n.e(91).then(n.bind(n,5170)),"@site/versioned_docs/version-0.12.4/rules/compiler/use_anvil_factory_generation.md",5170],"41b23040":[()=>n.e(7559).then(n.t.bind(n,41563,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-next-fd2.json",41563],"41bca987":[()=>n.e(5706).then(n.bind(n,83252)),"@site/versioned_docs/version-0.12.0/rules/inherited_dependency.md",83252],"4329fc3c":[()=>n.e(12).then(n.bind(n,42071)),"@site/versioned_docs/version-0.12.5/rules/compiler/custom_kapt_matchers.md",42071],"4359cab8":[()=>n.e(3508).then(n.bind(n,51186)),"@site/versioned_docs/version-0.11.0/rules/sorting/sort_dependencies.md",51186],"444a5a58":[()=>n.e(8327).then(n.bind(n,78381)),"@site/src/pages/migrations.md",78381],"4577221a":[()=>n.e(334).then(n.bind(n,2073)),"@site/docs/rules/compiler/unused_kapt_processor.md",2073],"46d462fa":[()=>n.e(1270).then(n.bind(n,41182)),"@site/versioned_docs/version-0.11.3/rules/inherited_dependency.md",41182],"46e9ac31":[()=>Promise.all([n.e(1869),n.e(4003)]).then(n.bind(n,52084)),"@site/versioned_docs/version-0.11.2/quickstart.mdx",52084],"47da9d80":[()=>n.e(6314).then(n.bind(n,71285)),"@site/versioned_docs/version-0.12.5/rules/must_be_api.md",71285],"485c5e01":[()=>n.e(4276).then(n.bind(n,25636)),"@site/versioned_docs/version-0.12.3/rules/inherited_dependency.md",25636],"487ca811":[()=>n.e(8720).then(n.bind(n,51082)),"@site/versioned_docs/version-0.12.4/rules/compiler/unused_kapt_processor.md",51082],"4c8a85bd":[()=>n.e(7286).then(n.bind(n,4787)),"@site/versioned_docs/version-0.11.3/rules/unused.md",4787],"4e8e2262":[()=>n.e(9055).then(n.bind(n,64276)),"@site/versioned_docs/version-0.12.0/rules/android/disable_viewbinding.md",64276],"50b1f033":[()=>n.e(8179).then(n.bind(n,62961)),"@site/versioned_docs/version-0.12.0/rules/kapt/unused_kapt_processor.md",62961],"50cf1f78":[()=>n.e(3715).then(n.bind(n,69327)),"@site/versioned_docs/version-0.12.2/rules/overshot_dependency.md",69327],"518ccc20":[()=>Promise.all([n.e(1869),n.e(610)]).then(n.bind(n,82270)),"@site/versioned_docs/version-0.12.0/configuration.mdx",82270],"51d6008a":[()=>n.e(2090).then(n.bind(n,64426)),"@site/docs/rules/android/unused_kotlin_android_extensions.md",64426],"521dad97":[()=>n.e(9290).then(n.bind(n,96090)),"@site/versioned_docs/version-0.12.0/rules/sorting/sort_dependencies.md",96090],"53b10fcd":[()=>n.e(2271).then(n.t.bind(n,33836,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-11-1-9c7.json",33836],"54b37c16":[()=>Promise.all([n.e(1869),n.e(7978)]).then(n.bind(n,65296)),"@site/versioned_docs/version-0.12.1/suppressing-findings.mdx",65296],"54f055ef":[()=>n.e(6185).then(n.bind(n,79001)),"@site/versioned_docs/version-0.12.5/rules/sorting/sort_plugins.md",79001],"571f3672":[()=>n.e(8510).then(n.bind(n,22962)),"@site/versioned_docs/version-0.12.1/rules/unused_dependency.md",22962],"5ad15a2f":[()=>n.e(7042).then(n.t.bind(n,81069,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-11-0-816.json",81069],"5b786e91":[()=>n.e(5802).then(n.bind(n,14643)),"@site/versioned_docs/version-0.12.3/rules/overshot_dependency.md",14643],"5d2d37cd":[()=>n.e(7257).then(n.bind(n,50913)),"@site/versioned_docs/version-0.11.1/rules/kapt/custom_kapt_matchers.md",50913],"5d624d4b":[()=>n.e(7658).then(n.bind(n,81800)),"@site/versioned_docs/version-0.11.3/rules/kapt/unused_kapt_plugin.md",81800],"5e95c892":[()=>n.e(9647).then(n.bind(n,9448)),"@theme/DocsRoot",9448],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"5f0d7ee4":[()=>n.e(825).then(n.bind(n,65661)),"@site/versioned_docs/version-0.11.1/rules/sorting/sort_dependencies.md",65661],"5fd14b8b":[()=>n.e(9775).then(n.bind(n,20961)),"@site/versioned_docs/version-0.11.2/rules/kapt/custom_kapt_matchers.md",20961],"6033e994":[()=>n.e(9558).then(n.bind(n,3457)),"@site/versioned_docs/version-0.12.5/rules/android/unused_kotlin_android_extensions.md",3457],"627bdb5d":[()=>n.e(2817).then(n.bind(n,72273)),"@site/versioned_docs/version-0.11.1/rules/must_be_api.md",72273],"62cdf0e0":[()=>n.e(8439).then(n.bind(n,20527)),"@site/versioned_docs/version-0.10.0/configuration.mdx",20527],"64018eb5":[()=>n.e(6494).then(n.bind(n,58994)),"@site/versioned_docs/version-0.11.1/rules/android/disable_viewbinding.md",58994],"6518a949":[()=>n.e(8904).then(n.t.bind(n,87834,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-12-4-861.json",87834],"66e00e19":[()=>n.e(5939).then(n.bind(n,24094)),"@site/versioned_docs/version-0.12.5/rules/project_depth.md",24094],"6bba662b":[()=>n.e(5296).then(n.bind(n,92573)),"@site/docs/rules/project_depth.md",92573],"6e6115bc":[()=>n.e(744).then(n.bind(n,54972)),"@site/versioned_docs/version-0.12.5/ci_workflow.md",54972],"6e873df7":[()=>n.e(3127).then(n.bind(n,31358)),"@site/docs/rules/sorting/sort_plugins.md",31358],"70335a48":[()=>n.e(4738).then(n.bind(n,87431)),"@site/versioned_docs/version-0.10.0/rules/unused.md",87431],"71174ce3":[()=>n.e(1792).then(n.bind(n,59847)),"@site/versioned_docs/version-0.12.0/rules/unused.md",59847],"7136df27":[()=>n.e(4167).then(n.bind(n,7519)),"@site/versioned_docs/version-0.12.0/rules/depths.md",7519],"71eb5ef4":[()=>n.e(7842).then(n.bind(n,47394)),"@site/docs/rules/compiler/unused_kapt_plugin.md",47394],"724ecf1a":[()=>n.e(2492).then(n.bind(n,25456)),"@site/docs/rules/inherited_dependency.md",25456],"7273998d":[()=>n.e(6360).then(n.bind(n,29035)),"@site/docs/rules/unused_dependency.md",29035],74876495:[()=>Promise.all([n.e(1869),n.e(6505)]).then(n.bind(n,65552)),"@site/docs/quickstart.mdx",65552],"75878fc8":[()=>n.e(7399).then(n.bind(n,11601)),"@site/src/pages/changelog.md",11601],"7bab4396":[()=>Promise.all([n.e(1869),n.e(2771)]).then(n.bind(n,81882)),"@site/versioned_docs/version-0.11.3/configuration.mdx",81882],"7c1e7b42":[()=>n.e(5682).then(n.bind(n,20962)),"@site/versioned_docs/version-0.12.0/rules/android/disable_resources.md",20962],"7cbf6be7":[()=>n.e(9065).then(n.bind(n,29781)),"@site/versioned_docs/version-0.10.0/mdx.md",29781],"7da24252":[()=>n.e(2016).then(n.bind(n,12577)),"@site/versioned_docs/version-0.12.2/rules/sorting/sort_dependencies.md",12577],"84fb41f0":[()=>n.e(6040).then(n.bind(n,37080)),"@site/versioned_docs/version-0.12.2/rules/android/disable_view_binding.md",37080],"86c82c9a":[()=>n.e(9603).then(n.bind(n,18961)),"@site/versioned_docs/version-0.12.4/rules/must_be_api.md",18961],"87c27ff4":[()=>Promise.all([n.e(1869),n.e(2410)]).then(n.bind(n,85729)),"@site/versioned_docs/version-0.12.0/quickstart.mdx",85729],"896d06c5":[()=>n.e(8374).then(n.bind(n,73033)),"@site/versioned_docs/version-0.12.4/rules/sorting/sort_dependencies.md",73033],"89d14484":[()=>n.e(679).then(n.bind(n,19346)),"@site/versioned_docs/version-0.12.1/rules/android/disable_view_binding.md",19346],"8dac98b9":[()=>n.e(3623).then(n.bind(n,53605)),"@site/versioned_docs/version-0.12.5/rules/android/disable_view_binding.md",53605],"8e56f135":[()=>n.e(8028).then(n.bind(n,45876)),"@site/versioned_docs/version-0.11.0/rules/compiler/could_use_anvil_factory.md",45876],"91e5ca6b":[()=>n.e(259).then(n.bind(n,27994)),"@site/docs/rules/sorting/sort_dependencies.md",27994],"91ee770c":[()=>n.e(7950).then(n.bind(n,74970)),"@site/versioned_docs/version-0.12.1/rules/compiler/custom_kapt_matchers.md",74970],"92131bac":[()=>n.e(9583).then(n.bind(n,30185)),"@site/versioned_docs/version-0.12.1/rules/sorting/sort_dependencies.md",30185],"9469bd80":[()=>n.e(4661).then(n.bind(n,1966)),"@site/versioned_docs/version-0.11.0/rules/android/disable_resources.md",1966],"9478d12a":[()=>n.e(1815).then(n.bind(n,37997)),"@site/versioned_docs/version-0.11.3/rules/kapt/custom_kapt_matchers.md",37997],"94dc3e5f":[()=>Promise.all([n.e(1869),n.e(6446)]).then(n.bind(n,5009)),"@site/docs/suppressing-findings.mdx",5009],"99547feb":[()=>n.e(3388).then(n.bind(n,46539)),"@site/versioned_docs/version-0.10.0/rules/sorting/sort_plugins.md",46539],"99cbfc76":[()=>Promise.all([n.e(1869),n.e(6288)]).then(n.bind(n,94082)),"@site/versioned_docs/version-0.12.2/suppressing-findings.mdx",94082],"9ae4b911":[()=>n.e(763).then(n.bind(n,97181)),"@site/versioned_docs/version-0.12.0/rules/compiler/could_use_anvil_factory.md",97181],"9e2bab8c":[()=>n.e(9063).then(n.t.bind(n,18324,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-209.json",18324],a06cff9c:[()=>n.e(8705).then(n.bind(n,24941)),"@site/versioned_docs/version-0.11.2/rules/inherited_dependency.md",24941],a180cea5:[()=>n.e(5251).then(n.bind(n,34669)),"@site/docs/ci_workflow.md",34669],a2d99d88:[()=>Promise.all([n.e(1869),n.e(8628)]).then(n.bind(n,85672)),"@site/versioned_docs/version-0.12.0/suppressing-findings.mdx",85672],a35aa088:[()=>n.e(750).then(n.bind(n,4620)),"@site/versioned_docs/version-0.12.0/ci_workflow.md",4620],a4b1a9b8:[()=>n.e(8783).then(n.bind(n,67556)),"@site/versioned_docs/version-0.12.1/rules/overshot_dependency.md",67556],a4e2bd41:[()=>n.e(406).then(n.bind(n,32088)),"@site/versioned_docs/version-0.10.0/rules/kapt/unused_kapt_plugin.md",32088],a559ab1c:[()=>n.e(286).then(n.bind(n,86729)),"@site/versioned_docs/version-0.11.1/rules/kapt/unused_kapt_processor.md",86729],a5f1db42:[()=>Promise.all([n.e(1869),n.e(7454)]).then(n.bind(n,66592)),"@site/versioned_docs/version-0.12.4/suppressing-findings.mdx",66592],a5fc5a0e:[()=>n.e(4663).then(n.bind(n,82454)),"@site/versioned_docs/version-0.11.3/rules/sorting/sort_dependencies.md",82454],a7456010:[()=>n.e(1235).then(n.t.bind(n,88552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",88552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,31029)),"@theme/DocVersionRoot",31029],a8ed45e8:[()=>n.e(3149).then(n.bind(n,17547)),"@site/versioned_docs/version-0.11.1/rules/unused.md",17547],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,39104)),"@theme/DocRoot",39104],aad83134:[()=>n.e(6644).then(n.bind(n,91584)),"@site/versioned_docs/version-0.12.3/ci_workflow.md",91584],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,27093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",27093],abdba85e:[()=>n.e(9961).then(n.bind(n,82212)),"@site/versioned_docs/version-0.11.0/rules/inherited_dependency.md",82212],ac2458d6:[()=>n.e(80).then(n.bind(n,16538)),"@site/versioned_docs/version-0.11.1/rules/sorting/sort_plugins.md",16538],b00e7a90:[()=>n.e(463).then(n.bind(n,74269)),"@site/versioned_docs/version-0.11.2/rules/unused.md",74269],b1002bca:[()=>Promise.all([n.e(1869),n.e(9152)]).then(n.bind(n,26626)),"@site/versioned_docs/version-0.11.3/quickstart.mdx",26626],b1c76d35:[()=>n.e(5264).then(n.bind(n,23049)),"@site/versioned_docs/version-0.12.2/rules/sorting/sort_plugins.md",23049],b20814c1:[()=>n.e(704).then(n.t.bind(n,43569,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-11-3-fd4.json",43569],b28afb00:[()=>n.e(4590).then(n.bind(n,12773)),"@site/versioned_docs/version-0.12.3/rules/redundant_dependency.md",12773],b35da6ab:[()=>Promise.all([n.e(1869),n.e(6601)]).then(n.bind(n,20954)),"@site/versioned_docs/version-0.12.4/quickstart.mdx",20954],b3a16c5b:[()=>n.e(2520).then(n.bind(n,38196)),"@site/versioned_docs/version-0.10.0/rules/android/disable_resources.md",38196],b7c223ee:[()=>n.e(6678).then(n.bind(n,80766)),"@site/versioned_docs/version-0.12.2/rules/android/disable_android_resources.md",80766],ba3d50d9:[()=>n.e(8463).then(n.bind(n,25708)),"@site/versioned_docs/version-0.11.0/rules/sorting/sort_plugins.md",25708],bc73dc9d:[()=>Promise.all([n.e(1869),n.e(1895)]).then(n.bind(n,74509)),"@site/versioned_docs/version-0.11.1/quickstart.mdx",74509],bc7e3c4b:[()=>n.e(362).then(n.bind(n,86257)),"@site/versioned_docs/version-0.11.1/rules/inherited_dependency.md",86257],bd7e05cf:[()=>n.e(7187).then(n.bind(n,30738)),"@site/versioned_docs/version-0.11.2/rules/sorting/sort_dependencies.md",30738],be81e05d:[()=>n.e(1917).then(n.bind(n,39033)),"@site/versioned_docs/version-0.10.0/rules/android/disable_viewbinding.md",39033],c0050a27:[()=>n.e(6087).then(n.t.bind(n,60862,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-12-1-473.json",60862],c07a004a:[()=>Promise.all([n.e(1869),n.e(4687)]).then(n.bind(n,51456)),"@site/versioned_docs/version-0.11.0/quickstart.mdx",51456],c10c208b:[()=>n.e(2132).then(n.bind(n,98428)),"@site/versioned_docs/version-0.11.3/rules/kapt/unused_kapt_processor.md",98428],c141421f:[()=>n.e(957).then(n.t.bind(n,40936,19)),"@generated/docusaurus-theme-search-algolia/default/__plugin.json",40936],c1600862:[()=>n.e(3641).then(n.bind(n,2501)),"@site/docs/rules/redundant_dependency.md",2501],c2414a18:[()=>n.e(8043).then(n.bind(n,65787)),"@site/versioned_docs/version-0.12.3/rules/compiler/custom_kapt_matchers.md",65787],c4025719:[()=>n.e(2406).then(n.bind(n,90773)),"@site/versioned_docs/version-0.12.4/rules/android/unused_kotlin_android_extensions.md",90773],c4b5a5df:[()=>n.e(2581).then(n.bind(n,42683)),"@site/versioned_docs/version-0.12.3/rules/android/disable_android_resources.md",42683],c4f5d8e4:[()=>Promise.all([n.e(1869),n.e(2634)]).then(n.bind(n,29164)),"@site/src/pages/index.js",29164],c5b979b0:[()=>n.e(5734).then(n.bind(n,14198)),"@site/docs/rules/compiler/custom_kapt_matchers.md",14198],c5f63adb:[()=>n.e(2133).then(n.bind(n,24772)),"@site/versioned_docs/version-0.11.1/configuration.mdx",24772],c7222430:[()=>n.e(3361).then(n.bind(n,49477)),"@site/versioned_docs/version-0.12.2/rules/compiler/unused_kapt_plugin.md",49477],c83ce79b:[()=>n.e(8141).then(n.bind(n,9745)),"@site/versioned_docs/version-0.12.0/rules/must_be_api.md",9745],c846d7aa:[()=>n.e(4193).then(n.bind(n,25493)),"@site/versioned_docs/version-0.11.1/rules/compiler/could_use_anvil_factory.md",25493],c902409b:[()=>n.e(5184).then(n.bind(n,45590)),"@site/versioned_docs/version-0.11.3/ci_workflow.md",45590],c989d589:[()=>n.e(9082).then(n.bind(n,70856)),"@site/versioned_docs/version-0.12.2/rules/inherited_dependency.md",70856],ca3e6c65:[()=>n.e(1601).then(n.bind(n,29689)),"@site/versioned_docs/version-0.11.3/rules/compiler/could_use_anvil_factory.md",29689],ca460041:[()=>n.e(1084).then(n.bind(n,24762)),"@site/docs/rules/android/disable_android_resources.md",24762],ca873730:[()=>Promise.all([n.e(1869),n.e(4559)]).then(n.bind(n,35252)),"@site/versioned_docs/version-0.12.4/configuration.mdx",35252],ca8e7b55:[()=>n.e(3867).then(n.bind(n,138)),"@site/versioned_docs/version-0.11.2/rules/must_be_api.md",138],cb00cd0b:[()=>n.e(3263).then(n.bind(n,62768)),"@site/versioned_docs/version-0.10.0/rules/kapt/custom_kapt_matchers.md",62768],cb4f58ba:[()=>n.e(4074).then(n.bind(n,75686)),"@site/versioned_docs/version-0.11.2/ci_workflow.md",75686],cbb899e4:[()=>Promise.all([n.e(1869),n.e(5235)]).then(n.bind(n,94266)),"@site/docs/configuration.mdx",94266],cbe609e8:[()=>n.e(9991).then(n.bind(n,30094)),"@site/docs/rules/overshot_dependency.md",30094],cc640607:[()=>n.e(5050).then(n.bind(n,10850)),"@site/versioned_docs/version-0.12.2/rules/android/unused_kotlin_android_extensions.md",10850],cd2aa5fe:[()=>n.e(2376).then(n.bind(n,35358)),"@site/versioned_docs/version-0.12.3/rules/sorting/sort_plugins.md",35358],cd6f4c97:[()=>n.e(1381).then(n.bind(n,36641)),"@site/versioned_docs/version-0.12.3/rules/compiler/unused_kapt_processor.md",36641],ce0be35a:[()=>n.e(9303).then(n.bind(n,70400)),"@site/versioned_docs/version-0.12.0/rules/kapt/unused_kapt_plugin.md",70400],d05f0a7d:[()=>n.e(9230).then(n.bind(n,18678)),"@site/versioned_docs/version-0.10.0/rules/overshot.md",18678],d1cdaf24:[()=>n.e(4996).then(n.t.bind(n,68800,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-12-3-48f.json",68800],d2866892:[()=>n.e(1900).then(n.bind(n,5168)),"@site/versioned_docs/version-0.12.1/rules/compiler/unused_kapt_processor.md",5168],d425c21a:[()=>n.e(5673).then(n.bind(n,64533)),"@site/versioned_docs/version-0.12.4/rules/unused_dependency.md",64533],d4bc87de:[()=>n.e(3832).then(n.t.bind(n,86646,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-11-2-f40.json",86646],d51efe31:[()=>Promise.all([n.e(1869),n.e(183)]).then(n.bind(n,27923)),"@site/versioned_docs/version-0.12.3/quickstart.mdx",27923],d69a7b0b:[()=>n.e(4410).then(n.bind(n,6137)),"@site/versioned_docs/version-0.12.3/rules/project_depth.md",6137],d968e4da:[()=>n.e(5326).then(n.bind(n,65452)),"@site/versioned_docs/version-0.12.4/rules/android/disable_view_binding.md",65452],dc7f0b30:[()=>n.e(8296).then(n.bind(n,38200)),"@site/versioned_docs/version-0.11.3/rules/android/disable_resources.md",38200],de297161:[()=>n.e(1658).then(n.bind(n,63148)),"@site/versioned_docs/version-0.12.5/rules/compiler/unused_kapt_processor.md",63148],de406b5e:[()=>n.e(6364).then(n.bind(n,9930)),"@site/versioned_docs/version-0.11.2/rules/sorting/sort_plugins.md",9930],df248b36:[()=>n.e(1686).then(n.bind(n,84629)),"@site/versioned_docs/version-0.11.1/rules/kapt/unused_kapt_plugin.md",84629],e0474f93:[()=>n.e(8861).then(n.bind(n,5919)),"@site/versioned_docs/version-0.12.5/rules/android/disable_android_resources.md",5919],e0a1aa17:[()=>n.e(2304).then(n.bind(n,12069)),"@site/versioned_docs/version-0.12.0/rules/redundant_dependency.md",12069],e12d7f74:[()=>n.e(9369).then(n.bind(n,62659)),"@site/versioned_docs/version-0.12.4/rules/redundant_dependency.md",62659],e4603b0e:[()=>Promise.all([n.e(1869),n.e(3108)]).then(n.bind(n,22513)),"@site/versioned_docs/version-0.12.5/configuration.mdx",22513],e480558e:[()=>n.e(7107).then(n.bind(n,78397)),"@site/versioned_docs/version-0.12.1/rules/compiler/unused_kapt_plugin.md",78397],e4d3d2e1:[()=>n.e(1647).then(n.bind(n,79013)),"@site/versioned_docs/version-0.11.0/rules/must_be_api.md",79013],e4f0c0bc:[()=>n.e(1338).then(n.bind(n,61546)),"@site/versioned_docs/version-0.12.5/rules/unused_dependency.md",61546],e5eedb42:[()=>n.e(9568).then(n.bind(n,59921)),"@site/versioned_docs/version-0.12.4/rules/android/disable_android_resources.md",59921],e69e4b95:[()=>n.e(2880).then(n.bind(n,55079)),"@site/docs/rules/android/disable_view_binding.md",55079],e7f8ca4b:[()=>n.e(575).then(n.bind(n,50353)),"@site/versioned_docs/version-0.12.3/rules/sorting/sort_dependencies.md",50353],e819ef22:[()=>n.e(247).then(n.t.bind(n,16240,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-12-0-e0d.json",16240],e8303188:[()=>n.e(6545).then(n.bind(n,89097)),"@site/versioned_docs/version-0.11.3/rules/android/disable_viewbinding.md",89097],eadc19b4:[()=>n.e(2946).then(n.bind(n,94064)),"@site/versioned_docs/version-0.11.0/rules/kapt/custom_kapt_matchers.md",94064],eb10ccf4:[()=>n.e(629).then(n.bind(n,49642)),"@site/versioned_docs/version-0.12.1/rules/sorting/sort_plugins.md",49642],eb678835:[()=>n.e(7671).then(n.bind(n,5277)),"@site/versioned_docs/version-0.12.5/rules/compiler/unused_kapt_plugin.md",5277],ede96f45:[()=>Promise.all([n.e(1869),n.e(1007)]).then(n.bind(n,95838)),"@site/versioned_docs/version-0.12.3/suppressing-findings.mdx",95838],ef09bccd:[()=>n.e(6823).then(n.bind(n,17135)),"@site/versioned_docs/version-0.12.3/rules/must_be_api.md",17135],ef46515e:[()=>Promise.all([n.e(1869),n.e(2852)]).then(n.bind(n,58114)),"@site/versioned_docs/version-0.12.1/configuration.mdx",58114],f354998b:[()=>n.e(6673).then(n.bind(n,45247)),"@site/versioned_docs/version-0.12.4/rules/project_depth.md",45247],f399bb6f:[()=>n.e(6884).then(n.bind(n,62826)),"@site/versioned_docs/version-0.11.2/rules/kapt/unused_kapt_plugin.md",62826],f435945d:[()=>Promise.all([n.e(1869),n.e(7509)]).then(n.bind(n,52767)),"@site/versioned_docs/version-0.12.5/suppressing-findings.mdx",52767],f9546978:[()=>n.e(4025).then(n.bind(n,97905)),"@site/versioned_docs/version-0.12.4/rules/compiler/custom_kapt_matchers.md",97905],f963ac8e:[()=>n.e(9440).then(n.bind(n,37588)),"@site/versioned_docs/version-0.12.5/rules/compiler/use_anvil_factory_generation.md",37588],fb031341:[()=>n.e(5397).then(n.bind(n,19282)),"@site/versioned_docs/version-0.11.3/rules/sorting/sort_plugins.md",19282],fde89899:[()=>n.e(4719).then(n.t.bind(n,36442,19)),"@generated/docusaurus-plugin-content-docs/default/p/module-check-docs-0-12-2-43d.json",36442],ff366317:[()=>n.e(1349).then(n.bind(n,86811)),"@site/versioned_docs/version-0.12.1/rules/must_be_api.md",86811],ffeead90:[()=>n.e(5817).then(n.bind(n,74280)),"@site/versioned_docs/version-0.10.0/rules/kapt/unused_kapt_processor.md",74280]};var i=n(23420);function c({error:e,retry:t,pastDelay:n}){return e?(0,i.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,i.jsx)("p",{children:String(e)}),(0,i.jsx)("div",{children:(0,i.jsx)("button",{type:"button",onClick:t,children:"Retry"})})]}):n?(0,i.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,i.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,i.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,i.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,i.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,i.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,i.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,i.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,i.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,i.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,i.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,i.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,i.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var l=n(10344),u=n(88103);function d(e,t){if("*"===e)return o()({loading:c,loader:()=>n.e(1036).then(n.bind(n,81036)),modules:["@theme/NotFound"],webpack:()=>[81036],render(e,t){const n=e.default;return(0,i.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,i.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],h=(0,l.A)(r);return Object.entries(h).forEach(([e,t])=>{const n=s[t];n&&(d[e]=n[0],p.push(n[1]),f.push(n[2]))}),o().Map({loading:c,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach(([t,n])=>{const r=n.default;if(!r)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof r&&"function"!=typeof r||Object.keys(n).filter(e=>"default"!==e).forEach(e=>{r[e]=n[e]});let a=o;const s=t.split(".");s.slice(0,-1).forEach(e=>{a=a[e]}),a[s[s.length-1]]=r});const a=o.__comp;delete o.__comp;const s=o.__context;delete o.__context;const c=o.__props;return delete o.__props,(0,i.jsx)(u.W,{value:s,children:(0,i.jsx)(a,{...o,...c,...n})})}})}const p=[{path:"/ModuleCheck/changelog",component:d("/ModuleCheck/changelog","6c5"),exact:!0},{path:"/ModuleCheck/migrations",component:d("/ModuleCheck/migrations","b20"),exact:!0},{path:"/ModuleCheck/search",component:d("/ModuleCheck/search","b2c"),exact:!0},{path:"/ModuleCheck/docs",component:d("/ModuleCheck/docs","ea9"),routes:[{path:"/ModuleCheck/docs/0.10.0",component:d("/ModuleCheck/docs/0.10.0","69a"),routes:[{path:"/ModuleCheck/docs/0.10.0",component:d("/ModuleCheck/docs/0.10.0","acc"),routes:[{path:"/ModuleCheck/docs/0.10.0/",component:d("/ModuleCheck/docs/0.10.0/","efa"),exact:!0,sidebar:"Basics"},{path:"/ModuleCheck/docs/0.10.0/configuration",component:d("/ModuleCheck/docs/0.10.0/configuration","4f3"),exact:!0,sidebar:"Basics"},{path:"/ModuleCheck/docs/0.10.0/mdx",component:d("/ModuleCheck/docs/0.10.0/mdx","60c"),exact:!0},{path:"/ModuleCheck/docs/0.10.0/rules/android/disable_resources",component:d("/ModuleCheck/docs/0.10.0/rules/android/disable_resources","3a2"),exact:!0,sidebar:"Rules"},{path:"/ModuleCheck/docs/0.10.0/rules/android/disable_viewbinding",component:d("/ModuleCheck/docs/0.10.0/rules/android/disable_viewbinding","4d4"),exact:!0,sidebar:"Rules"},{path:"/ModuleCheck/docs/0.10.0/rules/kapt/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.10.0/rules/kapt/custom_kapt_matchers","0fe"),exact:!0,sidebar:"Rules"},{path:"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_plugin","1f9"),exact:!0,sidebar:"Rules"},{path:"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_processor",component:d("/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_processor","d30"),exact:!0,sidebar:"Rules"},{path:"/ModuleCheck/docs/0.10.0/rules/overshot",component:d("/ModuleCheck/docs/0.10.0/rules/overshot","771"),exact:!0,sidebar:"Rules"},{path:"/ModuleCheck/docs/0.10.0/rules/redundant",component:d("/ModuleCheck/docs/0.10.0/rules/redundant","c5b"),exact:!0,sidebar:"Rules"},{path:"/ModuleCheck/docs/0.10.0/rules/sorting/sort_dependencies",component:d("/ModuleCheck/docs/0.10.0/rules/sorting/sort_dependencies","b11"),exact:!0,sidebar:"Rules"},{path:"/ModuleCheck/docs/0.10.0/rules/sorting/sort_plugins",component:d("/ModuleCheck/docs/0.10.0/rules/sorting/sort_plugins","de5"),exact:!0,sidebar:"Rules"},{path:"/ModuleCheck/docs/0.10.0/rules/unused",component:d("/ModuleCheck/docs/0.10.0/rules/unused","f7f"),exact:!0,sidebar:"Rules"}]}]},{path:"/ModuleCheck/docs/0.11.0",component:d("/ModuleCheck/docs/0.11.0","00d"),routes:[{path:"/ModuleCheck/docs/0.11.0",component:d("/ModuleCheck/docs/0.11.0","c05"),routes:[{path:"/ModuleCheck/docs/0.11.0/",component:d("/ModuleCheck/docs/0.11.0/","110"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/configuration",component:d("/ModuleCheck/docs/0.11.0/configuration","511"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/android/disable_resources",component:d("/ModuleCheck/docs/0.11.0/rules/android/disable_resources","f78"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/android/disable_viewbinding",component:d("/ModuleCheck/docs/0.11.0/rules/android/disable_viewbinding","cff"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/compiler/could_use_anvil_factory",component:d("/ModuleCheck/docs/0.11.0/rules/compiler/could_use_anvil_factory","953"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/inherited_dependency",component:d("/ModuleCheck/docs/0.11.0/rules/inherited_dependency","83f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/kapt/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.11.0/rules/kapt/custom_kapt_matchers","a1a"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_plugin","e0c"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_processor",component:d("/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_processor","322"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/must_be_api",component:d("/ModuleCheck/docs/0.11.0/rules/must_be_api","66f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/sorting/sort_dependencies",component:d("/ModuleCheck/docs/0.11.0/rules/sorting/sort_dependencies","077"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/sorting/sort_plugins",component:d("/ModuleCheck/docs/0.11.0/rules/sorting/sort_plugins","b83"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.0/rules/unused",component:d("/ModuleCheck/docs/0.11.0/rules/unused","84a"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs/0.11.1",component:d("/ModuleCheck/docs/0.11.1","fdf"),routes:[{path:"/ModuleCheck/docs/0.11.1",component:d("/ModuleCheck/docs/0.11.1","709"),routes:[{path:"/ModuleCheck/docs/0.11.1/",component:d("/ModuleCheck/docs/0.11.1/","a1a"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/configuration",component:d("/ModuleCheck/docs/0.11.1/configuration","4f3"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/android/disable_resources",component:d("/ModuleCheck/docs/0.11.1/rules/android/disable_resources","551"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/android/disable_viewbinding",component:d("/ModuleCheck/docs/0.11.1/rules/android/disable_viewbinding","5c0"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/compiler/could_use_anvil_factory",component:d("/ModuleCheck/docs/0.11.1/rules/compiler/could_use_anvil_factory","fc2"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/inherited_dependency",component:d("/ModuleCheck/docs/0.11.1/rules/inherited_dependency","01b"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/kapt/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.11.1/rules/kapt/custom_kapt_matchers","cc4"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_plugin","85d"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_processor",component:d("/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_processor","31b"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/must_be_api",component:d("/ModuleCheck/docs/0.11.1/rules/must_be_api","f93"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/sorting/sort_dependencies",component:d("/ModuleCheck/docs/0.11.1/rules/sorting/sort_dependencies","f1c"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/sorting/sort_plugins",component:d("/ModuleCheck/docs/0.11.1/rules/sorting/sort_plugins","2ac"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.1/rules/unused",component:d("/ModuleCheck/docs/0.11.1/rules/unused","a1e"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs/0.11.2",component:d("/ModuleCheck/docs/0.11.2","936"),routes:[{path:"/ModuleCheck/docs/0.11.2",component:d("/ModuleCheck/docs/0.11.2","ad2"),routes:[{path:"/ModuleCheck/docs/0.11.2/",component:d("/ModuleCheck/docs/0.11.2/","b89"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/ci-workflow",component:d("/ModuleCheck/docs/0.11.2/ci-workflow","e0f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/configuration",component:d("/ModuleCheck/docs/0.11.2/configuration","c88"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/android/disable_resources",component:d("/ModuleCheck/docs/0.11.2/rules/android/disable_resources","7cd"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/android/disable_viewbinding",component:d("/ModuleCheck/docs/0.11.2/rules/android/disable_viewbinding","59f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/compiler/could_use_anvil_factory",component:d("/ModuleCheck/docs/0.11.2/rules/compiler/could_use_anvil_factory","c8f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/inherited_dependency",component:d("/ModuleCheck/docs/0.11.2/rules/inherited_dependency","d33"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/kapt/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.11.2/rules/kapt/custom_kapt_matchers","f07"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_plugin","f7f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_processor",component:d("/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_processor","053"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/must_be_api",component:d("/ModuleCheck/docs/0.11.2/rules/must_be_api","4c3"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/sorting/sort_dependencies",component:d("/ModuleCheck/docs/0.11.2/rules/sorting/sort_dependencies","abd"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/sorting/sort_plugins",component:d("/ModuleCheck/docs/0.11.2/rules/sorting/sort_plugins","d80"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.2/rules/unused",component:d("/ModuleCheck/docs/0.11.2/rules/unused","789"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs/0.11.3",component:d("/ModuleCheck/docs/0.11.3","0ce"),routes:[{path:"/ModuleCheck/docs/0.11.3",component:d("/ModuleCheck/docs/0.11.3","f4b"),routes:[{path:"/ModuleCheck/docs/0.11.3/",component:d("/ModuleCheck/docs/0.11.3/","5e5"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/ci-workflow",component:d("/ModuleCheck/docs/0.11.3/ci-workflow","b4a"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/configuration",component:d("/ModuleCheck/docs/0.11.3/configuration","1c6"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/android/disable_resources",component:d("/ModuleCheck/docs/0.11.3/rules/android/disable_resources","11b"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/android/disable_viewbinding",component:d("/ModuleCheck/docs/0.11.3/rules/android/disable_viewbinding","e1e"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/compiler/could_use_anvil_factory",component:d("/ModuleCheck/docs/0.11.3/rules/compiler/could_use_anvil_factory","291"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/inherited_dependency",component:d("/ModuleCheck/docs/0.11.3/rules/inherited_dependency","712"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/kapt/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.11.3/rules/kapt/custom_kapt_matchers","75a"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_plugin","e38"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_processor",component:d("/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_processor","783"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/must_be_api",component:d("/ModuleCheck/docs/0.11.3/rules/must_be_api","671"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/sorting/sort_dependencies",component:d("/ModuleCheck/docs/0.11.3/rules/sorting/sort_dependencies","2ad"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/sorting/sort_plugins",component:d("/ModuleCheck/docs/0.11.3/rules/sorting/sort_plugins","b98"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/rules/unused",component:d("/ModuleCheck/docs/0.11.3/rules/unused","ba3"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.11.3/suppressing-findings",component:d("/ModuleCheck/docs/0.11.3/suppressing-findings","d13"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs/0.12.0",component:d("/ModuleCheck/docs/0.12.0","ae3"),routes:[{path:"/ModuleCheck/docs/0.12.0",component:d("/ModuleCheck/docs/0.12.0","e9b"),routes:[{path:"/ModuleCheck/docs/0.12.0/",component:d("/ModuleCheck/docs/0.12.0/","afb"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/ci-workflow",component:d("/ModuleCheck/docs/0.12.0/ci-workflow","29e"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/configuration",component:d("/ModuleCheck/docs/0.12.0/configuration","d18"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/android/disable_resources",component:d("/ModuleCheck/docs/0.12.0/rules/android/disable_resources","c59"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/android/disable_viewbinding",component:d("/ModuleCheck/docs/0.12.0/rules/android/disable_viewbinding","e07"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/android/unused_kotlin_android_extensions",component:d("/ModuleCheck/docs/0.12.0/rules/android/unused_kotlin_android_extensions","474"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/compiler/could_use_anvil_factory",component:d("/ModuleCheck/docs/0.12.0/rules/compiler/could_use_anvil_factory","9f3"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/depths",component:d("/ModuleCheck/docs/0.12.0/rules/depths","106"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/inherited_dependency",component:d("/ModuleCheck/docs/0.12.0/rules/inherited_dependency","4c6"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/kapt/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.12.0/rules/kapt/custom_kapt_matchers","9d7"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_plugin","28a"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_processor",component:d("/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_processor","247"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/must_be_api",component:d("/ModuleCheck/docs/0.12.0/rules/must_be_api","529"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/overshot_dependency",component:d("/ModuleCheck/docs/0.12.0/rules/overshot_dependency","d6f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/redundant_dependency",component:d("/ModuleCheck/docs/0.12.0/rules/redundant_dependency","8f3"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/sorting/sort_dependencies",component:d("/ModuleCheck/docs/0.12.0/rules/sorting/sort_dependencies","30d"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/sorting/sort_plugins",component:d("/ModuleCheck/docs/0.12.0/rules/sorting/sort_plugins","694"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/rules/unused",component:d("/ModuleCheck/docs/0.12.0/rules/unused","6a4"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.0/suppressing-findings",component:d("/ModuleCheck/docs/0.12.0/suppressing-findings","8de"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs/0.12.1",component:d("/ModuleCheck/docs/0.12.1","254"),routes:[{path:"/ModuleCheck/docs/0.12.1",component:d("/ModuleCheck/docs/0.12.1","d14"),routes:[{path:"/ModuleCheck/docs/0.12.1/",component:d("/ModuleCheck/docs/0.12.1/","75e"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/ci-workflow",component:d("/ModuleCheck/docs/0.12.1/ci-workflow","c9b"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/configuration",component:d("/ModuleCheck/docs/0.12.1/configuration","584"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.12.1/rules/custom_kapt_matchers","68b"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/disable_android_resources",component:d("/ModuleCheck/docs/0.12.1/rules/disable_android_resources","bc2"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/disable_view_binding",component:d("/ModuleCheck/docs/0.12.1/rules/disable_view_binding","133"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/inherited_dependency",component:d("/ModuleCheck/docs/0.12.1/rules/inherited_dependency","c72"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/must_be_api",component:d("/ModuleCheck/docs/0.12.1/rules/must_be_api","5b1"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/overshot_dependency",component:d("/ModuleCheck/docs/0.12.1/rules/overshot_dependency","4bd"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/project_depth",component:d("/ModuleCheck/docs/0.12.1/rules/project_depth","4c1"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/redundant_dependency",component:d("/ModuleCheck/docs/0.12.1/rules/redundant_dependency","07b"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/sort_dependencies",component:d("/ModuleCheck/docs/0.12.1/rules/sort_dependencies","deb"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/sort_plugins",component:d("/ModuleCheck/docs/0.12.1/rules/sort_plugins","c1d"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/unused_dependency",component:d("/ModuleCheck/docs/0.12.1/rules/unused_dependency","5ae"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.12.1/rules/unused_kapt_plugin","fd6"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/unused_kapt_processor",component:d("/ModuleCheck/docs/0.12.1/rules/unused_kapt_processor","e05"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/unused_kotlin_android_extensions",component:d("/ModuleCheck/docs/0.12.1/rules/unused_kotlin_android_extensions","13b"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/rules/use_anvil_factory_generation",component:d("/ModuleCheck/docs/0.12.1/rules/use_anvil_factory_generation","164"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.1/suppressing-findings",component:d("/ModuleCheck/docs/0.12.1/suppressing-findings","6c9"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs/0.12.2",component:d("/ModuleCheck/docs/0.12.2","f87"),routes:[{path:"/ModuleCheck/docs/0.12.2",component:d("/ModuleCheck/docs/0.12.2","35b"),routes:[{path:"/ModuleCheck/docs/0.12.2/",component:d("/ModuleCheck/docs/0.12.2/","fb0"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/ci-workflow",component:d("/ModuleCheck/docs/0.12.2/ci-workflow","b8a"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/configuration",component:d("/ModuleCheck/docs/0.12.2/configuration","832"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.12.2/rules/custom_kapt_matchers","7d4"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/disable_android_resources",component:d("/ModuleCheck/docs/0.12.2/rules/disable_android_resources","402"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/disable_view_binding",component:d("/ModuleCheck/docs/0.12.2/rules/disable_view_binding","271"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/inherited_dependency",component:d("/ModuleCheck/docs/0.12.2/rules/inherited_dependency","ff3"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/must_be_api",component:d("/ModuleCheck/docs/0.12.2/rules/must_be_api","17f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/overshot_dependency",component:d("/ModuleCheck/docs/0.12.2/rules/overshot_dependency","a62"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/project_depth",component:d("/ModuleCheck/docs/0.12.2/rules/project_depth","06c"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/redundant_dependency",component:d("/ModuleCheck/docs/0.12.2/rules/redundant_dependency","abd"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/sort_dependencies",component:d("/ModuleCheck/docs/0.12.2/rules/sort_dependencies","0bd"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/sort_plugins",component:d("/ModuleCheck/docs/0.12.2/rules/sort_plugins","f4e"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/unused_dependency",component:d("/ModuleCheck/docs/0.12.2/rules/unused_dependency","9a1"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.12.2/rules/unused_kapt_plugin","f08"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/unused_kapt_processor",component:d("/ModuleCheck/docs/0.12.2/rules/unused_kapt_processor","951"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/unused_kotlin_android_extensions",component:d("/ModuleCheck/docs/0.12.2/rules/unused_kotlin_android_extensions","191"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/rules/use_anvil_factory_generation",component:d("/ModuleCheck/docs/0.12.2/rules/use_anvil_factory_generation","acb"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.2/suppressing-findings",component:d("/ModuleCheck/docs/0.12.2/suppressing-findings","566"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs/0.12.3",component:d("/ModuleCheck/docs/0.12.3","995"),routes:[{path:"/ModuleCheck/docs/0.12.3",component:d("/ModuleCheck/docs/0.12.3","549"),routes:[{path:"/ModuleCheck/docs/0.12.3/",component:d("/ModuleCheck/docs/0.12.3/","bdc"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/ci-workflow",component:d("/ModuleCheck/docs/0.12.3/ci-workflow","2b2"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/configuration",component:d("/ModuleCheck/docs/0.12.3/configuration","081"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.12.3/rules/custom_kapt_matchers","73d"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/disable_android_resources",component:d("/ModuleCheck/docs/0.12.3/rules/disable_android_resources","8b6"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/disable_view_binding",component:d("/ModuleCheck/docs/0.12.3/rules/disable_view_binding","153"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/inherited_dependency",component:d("/ModuleCheck/docs/0.12.3/rules/inherited_dependency","487"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/must_be_api",component:d("/ModuleCheck/docs/0.12.3/rules/must_be_api","4ba"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/overshot_dependency",component:d("/ModuleCheck/docs/0.12.3/rules/overshot_dependency","54b"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/project_depth",component:d("/ModuleCheck/docs/0.12.3/rules/project_depth","1bf"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/redundant_dependency",component:d("/ModuleCheck/docs/0.12.3/rules/redundant_dependency","65b"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/sort_dependencies",component:d("/ModuleCheck/docs/0.12.3/rules/sort_dependencies","303"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/sort_plugins",component:d("/ModuleCheck/docs/0.12.3/rules/sort_plugins","9ba"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/unused_dependency",component:d("/ModuleCheck/docs/0.12.3/rules/unused_dependency","bf4"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.12.3/rules/unused_kapt_plugin","2f6"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/unused_kapt_processor",component:d("/ModuleCheck/docs/0.12.3/rules/unused_kapt_processor","75e"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/unused_kotlin_android_extensions",component:d("/ModuleCheck/docs/0.12.3/rules/unused_kotlin_android_extensions","127"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/rules/use_anvil_factory_generation",component:d("/ModuleCheck/docs/0.12.3/rules/use_anvil_factory_generation","522"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.3/suppressing-findings",component:d("/ModuleCheck/docs/0.12.3/suppressing-findings","71e"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs/0.12.4",component:d("/ModuleCheck/docs/0.12.4","3a4"),routes:[{path:"/ModuleCheck/docs/0.12.4",component:d("/ModuleCheck/docs/0.12.4","27f"),routes:[{path:"/ModuleCheck/docs/0.12.4/",component:d("/ModuleCheck/docs/0.12.4/","e8d"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/ci-workflow",component:d("/ModuleCheck/docs/0.12.4/ci-workflow","8b5"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/configuration",component:d("/ModuleCheck/docs/0.12.4/configuration","6b4"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/custom_kapt_matchers",component:d("/ModuleCheck/docs/0.12.4/rules/custom_kapt_matchers","b37"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/disable_android_resources",component:d("/ModuleCheck/docs/0.12.4/rules/disable_android_resources","e3e"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/disable_view_binding",component:d("/ModuleCheck/docs/0.12.4/rules/disable_view_binding","54e"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/inherited_dependency",component:d("/ModuleCheck/docs/0.12.4/rules/inherited_dependency","185"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/must_be_api",component:d("/ModuleCheck/docs/0.12.4/rules/must_be_api","342"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/overshot_dependency",component:d("/ModuleCheck/docs/0.12.4/rules/overshot_dependency","230"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/project_depth",component:d("/ModuleCheck/docs/0.12.4/rules/project_depth","c39"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/redundant_dependency",component:d("/ModuleCheck/docs/0.12.4/rules/redundant_dependency","606"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/sort_dependencies",component:d("/ModuleCheck/docs/0.12.4/rules/sort_dependencies","35a"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/sort_plugins",component:d("/ModuleCheck/docs/0.12.4/rules/sort_plugins","690"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/unused_dependency",component:d("/ModuleCheck/docs/0.12.4/rules/unused_dependency","c81"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/unused_kapt_plugin",component:d("/ModuleCheck/docs/0.12.4/rules/unused_kapt_plugin","088"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/unused_kapt_processor",component:d("/ModuleCheck/docs/0.12.4/rules/unused_kapt_processor","652"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/unused_kotlin_android_extensions",component:d("/ModuleCheck/docs/0.12.4/rules/unused_kotlin_android_extensions","23e"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/rules/use_anvil_factory_generation",component:d("/ModuleCheck/docs/0.12.4/rules/use_anvil_factory_generation","b7d"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/0.12.4/suppressing-findings",component:d("/ModuleCheck/docs/0.12.4/suppressing-findings","357"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs/next",component:d("/ModuleCheck/docs/next","5d8"),routes:[{path:"/ModuleCheck/docs/next",component:d("/ModuleCheck/docs/next","b28"),routes:[{path:"/ModuleCheck/docs/next/",component:d("/ModuleCheck/docs/next/","2a1"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/ci-workflow",component:d("/ModuleCheck/docs/next/ci-workflow","7ff"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/configuration",component:d("/ModuleCheck/docs/next/configuration","18d"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/custom_kapt_matchers",component:d("/ModuleCheck/docs/next/rules/custom_kapt_matchers","2df"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/disable_android_resources",component:d("/ModuleCheck/docs/next/rules/disable_android_resources","955"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/disable_view_binding",component:d("/ModuleCheck/docs/next/rules/disable_view_binding","e88"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/inherited_dependency",component:d("/ModuleCheck/docs/next/rules/inherited_dependency","222"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/must_be_api",component:d("/ModuleCheck/docs/next/rules/must_be_api","db1"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/overshot_dependency",component:d("/ModuleCheck/docs/next/rules/overshot_dependency","ed9"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/project_depth",component:d("/ModuleCheck/docs/next/rules/project_depth","4d8"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/redundant_dependency",component:d("/ModuleCheck/docs/next/rules/redundant_dependency","ea9"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/sort_dependencies",component:d("/ModuleCheck/docs/next/rules/sort_dependencies","9f3"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/sort_plugins",component:d("/ModuleCheck/docs/next/rules/sort_plugins","ab2"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/unused_dependency",component:d("/ModuleCheck/docs/next/rules/unused_dependency","6a3"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/unused_kapt_plugin",component:d("/ModuleCheck/docs/next/rules/unused_kapt_plugin","872"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/unused_kapt_processor",component:d("/ModuleCheck/docs/next/rules/unused_kapt_processor","a4f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/unused_kotlin_android_extensions",component:d("/ModuleCheck/docs/next/rules/unused_kotlin_android_extensions","bbb"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/rules/use_anvil_factory_generation",component:d("/ModuleCheck/docs/next/rules/use_anvil_factory_generation","49a"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/next/suppressing-findings",component:d("/ModuleCheck/docs/next/suppressing-findings","1a5"),exact:!0,sidebar:"Docs"}]}]},{path:"/ModuleCheck/docs",component:d("/ModuleCheck/docs","f3f"),routes:[{path:"/ModuleCheck/docs",component:d("/ModuleCheck/docs","ce9"),routes:[{path:"/ModuleCheck/docs/",component:d("/ModuleCheck/docs/","c72"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/ci-workflow",component:d("/ModuleCheck/docs/ci-workflow","ef4"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/configuration",component:d("/ModuleCheck/docs/configuration","ce4"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/custom_kapt_matchers",component:d("/ModuleCheck/docs/rules/custom_kapt_matchers","aea"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/disable_android_resources",component:d("/ModuleCheck/docs/rules/disable_android_resources","3b4"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/disable_view_binding",component:d("/ModuleCheck/docs/rules/disable_view_binding","a53"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/inherited_dependency",component:d("/ModuleCheck/docs/rules/inherited_dependency","003"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/must_be_api",component:d("/ModuleCheck/docs/rules/must_be_api","f05"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/overshot_dependency",component:d("/ModuleCheck/docs/rules/overshot_dependency","7f8"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/project_depth",component:d("/ModuleCheck/docs/rules/project_depth","919"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/redundant_dependency",component:d("/ModuleCheck/docs/rules/redundant_dependency","4c1"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/sort_dependencies",component:d("/ModuleCheck/docs/rules/sort_dependencies","8ca"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/sort_plugins",component:d("/ModuleCheck/docs/rules/sort_plugins","e73"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/unused_dependency",component:d("/ModuleCheck/docs/rules/unused_dependency","905"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/unused_kapt_plugin",component:d("/ModuleCheck/docs/rules/unused_kapt_plugin","3c3"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/unused_kapt_processor",component:d("/ModuleCheck/docs/rules/unused_kapt_processor","728"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/unused_kotlin_android_extensions",component:d("/ModuleCheck/docs/rules/unused_kotlin_android_extensions","2b6"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/rules/use_anvil_factory_generation",component:d("/ModuleCheck/docs/rules/use_anvil_factory_generation","a6f"),exact:!0,sidebar:"Docs"},{path:"/ModuleCheck/docs/suppressing-findings",component:d("/ModuleCheck/docs/suppressing-findings","8f6"),exact:!0,sidebar:"Docs"}]}]}]},{path:"/ModuleCheck/",component:d("/ModuleCheck/","f09"),exact:!0},{path:"*",component:d("*")}]},11774:(e,t,n)=>{"use strict";n.d(t,{k:()=>a,v:()=>s});var r=n(75755),o=n(62721);function a(e,t){return`docs-${e}-${t}`}function s(){const e=(0,r.Gy)(),t=(0,r.gk)(),n=(0,o.XK)();return[...Object.keys(e).map(function(r){const o=t?.activePlugin.pluginId===r?t.activeVersion:void 0,s=n[r],i=e[r].versions.find(e=>e.isLast);return a(r,(o??s??i).name)})]}},12541:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(58744),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate({location:e,previousLocation:t}){if(t&&e.pathname!==t.pathname){const e=window.setTimeout(()=>{o().start()},200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},13526:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}n.d(t,{A:()=>o});const o=function(){for(var e,t,n=0,o="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},15449:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>o,z:()=>r})},16186:(e,t,n)=>{"use strict";var r=n(62985);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,s){if(s!==r){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},17643:(e,t,n)=>{"use strict";var r=n(36672),o=n(42396),a=n(97398),s=n(58212),i=n(4784),c=n(40932);const l=[n(40378),n(81507),n(12541),n(81510)];var u=n(11591),d=n(85291),p=n(26271),f=n(23420);function h({children:e}){return(0,f.jsx)(f.Fragment,{children:e})}var m=n(49167);const g=e=>e.defaultFormatter(e);function b({children:e}){return(0,f.jsx)(m.AL,{formatter:g,children:e})}function y({children:e}){return(0,f.jsx)(b,{children:e})}var v=n(19521),_=n(68035),k=n(55928),w=n(74834),C=n(10352),x=n(71951),S=n(39685),M=n(40187),E=n(49263),O=n(77398);function A(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,_.A)(),r=(0,x.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,f.jsxs)(v.A,{children:[Object.entries(n).map(([e,{htmlLang:t}])=>(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:e,fullyQualified:!0}),hrefLang:t},e)),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter(e=>o!==e.htmlLang).map(e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`))]})}function j({permalink:e}){const{siteConfig:{url:t}}=(0,_.A)(),n=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,_.A)(),{pathname:r}=(0,d.zy)();return e+(0,E.Ks)((0,k.Ay)(r),{trailingSlash:n,baseUrl:t})}(),r=e?`${t}${e}`:n;return(0,f.jsxs)(v.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:r}),(0,f.jsx)("link",{rel:"canonical",href:r})]})}function D(){const{i18n:{currentLocale:e}}=(0,_.A)(),{metadata:t,image:n}=(0,w.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(v.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:S.w})]}),n&&(0,f.jsx)(C.be,{image:n}),(0,f.jsx)(j,{}),(0,f.jsx)(A,{}),(0,f.jsx)(O.A,{tag:M.C,locale:e}),(0,f.jsx)(v.A,{children:t.map((e,t)=>(0,f.jsx)("meta",{...e},t))})]})}const P=new Map;var T=n(30092),I=n(99125),N=n(10914);function L(e,...t){const n=l.map(n=>{const r=n.default?.[e]??n[e];return r?.(...t)});return()=>n.forEach(e=>e?.())}const R=function({children:e,location:t,previousLocation:n}){return(0,N.A)(()=>{n!==t&&(!function({location:e,previousLocation:t}){if(!t)return;const n=e.pathname===t.pathname,r=e.hash===t.hash,o=e.search===t.search;if(n&&r&&!o)return;const{hash:a}=e;if(a){const e=decodeURIComponent(a.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:t,previousLocation:n}),L("onRouteDidUpdate",{previousLocation:n,location:t}))},[n,t]),e};function F(e){const t=Array.from(new Set([e,decodeURI(e)])).map(e=>(0,p.u)(u.A,e)).flat();return Promise.all(t.map(e=>e.route.component.preload?.()))}class z extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=c.A.canUseDOM?L("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=L("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),F(n.pathname).then(()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})}).catch(e=>{console.warn(e),window.location.reload()}),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(R,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const B=z,$="__docusaurus-base-url-issue-banner-suggestion-container";function U(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '__docusaurus-base-url-issue-banner-container';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${$}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${$}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function q(){const{siteConfig:{baseUrl:e}}=(0,_.A)();return(0,f.jsx)(f.Fragment,{children:!c.A.canUseDOM&&(0,f.jsx)(v.A,{children:(0,f.jsx)("script",{children:U(e)})})})}function H(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,_.A)(),{pathname:n}=(0,d.zy)();return t&&n===e?(0,f.jsx)(q,{}):null}function V(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:o}}=(0,_.A)(),a=(0,k.Ay)(e),{htmlLang:s,direction:i}=o[r];return(0,f.jsxs)(v.A,{children:[(0,f.jsx)("html",{lang:s,dir:i}),(0,f.jsx)("title",{children:t}),(0,f.jsx)("meta",{property:"og:title",content:t}),(0,f.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,f.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,f.jsx)("link",{rel:"icon",href:a})]})}var W=n(8155),G=n(74682);function K(){const e=(0,G.A)();return(0,f.jsx)(v.A,{children:(0,f.jsx)("html",{"data-has-hydrated":e})})}const Q=(0,p.v)(u.A);function Y(){const e=function(e){if(P.has(e.pathname))return{...e,pathname:P.get(e.pathname)};if((0,p.u)(u.A,e.pathname).some(({route:e})=>!0===e.exact))return P.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return P.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(B,{location:e,children:Q})}function Z(){return(0,f.jsx)(W.A,{children:(0,f.jsx)(I.l,{children:(0,f.jsxs)(T.x,{children:[(0,f.jsx)(h,{children:(0,f.jsxs)(y,{children:[(0,f.jsx)(V,{}),(0,f.jsx)(D,{}),(0,f.jsx)(H,{}),(0,f.jsx)(Y,{})]})}),(0,f.jsx)(K,{})]})})})}var X=n(84054);const J=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)})}:function(e){return new Promise((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)})};var ee=n(10344);const te=new Set,ne=new Set,re=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,oe={prefetch:e=>{if(!(e=>!re()&&!ne.has(e)&&!te.has(e))(e))return!1;te.add(e);const t=(0,p.u)(u.A,e).flatMap(e=>{return t=e.route.path,Object.entries(X).filter(([e])=>e.replace(/-[^-]+$/,"")===t).flatMap(([,e])=>Object.values((0,ee.A)(e)));var t});return Promise.all(t.map(e=>{const t=n.gca(e);return t&&!t.includes("undefined")?J(t).catch(()=>{}):Promise.resolve()}))},preload:e=>!!(e=>!re()&&!ne.has(e))(e)&&(ne.add(e),F(e))},ae=Object.freeze(oe);function se({children:e}){return"hash"===i.default.future.experimental_router?(0,f.jsx)(s.I9,{children:e}):(0,f.jsx)(s.Kd,{children:e})}const ie=Boolean(!0);if(c.A.canUseDOM){window.docusaurus=ae;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(a.vd,{children:(0,f.jsx)(se,{children:(0,f.jsx)(Z,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(ie)window.docusaurusRoot=o.hydrateRoot(e,t,{onRecoverableError:n});else{const r=o.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};F(window.location.pathname).then(()=>{(0,r.startTransition)(s)})}},19521:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(36672);var r=n(97398),o=n(23420);function a(e){return(0,o.jsx)(r.mg,{...e})}},22654:e=>{"use strict";e.exports={}},23316:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(36672),o=n(88103);function a(){const e=r.useContext(o.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},23420:(e,t,n)=>{"use strict";e.exports=n(1870)},25385:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=!0,o="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(o);var n="function"==typeof t?t():t,a=n?"".concat(o,": ").concat(n):o;throw new Error(a)}}},26271:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,v:()=>i});var r=n(85291),o=n(70811),a=n(36672);function s(e,t,n){return void 0===n&&(n=[]),e.some(function(e){var o=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&s(e.routes,t,n)),o}),n}function i(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.dO,n,e.map(function(e,n){return a.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,o.A)({},n,{},t,{route:e})):a.createElement(e.component,(0,o.A)({},n,t,{route:e}))}})})):null}},28827:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(36672),o=n(58212),a=n(49263),s=n(68035),i=n(15449),c=n(40932),l=n(65572),u=n(55928),d=n(23420);function p({isNavLink:e,to:t,href:n,activeClassName:p,isActive:f,"data-noBrokenLinkCheck":h,autoAddBaseUrl:m=!0,...g},b){const{siteConfig:y}=(0,s.A)(),{trailingSlash:v,baseUrl:_}=y,k=y.future.experimental_router,{withBaseUrl:w}=(0,u.hH)(),C=(0,l.A)(),x=(0,r.useRef)(null);(0,r.useImperativeHandle)(b,()=>x.current);const S=t||n;const M=(0,i.A)(S),E=S?.replace("pathname://","");let O=void 0!==E?(A=E,m&&(e=>e.startsWith("/"))(A)?w(A):A):void 0;var A;"hash"===k&&O?.startsWith("./")&&(O=O?.slice(1)),O&&M&&(O=(0,a.Ks)(O,{trailingSlash:v,baseUrl:_}));const j=(0,r.useRef)(!1),D=e?o.k2:o.N_,P=c.A.canUseIntersectionObserver,T=(0,r.useRef)(),I=()=>{j.current||null==O||(window.docusaurus.preload(O),j.current=!0)};(0,r.useEffect)(()=>(!P&&M&&c.A.canUseDOM&&null!=O&&window.docusaurus.prefetch(O),()=>{P&&T.current&&T.current.disconnect()}),[T,O,P,M]);const N=O?.startsWith("#")??!1,L=!g.target||"_self"===g.target,R=!O||!M||!L||N&&"hash"!==k;h||!N&&R||C.collectLink(O),g.id&&C.collectAnchor(g.id);const F={};return R?(0,d.jsx)("a",{ref:x,href:O,...S&&!M&&{target:"_blank",rel:"noopener noreferrer"},...g,...F}):(0,d.jsx)(D,{...g,onMouseEnter:I,onTouchStart:I,innerRef:e=>{x.current=e,P&&e&&M&&(T.current=new window.IntersectionObserver(t=>{t.forEach(t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(T.current.unobserve(e),T.current.disconnect(),null!=O&&window.docusaurus.prefetch(O))})}),T.current.observe(e))},to:O,...e&&{isActive:f,activeClassName:p},...F})}const f=r.forwardRef(p)},29597:e=>{"use strict";e.exports=function(e,t,n,r,o,a,s,i){if(!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,o,a,s,i],u=0;(c=new Error(t.replace(/%s/g,function(){return l[u++]}))).name="Invariant Violation"}throw c.framesToPop=1,c}}},29837:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>i,ys:()=>s});var r=n(36672),o=n(11591),a=n(68035);function s(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function i(){const{baseUrl:e}=(0,a.A)().siteConfig;return(0,r.useMemo)(()=>function({baseUrl:e,routes:t}){function n(t){return t.path===e&&!0===t.exact}function r(t){return t.path===e&&!t.exact}return function e(t){if(0===t.length)return;return t.find(n)||e(t.filter(r).flatMap(e=>e.routes??[]))}(t)}({routes:o.A,baseUrl:e}),[e])}},30092:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>s});var r=n(36672),o=n(23420);const a=r.createContext(!1);function s({children:e}){const[t,n]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{n(!0)},[]),(0,o.jsx)(a.Provider,{value:t,children:e})}},31035:(e,t,n)=>{"use strict";var r=n(35959),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},s={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function c(e){return r.isMemo(e)?s:i[e.$$typeof]||o}i[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},i[r.Memo]=s;var l=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=f(n);o&&o!==h&&e(t,o,r)}var s=u(n);d&&(s=s.concat(d(n)));for(var i=c(t),m=c(n),g=0;g<s.length;++g){var b=s[g];if(!(a[b]||r&&r[b]||m&&m[b]||i&&i[b])){var y=p(n,b);try{l(t,b,y)}catch(v){}}}}return t}},32592:(e,t,n)=>{"use strict";n.d(t,{A:()=>Rt});var r=n(36672),o=n(13526),a=n(8155),s=n(10352),i=n(85291),c=n(50120),l=n(83770),u=n(23420);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,i.W6)(),n=(0,r.useCallback)(e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)},[]);return(0,l.$)(({location:n})=>{e.current&&!n.hash&&"PUSH"===t&&p(e.current)}),{containerRef:e,onClick:n}}const h=(0,c.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??h,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(40987),b=n(39685);const y={skipToContent:"skipToContent_X_hG"};function v(){return(0,u.jsx)(m,{className:y.skipToContent})}var _=n(74834),k=n(69197);function w({width:e=21,height:t=21,color:n="currentColor",strokeWidth:r=1.2,className:o,...a}){return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:e,height:t,...a,children:(0,u.jsx)("g",{stroke:n,strokeWidth:r,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const C={closeButton:"closeButton_D4Iw"};function x(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,c.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.A)("clean-btn close",C.closeButton,e.className),children:(0,u.jsx)(w,{width:14,height:14,strokeWidth:3.1})})}const S={content:"content_pIKM"};function M(e){const{announcementBar:t}=(0,_.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.A)(S.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const E={announcementBar:"announcementBar_ExsL",announcementBarPlaceholder:"announcementBarPlaceholder_vZsE",announcementBarClose:"announcementBarClose_kfzw",announcementBarContent:"announcementBarContent_aTCg"};function O(){const{announcementBar:e}=(0,_.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:s}=e;return(0,u.jsxs)("div",{className:(0,o.A)(g.G.announcementBar.container,E.announcementBar),style:{backgroundColor:r,color:a},role:"banner",children:[s&&(0,u.jsx)("div",{className:E.announcementBarPlaceholder}),(0,u.jsx)(M,{className:E.announcementBarContent}),s&&(0,u.jsx)(x,{onClick:n,className:E.announcementBarClose})]})}var A=n(57377),j=n(10452);var D=n(36496),P=n(82916);const T=r.createContext(null);function I({children:e}){const t=function(){const e=(0,A.M)(),t=(0,P.YL)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,s=(0,D.ZC)(a);return(0,r.useEffect)(()=>{a&&!s&&o(!0)},[a,s]),(0,r.useEffect)(()=>{a?e.shown||o(!0):o(!1)},[e.shown,a]),(0,r.useMemo)(()=>[n,o],[n])}();return(0,u.jsx)(T.Provider,{value:t,children:e})}function N(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function L(){const e=(0,r.useContext)(T);if(!e)throw new D.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)(()=>n(!1),[n]),a=(0,P.YL)();return(0,r.useMemo)(()=>({shown:t,hide:o,content:N(a)}),[o,a,t])}function R(e){return parseInt(r.version.split(".")[0],10)<19?{inert:e?"":void 0}:{inert:e}}function F({children:e,inert:t}){return(0,u.jsx)("div",{className:(0,o.A)(g.G.layout.navbar.mobileSidebar.panel,"navbar-sidebar__item menu"),...R(t),children:e})}function z({header:e,primaryMenu:t,secondaryMenu:n}){const{shown:r}=L();return(0,u.jsxs)("div",{className:(0,o.A)(g.G.layout.navbar.mobileSidebar.container,"navbar-sidebar"),children:[e,(0,u.jsxs)("div",{className:(0,o.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":r}),children:[(0,u.jsx)(F,{inert:r,children:t}),(0,u.jsx)(F,{inert:!r,children:n})]})]})}var B=n(77137),$=n(74682);function U(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function q(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}function H(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"})})}const V="toggle_bfyf",W="toggleButton_DDky",G="toggleIcon_BNLx",K="systemToggleIcon_Ctr3",Q="lightToggleIcon_FoKC",Y="darkToggleIcon_lNmY",Z="toggleButtonDisabled_U1cX";function X(e){switch(e){case null:return(0,c.T)({message:"system mode",id:"theme.colorToggle.ariaLabel.mode.system",description:"The name for the system color mode"});case"light":return(0,c.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"});case"dark":return(0,c.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"});default:throw new Error(`unexpected color mode ${e}`)}}function J(e){return(0,c.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the color mode toggle"},{mode:X(e)})}function ee(){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(U,{"aria-hidden":!0,className:(0,o.A)(G,Q)}),(0,u.jsx)(q,{"aria-hidden":!0,className:(0,o.A)(G,Y)}),(0,u.jsx)(H,{"aria-hidden":!0,className:(0,o.A)(G,K)})]})}function te({className:e,buttonClassName:t,respectPrefersColorScheme:n,value:r,onChange:a}){const s=(0,$.A)();return(0,u.jsx)("div",{className:(0,o.A)(V,e),children:(0,u.jsx)("button",{className:(0,o.A)("clean-btn",W,!s&&Z,t),type:"button",onClick:()=>a(function(e,t){if(!t)return"dark"===e?"light":"dark";switch(e){case null:return"light";case"light":return"dark";case"dark":return null;default:throw new Error(`unexpected color mode ${e}`)}}(r,n)),disabled:!s,title:X(r),"aria-label":J(r),children:(0,u.jsx)(ee,{})})})}const ne=r.memo(te),re={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_npDy"};function oe({className:e}){const t=(0,_.p)().navbar.style,{disableSwitch:n,respectPrefersColorScheme:r}=(0,_.p)().colorMode,{colorModeChoice:o,setColorMode:a}=(0,B.G)();return n?null:(0,u.jsx)(ne,{className:e,buttonClassName:"dark"===t?re.darkNavbarColorModeToggle:void 0,respectPrefersColorScheme:r,value:o,onChange:a})}var ae=n(90592);function se(){return(0,u.jsx)(ae.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function ie(){const e=(0,A.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,c.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(w,{color:"var(--ifm-color-emphasis-600)"})})}function ce(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(se,{}),(0,u.jsx)(oe,{className:"margin-right--md"}),(0,u.jsx)(ie,{})]})}var le=n(28827),ue=n(55928),de=n(15449),pe=n(37256),fe=n(2266);function he({activeBasePath:e,activeBaseRegex:t,to:n,href:r,label:o,html:a,isDropdownLink:s,prependBaseUrlToHref:i,...c}){const l=(0,ue.Ay)(n),d=(0,ue.Ay)(e),p=(0,ue.Ay)(r,{forcePrependBaseUrl:!0}),f=o&&r&&!(0,de.A)(r),h=a?{dangerouslySetInnerHTML:{__html:a}}:{children:(0,u.jsxs)(u.Fragment,{children:[o,f&&(0,u.jsx)(fe.A,{...s&&{width:12,height:12}})]})};return r?(0,u.jsx)(le.A,{href:i?p:r,...c,...h}):(0,u.jsx)(le.A,{to:l,isNavLink:!0,...(e||t)&&{isActive:(e,n)=>t?(0,pe.G)(t,n.pathname):n.pathname.startsWith(d)},...c,...h})}function me({className:e,isDropdownItem:t,...n}){return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(he,{className:(0,o.A)("menu__link",e),...n})})}function ge({className:e,isDropdownItem:t=!1,...n}){const r=(0,u.jsx)(he,{className:(0,o.A)(t?"dropdown__link":"navbar__item navbar__link",e),isDropdownLink:t,...n});return t?(0,u.jsx)("li",{children:r}):r}function be({mobile:e=!1,position:t,...n}){const r=e?me:ge;return(0,u.jsx)(r,{...n,activeClassName:n.activeClassName??(e?"menu__link--active":"navbar__link--active")})}var ye=n(42018),ve=n(29837),_e=n(68035);const ke="dropdownNavbarItemMobile_UUiP";function we(e,t){return e.some(e=>function(e,t){return!!(0,ve.ys)(e.to,t)||!!(0,pe.G)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t))}function Ce({collapsed:e,onClick:t}){return(0,u.jsx)("button",{"aria-label":e?(0,c.T)({id:"theme.navbar.mobileDropdown.collapseButton.expandAriaLabel",message:"Expand the dropdown",description:"The ARIA label of the button to expand the mobile dropdown navbar item"}):(0,c.T)({id:"theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel",message:"Collapse the dropdown",description:"The ARIA label of the button to collapse the mobile dropdown navbar item"}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:t})}function xe({items:e,className:t,position:n,onClick:a,...s}){const c=function(){const{siteConfig:{baseUrl:e}}=(0,_e.A)(),{pathname:t}=(0,i.zy)();return t.replace(e,"/")}(),l=(0,ve.ys)(s.to,c),d=we(e,c),{collapsed:p,toggleCollapsed:f}=function({active:e}){const{collapsed:t,toggleCollapsed:n,setCollapsed:o}=(0,ye.u)({initialState:()=>!e});return(0,r.useEffect)(()=>{e&&o(!1)},[e,o]),{collapsed:t,toggleCollapsed:n}}({active:l||d}),h=s.to?void 0:"#";return(0,u.jsxs)("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":l}),children:[(0,u.jsx)(he,{role:"button",className:(0,o.A)(ke,"menu__link menu__link--sublist",t),href:h,...s,onClick:e=>{"#"===h&&e.preventDefault(),f()},children:s.children??s.label}),(0,u.jsx)(Ce,{collapsed:p,onClick:e=>{e.preventDefault(),f()}})]}),(0,u.jsx)(ye.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:e.map((e,t)=>(0,r.createElement)(Je,{mobile:!0,isDropdownItem:!0,onClick:a,activeClassName:"menu__link--active",...e,key:t}))})]})}function Se({items:e,position:t,className:n,onClick:a,...s}){const i=(0,r.useRef)(null),[c,l]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{const e=e=>{i.current&&!i.current.contains(e.target)&&l(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}},[i]),(0,u.jsxs)("div",{ref:i,className:(0,o.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===t,"dropdown--show":c}),children:[(0,u.jsx)(he,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,o.A)("navbar__link",n),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),l(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:e.map((e,t)=>(0,r.createElement)(Je,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t}))})]})}function Me({mobile:e=!1,...t}){const n=e?xe:Se;return(0,u.jsx)(n,{...t})}var Ee=n(71951);function Oe({width:e=20,height:t=20,...n}){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:e,height:t,"aria-hidden":!0,...n,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const Ae="iconLanguage_Yxqf";var je=n(57235),De=n(36337),Pe=n(19521),Te=n(8243),Ie=n(76833),Ne=n(40187),Le=n(11774);function Re(){return[`language:${(0,_e.A)().i18n.currentLocale}`,function(){const e=(0,Le.v)();return[Ne.C,...e]}().map(e=>`docusaurus_tag:${e}`)]}const Fe={button:{buttonText:(0,c.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,c.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,c.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,c.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,c.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,c.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,c.T)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,c.T)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,c.T)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,c.T)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,c.T)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,c.T)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,c.T)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,c.T)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,c.T)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,c.T)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,c.T)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,c.T)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,c.T)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,c.T)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,c.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,c.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,c.T)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let ze=null;function Be(){return ze?Promise.resolve():Promise.all([n.e(1341).then(n.bind(n,1341)),Promise.all([n.e(1869),n.e(9998)]).then(n.bind(n,69998)),Promise.all([n.e(1869),n.e(1608)]).then(n.bind(n,71608))]).then(([{DocSearchModal:e}])=>{ze=e})}function $e({hit:e,children:t}){return(0,u.jsx)(le.A,{to:e.url,children:t})}function Ue({state:e,onClose:t}){const n=(0,Te.w)();return(0,u.jsx)(le.A,{to:n(e.query),onClick:t,children:(0,u.jsx)(c.A,{id:"theme.SearchBar.seeAll",values:{count:e.context.nbHits},children:"See all {count} results"})})}function qe({externalUrlRegex:e,...t}){const n=function({externalUrlRegex:e}){const t=(0,i.W6)(),[n]=(0,r.useState)(()=>({navigate(n){(0,pe.G)(e,n.itemUrl)?window.location.href=n.itemUrl:t.push(n.itemUrl)}}));return n}({externalUrlRegex:e}),o=function({contextualSearch:e,...t}){const n=Re(),r=t.searchParameters?.facetFilters??[],o=e?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(n,r):r;return{...t.searchParameters,facetFilters:o}}({...t}),a=function(e){const t=(0,Ie.C)(),[n]=(0,r.useState)(()=>n=>e.transformItems?e.transformItems(n):n.map(e=>({...e,url:t(e.url)})));return n}(t),s=function(){const{siteMetadata:{docusaurusVersion:e}}=(0,_e.A)();return(0,r.useCallback)(t=>(t.addAlgoliaAgent("docusaurus",e),t),[e])}(),c=(0,r.useRef)(null),l=(0,r.useRef)(null),[d,p]=(0,r.useState)(!1),[f,h]=(0,r.useState)(void 0),m=(0,r.useCallback)(()=>{if(!c.current){const e=document.createElement("div");c.current=e,document.body.insertBefore(e,document.body.firstChild)}},[]),g=(0,r.useCallback)(()=>{m(),Be().then(()=>p(!0))},[m]),b=(0,r.useCallback)(()=>{p(!1),l.current?.focus(),h(void 0)},[]),y=(0,r.useCallback)(e=>{"f"===e.key&&(e.metaKey||e.ctrlKey)||(e.preventDefault(),h(e.key),g())},[g]),v=function({closeModal:e}){return(0,r.useMemo)(()=>({state:t})=>(0,u.jsx)(Ue,{state:t,onClose:e}),[e])}({closeModal:b});return(0,De.E8)({isOpen:d,onOpen:g,onClose:b,onInput:y,searchButtonRef:l}),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Pe.A,{children:(0,u.jsx)("link",{rel:"preconnect",href:`https://${t.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})}),(0,u.jsx)(De.Bc,{onTouchStart:Be,onFocus:Be,onMouseOver:Be,onClick:g,ref:l,translations:t.translations?.button??Fe.button}),d&&ze&&c.current&&(0,je.createPortal)((0,u.jsx)(ze,{onClose:b,initialScrollY:window.scrollY,initialQuery:f,navigator:n,transformItems:a,hitComponent:$e,transformSearchClient:s,...t.searchPagePath&&{resultsFooterComponent:v},placeholder:Fe.placeholder,...t,translations:t.translations?.modal??Fe.modal,searchParameters:o}),c.current)]})}function He(){const{siteConfig:e}=(0,_e.A)();return(0,u.jsx)(qe,{...e.themeConfig.algolia})}const Ve={navbarSearchContainer:"navbarSearchContainer_WjZK"};function We({children:e,className:t}){return(0,u.jsx)("div",{className:(0,o.A)(t,Ve.navbarSearchContainer),children:e})}var Ge=n(75755),Ke=n(36149);var Qe=n(62721);function Ye({docsPluginId:e,configs:t}){return function(e,t){if(t){const n=new Map(e.map(e=>[e.name,e])),r=(t,r)=>{const o=n.get(t);if(!o)throw new Error(`No docs version exist for name '${t}', please verify your 'docsVersionDropdown' navbar item versions config.\nAvailable version names:\n- ${e.map(e=>`${e.name}`).join("\n- ")}`);return{version:o,label:r?.label??o.label}};return Array.isArray(t)?t.map(e=>r(e,void 0)):Object.entries(t).map(([e,t])=>r(e,t))}return e.map(e=>({version:e,label:e.label}))}((0,Ge.jh)(e),t)}function Ze(e,t){return t.alternateDocVersions[e.name]??function(e){return e.docs.find(t=>t.id===e.mainDocId)}(e)}const Xe={default:be,localeDropdown:function({mobile:e,dropdownItemsBefore:t,dropdownItemsAfter:n,queryString:r="",...o}){const{i18n:{currentLocale:a,locales:s,localeConfigs:l}}=(0,_e.A)(),d=(0,Ee.o)(),{search:p,hash:f}=(0,i.zy)(),h=[...t,...s.map(t=>{const n=`${`pathname://${d.createUrl({locale:t,fullyQualified:!1})}`}${p}${f}${r}`;return{label:l[t].label,lang:l[t].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:t===a?e?"menu__link--active":"dropdown__link--active":""}}),...n],m=e?(0,c.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):l[a].label;return(0,u.jsx)(Me,{...o,mobile:e,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Oe,{className:Ae}),m]}),items:h})},search:function({mobile:e,className:t}){return e?null:(0,u.jsx)(We,{className:t,children:(0,u.jsx)(He,{})})},dropdown:Me,html:function({value:e,className:t,mobile:n=!1,isDropdownItem:r=!1}){const a=r?"li":"div";return(0,u.jsx)(a,{className:(0,o.A)({navbar__item:!n&&!r,"menu__list-item":n},t),dangerouslySetInnerHTML:{__html:e}})},doc:function({docId:e,label:t,docsPluginId:n,...r}){const{activeDoc:o}=(0,Ge.zK)(n),a=(0,Ke.QB)(e,n),s=o?.path===a?.path;return null===a||a.unlisted&&!s?null:(0,u.jsx)(be,{exact:!0,...r,isActive:()=>s||!!o?.sidebar&&o.sidebar===a.sidebar,label:t??a.id,to:a.path})},docSidebar:function({sidebarId:e,label:t,docsPluginId:n,...r}){const{activeDoc:o}=(0,Ge.zK)(n),a=(0,Ke.fW)(e,n).link;if(!a)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${e}" doesn't have anything to be linked to.`);return(0,u.jsx)(be,{exact:!0,...r,isActive:()=>o?.sidebar===e,label:t??a.label,to:a.path})},docsVersion:function({label:e,to:t,docsPluginId:n,...r}){const o=(0,Ke.Vd)(n)[0],a=e??o.label,s=t??(e=>e.docs.find(t=>t.id===e.mainDocId))(o).path;return(0,u.jsx)(be,{...r,label:a,to:s})},docsVersionDropdown:function({mobile:e,docsPluginId:t,dropdownActiveClassDisabled:n,dropdownItemsBefore:r,dropdownItemsAfter:o,versions:a,...s}){const{search:l,hash:d}=(0,i.zy)(),p=(0,Ge.zK)(t),{savePreferredVersionName:f}=(0,Qe.g1)(t),h=Ye({docsPluginId:t,configs:a}),m=function({docsPluginId:e,versionItems:t}){return(0,Ke.Vd)(e).map(e=>t.find(t=>t.version===e)).filter(e=>void 0!==e)[0]??t[0]}({docsPluginId:t,versionItems:h}),g=[...r,...h.map(function({version:e,label:t}){return{label:t,to:`${Ze(e,p).path}${l}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>f(e.name)}}),...o],b=e&&g.length>1?(0,c.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):m.label,y=e&&g.length>1?void 0:Ze(m.version,p).path;return g.length<=1?(0,u.jsx)(be,{...s,mobile:e,label:b,to:y,isActive:n?()=>!1:void 0}):(0,u.jsx)(Me,{...s,mobile:e,label:b,to:y,items:g,isActive:n?()=>!1:void 0})}};function Je({type:e,...t}){const n=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(e,t),r=Xe[n];if(!r)throw new Error(`No NavbarItem component found for type "${e}".`);return(0,u.jsx)(r,{...t})}function et(){const e=(0,A.M)(),t=(0,_.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map((t,n)=>(0,r.createElement)(Je,{mobile:!0,...t,onClick:()=>e.toggle(),key:n}))})}function tt(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(c.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function nt(){const e=0===(0,_.p)().navbar.items.length,t=L();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(tt,{onClick:()=>t.hide()}),t.content]})}function rt(){const e=(0,A.M)();return function(e=!0){(0,r.useEffect)(()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"}),[e])}(e.shown),e.shouldRender?(0,u.jsx)(z,{header:(0,u.jsx)(ce,{}),primaryMenu:(0,u.jsx)(et,{}),secondaryMenu:(0,u.jsx)(nt,{})}):null}const ot={navbarHideable:"navbarHideable_dcaT",navbarHidden:"navbarHidden_LHpq"};function at(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.A)("navbar-sidebar__backdrop",e.className)})}function st({children:e}){const{navbar:{hideOnScroll:t,style:n}}=(0,_.p)(),a=(0,A.M)(),{navbarRef:s,isNavbarVisible:i}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),s=(0,r.useCallback)(e=>{null!==e&&(a.current=e.getBoundingClientRect().height)},[]);return(0,j.Mq)(({scrollY:t},r)=>{if(!e)return;if(t<a.current)return void n(!0);if(o.current)return void(o.current=!1);const s=r?.scrollY,i=document.documentElement.scrollHeight-a.current,c=window.innerHeight;s&&t>=s?n(!1):t+c<i&&n(!0)}),(0,l.$)(t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)}),{navbarRef:s,isNavbarVisible:t}}(t);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,c.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.A)(g.G.layout.navbar.container,"navbar","navbar--fixed-top",t&&[ot.navbarHideable,!i&&ot.navbarHidden],{"navbar--dark":"dark"===n,"navbar--primary":"primary"===n,"navbar-sidebar--show":a.shown}),children:[e,(0,u.jsx)(at,{onClick:a.toggle}),(0,u.jsx)(rt,{})]})}var it=n(62986);const ct="right";function lt({width:e=30,height:t=30,className:n,...r}){return(0,u.jsx)("svg",{className:n,width:e,height:t,viewBox:"0 0 30 30","aria-hidden":"true",...r,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function ut(){const{toggle:e,shown:t}=(0,A.M)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,c.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(lt,{})})}const dt={colorModeToggle:"colorModeToggle_Bfwy"};function pt({items:e}){return(0,u.jsx)(u.Fragment,{children:e.map((e,t)=>(0,u.jsx)(it.k2,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(Je,{...e})},t))})}function ft({left:e,right:t}){return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:(0,o.A)(g.G.layout.navbar.containerLeft,"navbar__items"),children:e}),(0,u.jsx)("div",{className:(0,o.A)(g.G.layout.navbar.containerRight,"navbar__items navbar__items--right"),children:t})]})}function ht(){const e=(0,A.M)(),t=(0,_.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??ct)}return[e.filter(t),e.filter(e=>!t(e))]}(t),o=t.find(e=>"search"===e.type);return(0,u.jsx)(ft,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(ut,{}),(0,u.jsx)(se,{}),(0,u.jsx)(pt,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(pt,{items:r}),(0,u.jsx)(oe,{className:dt.colorModeToggle}),!o&&(0,u.jsx)(We,{children:(0,u.jsx)(He,{})})]})})}function mt(){return(0,u.jsx)(st,{children:(0,u.jsx)(ht,{})})}function gt({item:e}){const{to:t,href:n,label:r,prependBaseUrlToHref:a,className:s,...i}=e,c=(0,ue.Ay)(t),l=(0,ue.Ay)(n,{forcePrependBaseUrl:!0});return(0,u.jsxs)(le.A,{className:(0,o.A)("footer__link-item",s),...n?{href:a?l:n}:{to:c},...i,children:[r,n&&!(0,de.A)(n)&&(0,u.jsx)(fe.A,{})]})}function bt({item:e}){return e.html?(0,u.jsx)("li",{className:(0,o.A)("footer__item",e.className),dangerouslySetInnerHTML:{__html:e.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(gt,{item:e})},e.href??e.to)}function yt({column:e}){return(0,u.jsxs)("div",{className:(0,o.A)(g.G.layout.footer.column,"col footer__col",e.className),children:[(0,u.jsx)("div",{className:"footer__title",children:e.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:e.items.map((e,t)=>(0,u.jsx)(bt,{item:e},t))})]})}function vt({columns:e}){return(0,u.jsx)("div",{className:"row footer__links",children:e.map((e,t)=>(0,u.jsx)(yt,{column:e},t))})}function _t(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function kt({item:e}){return e.html?(0,u.jsx)("span",{className:(0,o.A)("footer__link-item",e.className),dangerouslySetInnerHTML:{__html:e.html}}):(0,u.jsx)(gt,{item:e})}function wt({links:e}){return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:e.map((t,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(kt,{item:t}),e.length!==n+1&&(0,u.jsx)(_t,{})]},n))})})}function Ct({links:e}){return function(e){return"title"in e[0]}(e)?(0,u.jsx)(vt,{columns:e}):(0,u.jsx)(wt,{links:e})}var xt=n(10239);const St="footerLogoLink_sUlE";function Mt({logo:e}){const{withBaseUrl:t}=(0,ue.hH)(),n={light:t(e.src),dark:t(e.srcDark??e.src)};return(0,u.jsx)(xt.A,{className:(0,o.A)("footer__logo",e.className),alt:e.alt,sources:n,width:e.width,height:e.height,style:e.style})}function Et({logo:e}){return e.href?(0,u.jsx)(le.A,{href:e.href,className:St,target:e.target,children:(0,u.jsx)(Mt,{logo:e})}):(0,u.jsx)(Mt,{logo:e})}function Ot({copyright:e}){return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:e}})}function At({style:e,links:t,logo:n,copyright:r}){return(0,u.jsx)("footer",{className:(0,o.A)(g.G.layout.footer.container,"footer",{"footer--dark":"dark"===e}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[t,(n||r)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[n&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:n}),r]})]})})}function jt(){const{footer:e}=(0,_.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(At,{style:o,links:n&&n.length>0&&(0,u.jsx)(Ct,{links:n}),logo:r&&(0,u.jsx)(Et,{logo:r}),copyright:t&&(0,u.jsx)(Ot,{copyright:t})})}const Dt=r.memo(jt),Pt=(0,D.fM)([B.a,k.o,j.Tv,Qe.VQ,s.Jx,function({children:e}){return(0,u.jsx)(P.y_,{children:(0,u.jsx)(A.e,{children:(0,u.jsx)(I,{children:e})})})}]);function Tt({children:e}){return(0,u.jsx)(Pt,{children:e})}var It=n(45544);function Nt({error:e,tryAgain:t}){return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(It.A,{as:"h1",className:"hero__title",children:(0,u.jsx)(c.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(it.a2,{onClick:t,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(it.bq,{error:e})})]})})})}const Lt={mainWrapper:"mainWrapper_c5No"};function Rt(e){const{children:t,noFooter:n,wrapperClassName:r,title:i,description:c}=e;return(0,b.J)(),(0,u.jsxs)(Tt,{children:[(0,u.jsx)(s.be,{title:i,description:c}),(0,u.jsx)(v,{}),(0,u.jsx)(O,{}),(0,u.jsx)(mt,{}),(0,u.jsx)("div",{id:d,className:(0,o.A)(g.G.layout.main.container,g.G.wrapper.main,Lt.mainWrapper,r),children:(0,u.jsx)(a.A,{fallback:e=>(0,u.jsx)(Nt,{...e}),children:t})}),!n&&(0,u.jsx)(Dt,{})]})}},32912:()=>{!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n=/(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,r={pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[r,{pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),lookbehind:!0,inside:r.inside},{pattern:RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source+n+/[A-Z]\w*\b/.source),lookbehind:!0,inside:r.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":r,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(/(\bimport\s+)/.source+n+/(?:[A-Z]\w*|\*)(?=\s*;)/.source),lookbehind:!0,inside:{namespace:r.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(/(\bimport\s+static\s+)/.source+n+/(?:\w+|\*)(?=\s*;)/.source),lookbehind:!0,alias:"static",inside:{namespace:r.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!<keyword>)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(/<keyword>/g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism)},34072:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,s){if(e===s)return!0;if(e&&s&&"object"==typeof e&&"object"==typeof s){if(e.constructor!==s.constructor)return!1;var i,c,l,u;if(Array.isArray(e)){if((i=e.length)!=s.length)return!1;for(c=i;0!==c--;)if(!a(e[c],s[c]))return!1;return!0}if(n&&e instanceof Map&&s instanceof Map){if(e.size!==s.size)return!1;for(u=e.entries();!(c=u.next()).done;)if(!s.has(c.value[0]))return!1;for(u=e.entries();!(c=u.next()).done;)if(!a(c.value[1],s.get(c.value[0])))return!1;return!0}if(r&&e instanceof Set&&s instanceof Set){if(e.size!==s.size)return!1;for(u=e.entries();!(c=u.next()).done;)if(!s.has(c.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(s)){if((i=e.length)!=s.length)return!1;for(c=i;0!==c--;)if(e[c]!==s[c])return!1;return!0}if(e.constructor===RegExp)return e.source===s.source&&e.flags===s.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof s.valueOf)return e.valueOf()===s.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof s.toString)return e.toString()===s.toString();if((i=(l=Object.keys(e)).length)!==Object.keys(s).length)return!1;for(c=i;0!==c--;)if(!Object.prototype.hasOwnProperty.call(s,l[c]))return!1;if(t&&e instanceof Element)return!1;for(c=i;0!==c--;)if(("_owner"!==l[c]&&"__v"!==l[c]&&"__o"!==l[c]||!e.$$typeof)&&!a(e[l[c]],s[l[c]]))return!1;return!0}return e!=e&&s!=s}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},35387:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(){return s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s.apply(this,arguments)}var i=n(36672),c=[],l=[];var u=i.createContext(null);function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then(function(e){return n.loading=!1,n.loaded=e,e}).catch(function(e){throw n.loading=!1,n.error=e,e}),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach(function(r){var o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.promise.then(function(e){t.loaded[r]=e}).catch(function(e){t.error=e})})}catch(r){t.error=r}return t.promise=Promise.all(n).then(function(e){return t.loading=!1,e}).catch(function(e){throw t.loading=!1,e}),t}function f(e,t){return i.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=s({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return c.push(g),"function"==typeof h.webpack&&l.push(function(){if((0,h.webpack)().every(function(e){return void 0!==e&&void 0!==n.m[e]}))return g()}),p=d=function(t){function n(n){var r;return a(o(o(r=t.call(this,n)||this)),"retry",function(){r.setState({error:null,loading:!0,timedOut:!1}),m=e(h.loader),r._loadModule()}),g(),r.state={error:m.error,pastDelay:!1,timedOut:!1,loading:m.loading,loaded:m.loaded},r}r(n,t),n.preload=function(){return g()};var s=n.prototype;return s.UNSAFE_componentWillMount=function(){this._loadModule()},s.componentDidMount=function(){this._mounted=!0},s._loadModule=function(){var e=this;if(this.context&&Array.isArray(h.modules)&&h.modules.forEach(function(t){e.context.report(t)}),m.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout(function(){t({pastDelay:!0})},h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout(function(){t({timedOut:!0})},h.timeout));var n=function(){t({error:m.error,loaded:m.loaded,loading:m.loading}),e._clearTimeouts()};m.promise.then(function(){return n(),null}).catch(function(e){return n(),null})}},s.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},s._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},s.render=function(){return this.state.loading||this.state.error?i.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(i.Component),a(d,"contextType",u),p}function m(e){return h(d,e)}m.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(p,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){return i.createElement(u.Provider,{value:{report:this.props.report}},i.Children.only(this.props.children))},t}(i.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then(function(){if(e.length)return b(e)})}m.Capture=g,m.preloadAll=function(){return new Promise(function(e,t){b(c).then(e,t)})},m.preloadReady=function(){return new Promise(function(e,t){b(l).then(e,e)})},e.exports=m},35959:(e,t,n)=>{"use strict";e.exports=n(95843)},36149:(e,t,n)=>{"use strict";n.d(t,{B5:()=>C,Nr:()=>p,OF:()=>v,QB:()=>w,Vd:()=>_,Y:()=>b,fW:()=>k,w8:()=>m});var r=n(36672),o=n(85291),a=n(26271),s=n(75755),i=n(29837),c=n(40622),l=n(62721),u=n(92688),d=n(80480);function p(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=p(t);if(e)return e}}(e):void 0:e.href}const f=(e,t)=>void 0!==e&&(0,i.ys)(e,t),h=(e,t)=>e.some(e=>m(e,t));function m(e,t){return"link"===e.type?f(e.href,t):"category"===e.type&&(f(e.href,t)||h(e.items,t))}function g(e,t){switch(e.type){case"category":return m(e,t)||void 0!==e.href&&!e.linkUnlisted||e.items.some(e=>g(e,t));case"link":return!e.unlisted||m(e,t);default:return!0}}function b(e,t){return(0,r.useMemo)(()=>e.filter(e=>g(e,t)),[e,t])}function y({sidebarItems:e,pathname:t,onlyCategories:n=!1}){const r=[];return function e(o){for(const a of o)if("category"===a.type&&((0,i.ys)(a.href,t)||e(a.items))||"link"===a.type&&(0,i.ys)(a.href,t)){return n&&"category"!==a.type||r.unshift(a),!0}return!1}(e),r}function v(){const e=(0,d.t)(),{pathname:t}=(0,o.zy)(),n=(0,s.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function _(e){const{activeVersion:t}=(0,s.zK)(e),{preferredVersion:n}=(0,l.g1)(e),o=(0,s.r7)(e);return(0,r.useMemo)(()=>(0,c.sb)([t,n,o].filter(Boolean)),[t,n,o])}function k(e,t){const n=_(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.sidebars?Object.entries(e.sidebars):[]),r=t.find(t=>t[0]===e);if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map(e=>e.name).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map(e=>e[0]).join("\n- ")}`);return r[1]},[e,n])}function w(e,t){const n=_(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.docs),r=t.find(t=>t.id===e);if(!r){if(n.flatMap(e=>e.draftIds).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map(e=>e.name).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.sb)(t.map(e=>e.id)).join("\n- ")}`)}return r},[e,n])}function C({route:e}){const t=(0,o.zy)(),n=(0,u.r)(),r=e.routes,s=r.find(e=>(0,o.B6)(t.pathname,e));if(!s)return null;const i=s.sidebar,c=i?n.docsSidebars[i]:void 0;return{docElement:(0,a.v)(r),sidebarName:i,sidebarItems:c}}},36337:(e,t,n)=>{"use strict";n.d(t,{Bc:()=>O,E8:()=>Zn,a1:()=>Yn});var r=n(36672);n(57235);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t,n,r,o,a,s){try{var i=e[a](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(r,o)}function s(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var s=e.apply(t,n);function i(e){a(s,r,o,i,c,"next",e)}function c(e){a(s,r,o,i,c,"throw",e)}i(void 0)})}}function i(e,t,n){return t=p(t),function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,h()?Reflect.construct(t,n||[],p(e).constructor):t.apply(e,n))}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t,n){return Object.defineProperty(e,"prototype",{writable:!1}),e}function u(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d.apply(null,arguments)}function p(e){return p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},p(e)}function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&v(e,t)}function h(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(h=function(){return!!e})()}function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach(function(t){u(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function b(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function y(){y=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var a=t&&t.prototype instanceof b?t:b,s=Object.create(a.prototype),i=new D(r||[]);return o(s,"_invoke",{value:E(e,n,i)}),s}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",f="suspendedYield",h="executing",m="completed",g={};function b(){}function v(){}function _(){}var k={};l(k,s,function(){return this});var w=Object.getPrototypeOf,C=w&&w(w(P([])));C&&C!==n&&r.call(C,s)&&(k=C);var x=_.prototype=b.prototype=Object.create(k);function S(e){["next","throw","return"].forEach(function(t){l(e,t,function(e){return this._invoke(t,e)})})}function M(e,t){function n(o,a,s,i){var c=d(e[o],e,a);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==typeof u&&r.call(u,"__await")?t.resolve(u.__await).then(function(e){n("next",e,s,i)},function(e){n("throw",e,s,i)}):t.resolve(u).then(function(e){l.value=e,s(l)},function(e){return n("throw",e,s,i)})}i(c.arg)}var a;o(this,"_invoke",{value:function(e,r){function o(){return new t(function(t,o){n(e,r,t,o)})}return a=a?a.then(o,o):o()}})}function E(t,n,r){var o=p;return function(a,s){if(o===h)throw Error("Generator is already running");if(o===m){if("throw"===a)throw s;return{value:e,done:!0}}for(r.method=a,r.arg=s;;){var i=r.delegate;if(i){var c=O(i,r);if(c){if(c===g)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===p)throw o=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=h;var l=d(t,n,r);if("normal"===l.type){if(o=r.done?m:f,l.arg===g)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(o=m,r.method="throw",r.arg=l.arg)}}}function O(t,n){var r=n.method,o=t.iterator[r];if(o===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,O(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var a=d(o,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,g;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function D(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function P(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function n(){for(;++o<t.length;)if(r.call(t,o))return n.value=t[o],n.done=!1,n;return n.value=e,n.done=!0,n};return a.next=a}}throw new TypeError(typeof t+" is not iterable")}return v.prototype=_,o(x,"constructor",{value:_,configurable:!0}),o(_,"constructor",{value:v,configurable:!0}),v.displayName=l(_,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===v||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,_):(e.__proto__=_,l(e,c,"GeneratorFunction")),e.prototype=Object.create(x),e},t.awrap=function(e){return{__await:e}},S(M.prototype),l(M.prototype,i,function(){return this}),t.AsyncIterator=M,t.async=function(e,n,r,o,a){void 0===a&&(a=Promise);var s=new M(u(e,n,r,o),a);return t.isGeneratorFunction(n)?s:s.next().then(function(e){return e.done?e.value:s.next()})},S(x),l(x,c,"Generator"),l(x,s,function(){return this}),l(x,"toString",function(){return"[object Generator]"}),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=P,D.prototype={constructor:D,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(j),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function o(r,o){return i.type="throw",i.arg=t,n.next=r,o&&(n.method="next",n.arg=e),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],i=s.completion;if("root"===s.tryLoc)return o("end");if(s.tryLoc<=this.prev){var c=r.call(s,"catchLoc"),l=r.call(s,"finallyLoc");if(c&&l){if(this.prev<s.catchLoc)return o(s.catchLoc,!0);if(this.prev<s.finallyLoc)return o(s.finallyLoc)}else if(c){if(this.prev<s.catchLoc)return o(s.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return o(s.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=e,s.arg=t,a?(this.method="next",this.next=a.finallyLoc,g):this.complete(s)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),j(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;j(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:P(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}function v(e,t){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},v(e,t)}function _(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,s,i=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(l)throw o}}return i}}(e,t)||w(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||w(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function C(e){var t="function"==typeof Map?new Map:void 0;return C=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(h())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var o=new(e.bind.apply(e,r));return n&&v(o,n.prototype),o}(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,e)},C(e)}function x(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function S(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20","aria-hidden":"true"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var M=["translations"],E="Ctrl",O=r.forwardRef(function(e,t){var n=e.translations,o=void 0===n?{}:n,a=b(e,M),s=o.buttonText,i=void 0===s?"Search":s,c=o.buttonAriaLabel,l=void 0===c?"Search":c,u=_((0,r.useState)(null),2),p=u[0],f=u[1];(0,r.useEffect)(function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(E))},[]);var h=_(p===E?[E,"Ctrl",r.createElement(x,null)]:["Meta","Command",p],3),m=h[0],g=h[1],y=h[2];return r.createElement("button",d({type:"button",className:"DocSearch DocSearch-Button","aria-label":"".concat(l," (").concat(g,"+K)")},a,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(S,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},i)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==p&&r.createElement(r.Fragment,null,r.createElement(A,{reactsToKey:m},y),r.createElement(A,{reactsToKey:"k"},"K"))))});function A(e){var t=e.reactsToKey,n=e.children,o=_((0,r.useState)(!1),2),a=o[0],s=o[1];return(0,r.useEffect)(function(){if(t)return window.addEventListener("keydown",e),window.addEventListener("keyup",n),function(){window.removeEventListener("keydown",e),window.removeEventListener("keyup",n)};function e(e){e.key===t&&s(!0)}function n(e){e.key!==t&&"Meta"!==e.key||s(!1)}},[t]),r.createElement("kbd",{className:a?"DocSearch-Button-Key DocSearch-Button-Key--pressed":"DocSearch-Button-Key"},n)}function j(e,t){var n=void 0;return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];n&&clearTimeout(n),n=setTimeout(function(){return e.apply(void 0,o)},t)}}function D(e){return e.reduce(function(e,t){return e.concat(t)},[])}var P=0;function T(e){return 0===e.collections.length?0:e.collections.reduce(function(e,t){return e+t.items.length},0)}function I(e){return e!==Object(e)}function N(e,t){if(e===t)return!0;if(I(e)||I(t)||"function"==typeof e||"function"==typeof t)return e===t;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n=0,r=Object.keys(e);n<r.length;n++){var o=r[n];if(!(o in t))return!1;if(!N(e[o],t[o]))return!1}return!0}var L=function(){},R=[{segment:"autocomplete-core",version:"1.17.9"}];function F(e){var t=e.item,n=e.items,r=void 0===n?[]:n;return{index:t.__autocomplete_indexName,items:[t],positions:[1+r.findIndex(function(e){return e.objectID===t.objectID})],queryID:t.__autocomplete_queryID,algoliaSource:["autocomplete"]}}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var B=["items"],$=["items"];function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function q(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function V(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function G(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?W(Object(n),!0).forEach(function(t){K(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):W(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function K(e,t,n){return(t=function(e){var t=function(e){if("object"!==U(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===U(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(e){return e.map(function(e){var t=e.items,n=V(e,B);return G(G({},n),{},{objectIDs:(null==t?void 0:t.map(function(e){return e.objectID}))||n.objectIDs})})}function Y(e){var t,n,r,o=(t=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,s,i=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t);else for(;!(c=(r=a.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(l)throw o}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return z(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?z(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}((e.version||"").split(".").map(Number),2),n=t[0],r=t[1],n>=3||2===n&&r>=4||1===n&&r>=10);function a(t,n,r){if(o&&void 0!==r){var a=r[0].__autocomplete_algoliaCredentials,s={"X-Algolia-Application-Id":a.appId,"X-Algolia-API-Key":a.apiKey};e.apply(void 0,[t].concat(q(n),[{headers:s}]))}else e.apply(void 0,[t].concat(q(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setAuthenticatedUserToken:function(t){e("setAuthenticatedUserToken",t)},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&a("clickedObjectIDsAfterSearch",Q(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&a("clickedObjectIDs",Q(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.length>0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&a("convertedObjectIDsAfterSearch",Q(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&a("convertedObjectIDs",Q(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.length>0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t.length>0&&t.reduce(function(e,t){var n=t.items,r=V(t,$);return[].concat(q(e),q(function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r<e.objectIDs.length;r+=t)n.push(G(G({},e),{},{objectIDs:e.objectIDs.slice(r,r+t)}));return n}(G(G({},r),{},{objectIDs:(null==n?void 0:n.map(function(e){return e.objectID}))||r.objectIDs})).map(function(e){return{items:n,payload:e}})))},[]).forEach(function(e){var t=e.items;return a("viewedObjectIDs",[e.payload],t)})},viewedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.length>0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function Z(e){var t=e.items.reduce(function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e},{});return Object.keys(t).map(function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}})}function X(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function J(e){return J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},J(e)}function ee(e){return function(e){if(Array.isArray(e))return te(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return te(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?te(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(n),!0).forEach(function(t){oe(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ne(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function oe(e,t,n){return(t=function(e){var t=function(e){if("object"!==J(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==J(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===J(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ae="2.15.0",se="https://cdn.jsdelivr.net/npm/search-insights@".concat(ae,"/dist/search-insights.min.js"),ie=j(function(e){var t=e.onItemsChange,n=e.items,r=e.insights,o=e.state;t({insights:r,insightsEvents:Z({items:n}).map(function(e){return re({eventName:"Items Viewed"},e)}),state:o})},400);function ce(e){var t=function(e){return re({onItemsChange:function(e){var t=e.insights,n=e.insightsEvents,r=e.state;t.viewedObjectIDs.apply(t,ee(n.map(function(e){return re(re({},e),{},{algoliaSource:le(e.algoliaSource,r.context)})})))},onSelect:function(e){var t=e.insights,n=e.insightsEvents,r=e.state;t.clickedObjectIDsAfterSearch.apply(t,ee(n.map(function(e){return re(re({},e),{},{algoliaSource:le(e.algoliaSource,r.context)})})))},onActive:L,__autocomplete_clickAnalytics:!0},e)}(e),n=t.insightsClient,r=t.insightsInitParams,o=t.onItemsChange,a=t.onSelect,s=t.onActive,i=t.__autocomplete_clickAnalytics,c=n;if(n||"undefined"!=typeof window&&function(e){var t=e.window,n=t.AlgoliaAnalyticsObject||"aa";"string"==typeof n&&(c=t[n]),c||(t.AlgoliaAnalyticsObject=n,t[n]||(t[n]=function(){t[n].queue||(t[n].queue=[]);for(var e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];t[n].queue.push(r)}),t[n].version=ae,c=t[n],function(e){var t="[Autocomplete]: Could not load search-insights.js. Please load it manually following https://alg.li/insights-autocomplete";try{var n=e.document.createElement("script");n.async=!0,n.src=se,n.onerror=function(){console.error(t)},document.body.appendChild(n)}catch(e){console.error(t)}}(t))}({window:window}),!c)return{};r&&c("init",re({partial:!0},r));var l=Y(c),u={current:[]},d=j(function(e){var t=e.state;if(t.isOpen){var n=t.collections.reduce(function(e,t){return[].concat(ee(e),ee(t.items))},[]).filter(X);N(u.current.map(function(e){return e.objectID}),n.map(function(e){return e.objectID}))||(u.current=n,n.length>0&&ie({onItemsChange:o,items:n,insights:l,state:t}))}},0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;function o(e){t({algoliaInsightsPlugin:{__algoliaSearchParameters:re(re({},i?{clickAnalytics:!0}:{}),e?{userToken:ue(e)}:{}),insights:l}})}c("addAlgoliaAgent","insights-plugin"),o(),c("onUserTokenChange",function(e){o(e)}),c("getUserToken",null,function(e,t){o(t)}),n(function(e){var t=e.item,n=e.state,r=e.event,o=e.source;X(t)&&a({state:n,event:r,insights:l,item:t,insightsEvents:[re({eventName:"Item Selected"},F({item:t,items:o.getItems().filter(X)}))]})}),r(function(e){var t=e.item,n=e.source,r=e.state,o=e.event;X(t)&&s({state:r,event:o,insights:l,item:t,insightsEvents:[re({eventName:"Item Active"},F({item:t,items:n.getItems().filter(X)}))]})})},onStateChange:function(e){var t=e.state;d({state:t})},__autocomplete_pluginOptions:e}}function le(){var e,t=arguments.length>1?arguments[1]:void 0;return[].concat(ee(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]),["autocomplete-internal"],ee(null!==(e=t.algoliaInsightsPlugin)&&void 0!==e&&e.__automaticInsights?["autocomplete-automatic"]:[]))}function ue(e){return"number"==typeof e?e.toString():e}function de(e,t){var n=t;return{then:function(t,r){return de(e.then(fe(t,n,e),fe(r,n,e)),n)},catch:function(t){return de(e.catch(fe(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),de(e.finally(fe(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach(function(e){e()})},isCanceled:function(){return!0===n.isCanceled}}}function pe(e){return de(e,{isCanceled:!1,onCancelList:[]})}function fe(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function he(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function me(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ge(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?me(Object(n),!0).forEach(function(t){be(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):me(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function be(e,t,n){return(t=function(e){var t=function(e){if("object"!==ye(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==ye(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===ye(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ye(e){return ye="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ye(e)}function ve(e){var t=function(e){var t=e.collections.map(function(e){return e.items.length}).reduce(function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e},[]).reduce(function(t,n){return n<=e.activeItemId?t+1:t},0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,a=0;!1===r;){var s=t.collections[o];if(s===n){r=!0;break}a+=s.items.length,o++}return t.activeItemId-a}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}function _e(e,t,n){return[e,null==n?void 0:n.sourceId,t].filter(Boolean).join("-").replace(/\s/g,"")}var ke=/((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;function we(e){return e.nativeEvent||e}function Ce(e){return Ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ce(e)}function xe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Se(e,t,n){return(t=function(e){var t=function(e){if("object"!==Ce(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Ce(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Ce(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Me(e){return Me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Me(e)}function Ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Oe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(n),!0).forEach(function(t){Ae(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ee(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Ae(e,t,n){return(t=function(e){var t=function(e){if("object"!==Me(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Me(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Me(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function je(e){return je="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},je(e)}function De(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Te(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach(function(t){Ie(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Ie(e,t,n){return(t=function(e){var t=function(e){if("object"!==je(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==je(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===je(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ne(e,t){var n,r="undefined"!=typeof window?window:{},o=e.plugins||[];return Te(Te({debug:!1,openOnFocus:!1,enterKeyHint:void 0,ignoreCompositionEvents:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,insights:void 0,environment:r,shouldPanelOpen:function(e){return T(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:"autocomplete-".concat(P++),plugins:o,initialState:Te({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach(function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)})},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach(function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)})},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach(function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)})},getSources:function(n){return Promise.all([].concat(function(e){return function(e){if(Array.isArray(e))return De(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return De(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?De(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(o.map(function(e){return e.getSources})),[e.getSources]).filter(Boolean).map(function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then(function(e){return Promise.all(e.filter(function(e){return Boolean(e)}).map(function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:L,onResolve:L};Object.keys(t).forEach(function(e){t[e].__default=!0});var r=ge(ge({},t),e);return Promise.resolve(r)}))})}(e,n)})).then(function(e){return D(e)}).then(function(e){return e.map(function(e){return Te(Te({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach(function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)})},onActive:function(n){e.onActive(n),t.forEach(function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)})},onResolve:function(n){e.onResolve(n),t.forEach(function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)})}})})})},navigator:Te({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function Le(e){return Le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Le(e)}function Re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Re(Object(n),!0).forEach(function(t){ze(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Re(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function ze(e,t,n){return(t=function(e){var t=function(e){if("object"!==Le(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Le(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Le(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Be(e){return Be="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Be(e)}function $e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ue(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$e(Object(n),!0).forEach(function(t){qe(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$e(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function qe(e,t,n){return(t=function(e){var t=function(e){if("object"!==Be(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Be(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Be(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function He(e){return function(e){if(Array.isArray(e))return Ve(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Ve(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ve(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ve(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function We(e){return Boolean(e.execute)}function Ge(e){var t=e.reduce(function(e,t){if(!We(t))return e.push(t),e;var n=t.searchClient,r=t.execute,o=t.requesterId,a=t.requests,s=e.find(function(e){return We(t)&&We(e)&&e.searchClient===n&&Boolean(o)&&e.requesterId===o});if(s){var i;(i=s.items).push.apply(i,He(a))}else{var c={execute:r,requesterId:o,items:a,searchClient:n};e.push(c)}return e},[]).map(function(e){if(!We(e))return Promise.resolve(e);var t=e,n=t.execute,r=t.items;return n({searchClient:t.searchClient,requests:r})});return Promise.all(t).then(function(e){return D(e)})}function Ke(e){return Ke="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ke(e)}var Qe=["event","nextState","props","query","refresh","store"];function Ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ye(Object(n),!0).forEach(function(t){Xe(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ye(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Xe(e,t,n){return(t=function(e){var t=function(e){if("object"!==Ke(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Ke(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Ke(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Je,et,tt,nt=null,rt=(Je=-1,et=-1,tt=void 0,function(e){var t=++Je;return Promise.resolve(e).then(function(e){return tt&&t<et?tt:(et=t,tt=e,e)})});function ot(e){var t=e.event,n=e.nextState,r=void 0===n?{}:n,o=e.props,a=e.query,s=e.refresh,i=e.store,c=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,Qe);nt&&o.environment.clearTimeout(nt);var l=c.setCollections,u=c.setIsOpen,d=c.setQuery,p=c.setActiveItemId,f=c.setStatus,h=c.setContext;if(d(a),p(o.defaultActiveItemId),!a&&!1===o.openOnFocus){var m,g=i.getState().collections.map(function(e){return Ze(Ze({},e),{},{items:[]})});f("idle"),l(g),u(null!==(m=r.isOpen)&&void 0!==m?m:o.shouldPanelOpen({state:i.getState()}));var b=pe(rt(g).then(function(){return Promise.resolve()}));return i.pendingRequests.add(b)}f("loading"),nt=o.environment.setTimeout(function(){f("stalled")},o.stallThreshold);var y=pe(rt(o.getSources(Ze({query:a,refresh:s,state:i.getState()},c)).then(function(e){return Promise.all(e.map(function(e){return Promise.resolve(e.getItems(Ze({query:a,refresh:s,state:i.getState()},c))).then(function(t){return function(e,t,n){if(o=e,Boolean(null==o?void 0:o.execute)){var r="algolia"===e.requesterId?Object.assign.apply(Object,[{}].concat(He(Object.keys(n.context).map(function(e){var t;return null===(t=n.context[e])||void 0===t?void 0:t.__algoliaSearchParameters})))):{};return Ue(Ue({},e),{},{requests:e.queries.map(function(n){return{query:"algolia"===e.requesterId?Ue(Ue({},n),{},{params:Ue(Ue({},r),n.params)}):n,sourceId:t,transformResponse:e.transformResponse}})})}var o;return{items:e,sourceId:t}}(t,e.sourceId,i.getState())})})).then(Ge).then(function(t){var n,r=t.some(function(e){return function(e){return!Array.isArray(e)&&Boolean(null==e?void 0:e._automaticInsights)}(e.items)});return r&&h({algoliaInsightsPlugin:Ze(Ze({},(null===(n=i.getState().context)||void 0===n?void 0:n.algoliaInsightsPlugin)||{}),{},{__automaticInsights:r})}),function(e,t,n){return t.map(function(t){var r,o=e.filter(function(e){return e.sourceId===t.sourceId}),a=o.map(function(e){return e.items}),s=o[0].transformResponse,i=s?s({results:r=a,hits:r.map(function(e){return e.hits}).filter(Boolean),facetHits:r.map(function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map(function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}})}).filter(Boolean)}):a;return t.onResolve({source:t,results:a,items:i,state:n.getState()}),i.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:i}})}(t,e,i)}).then(function(e){return function(e){var t=e.props,n=e.state,r=e.collections.reduce(function(e,t){return Fe(Fe({},e),{},ze({},t.source.sourceId,Fe(Fe({},t.source),{},{getItems:function(){return D(t.items)}})))},{}),o=t.plugins.reduce(function(e,t){return t.reshape?t.reshape(e):e},{sourcesBySourceId:r,state:n}).sourcesBySourceId;return D(t.reshape({sourcesBySourceId:o,sources:Object.values(o),state:n})).filter(Boolean).map(function(e){return{source:e,items:e.getItems()}})}({collections:e,props:o,state:i.getState()})})}))).then(function(e){var n;f("idle"),l(e);var d=o.shouldPanelOpen({state:i.getState()});u(null!==(n=r.isOpen)&&void 0!==n?n:o.openOnFocus&&!a&&d||d);var p=ve(i.getState());if(null!==i.getState().activeItemId&&p){var h=p.item,m=p.itemInputValue,g=p.itemUrl,b=p.source;b.onActive(Ze({event:t,item:h,itemInputValue:m,itemUrl:g,refresh:s,source:b,state:i.getState()},c))}}).finally(function(){f("idle"),nt&&o.environment.clearTimeout(nt)});return i.pendingRequests.add(y)}function at(e){return at="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(e)}var st=["event","props","refresh","store"];function it(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ct(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?it(Object(n),!0).forEach(function(t){lt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):it(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function lt(e,t,n){return(t=function(e){var t=function(e){if("object"!==at(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==at(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===at(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ut(e){return ut="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ut(e)}var dt=["props","refresh","store"],pt=["inputElement","formElement","panelElement"],ft=["inputElement"],ht=["inputElement","maxLength"],mt=["source"],gt=["item","source"];function bt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function yt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bt(Object(n),!0).forEach(function(t){vt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function vt(e,t,n){return(t=function(e){var t=function(e){if("object"!==ut(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==ut(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===ut(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _t(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function kt(e){var t=e.props,n=e.refresh,r=e.store,o=_t(e,dt);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,a=e.panelElement;function s(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,a].some(function(t){return(n=t)===(r=e.target)||n.contains(r);var n,r})&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return yt({onTouchStart:s,onMouseDown:s,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},_t(e,pt))},getRootProps:function(e){return yt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-controls":r.getState().isOpen?r.getState().collections.map(function(e){var n=e.source;return _e(t.id,"list",n)}).join(" "):void 0,"aria-labelledby":_e(t.id,"label")},e)},getFormProps:function(e){return e.inputElement,yt({action:"",noValidate:!0,role:"search",onSubmit:function(a){var s;a.preventDefault(),t.onSubmit(yt({event:a,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(s=e.inputElement)||void 0===s||s.blur()},onReset:function(a){var s;a.preventDefault(),t.onReset(yt({event:a,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(s=e.inputElement)||void 0===s||s.focus()}},_t(e,ft))},getLabelProps:function(e){return yt({htmlFor:_e(t.id,"input"),id:_e(t.id,"label")},e)},getInputProps:function(e){var a;function s(e){(t.openOnFocus||Boolean(r.getState().query))&&ot(yt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var i=e||{};i.inputElement;var c=i.maxLength,l=void 0===c?512:c,u=_t(i,ht),d=ve(r.getState()),p=function(e){return Boolean(e&&e.match(ke))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),f=t.enterKeyHint||(null!=d&&d.itemUrl&&!p?"go":"search");return yt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?_e(t.id,"item-".concat(r.getState().activeItemId),null==d?void 0:d.source):void 0,"aria-controls":r.getState().isOpen?r.getState().collections.map(function(e){var n=e.source;return _e(t.id,"list",n)}).join(" "):void 0,"aria-labelledby":_e(t.id,"label"),value:r.getState().completion||r.getState().query,id:_e(t.id,"input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:f,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:l,type:"search",onChange:function(e){var a=e.currentTarget.value;t.ignoreCompositionEvents&&we(e).isComposing?o.setQuery(a):ot(yt({event:e,props:t,query:a.slice(0,l),refresh:n,store:r},o))},onCompositionEnd:function(e){ot(yt({event:e,props:t,query:e.currentTarget.value.slice(0,l),refresh:n,store:r},o))},onKeyDown:function(e){we(e).isComposing||function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,a=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,st);if("ArrowUp"===t.key||"ArrowDown"===t.key){var s=function(){var e=ve(o.getState()),t=n.environment.document.getElementById(_e(n.id,"item-".concat(o.getState().activeItemId),null==e?void 0:e.source));t&&(t.scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded(!1):t.scrollIntoView(!1))},i=function(){var e=ve(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,s=e.itemInputValue,i=e.itemUrl,c=e.source;c.onActive(ct({event:t,item:n,itemInputValue:s,itemUrl:i,refresh:r,source:c,state:o.getState()},a))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?ot(ct({event:t,props:n,query:o.getState().query,refresh:r,store:o},a)).then(function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),i(),setTimeout(s,0)}):(o.dispatch(t.key,{}),i(),s())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every(function(e){return 0===e.items.length}))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var c=ve(o.getState()),l=c.item,u=c.itemInputValue,d=c.itemUrl,p=c.source;if(t.metaKey||t.ctrlKey)void 0!==d&&(p.onSelect(ct({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:o.getState()},a)),n.navigator.navigateNewTab({itemUrl:d,item:l,state:o.getState()}));else if(t.shiftKey)void 0!==d&&(p.onSelect(ct({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:o.getState()},a)),n.navigator.navigateNewWindow({itemUrl:d,item:l,state:o.getState()}));else if(t.altKey);else{if(void 0!==d)return p.onSelect(ct({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:o.getState()},a)),void n.navigator.navigate({itemUrl:d,item:l,state:o.getState()});ot(ct({event:t,nextState:{isOpen:!1},props:n,query:u,refresh:r,store:o},a)).then(function(){p.onSelect(ct({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:o.getState()},a))})}}}(yt({event:e,props:t,refresh:n,store:r},o))},onFocus:s,onBlur:L,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||s(n)}},u)},getPanelProps:function(e){return yt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.source,o=_t(n,mt);return yt({role:"listbox","aria-labelledby":_e(t.id,"label"),id:_e(t.id,"list",r)},o)},getItemProps:function(e){var a=e.item,s=e.source,i=_t(e,gt);return yt({id:_e(t.id,"item-".concat(a.__autocomplete_id),s),role:"option","aria-selected":r.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",a.__autocomplete_id);var t=ve(r.getState());if(null!==r.getState().activeItemId&&t){var s=t.item,i=t.itemInputValue,c=t.itemUrl,l=t.source;l.onActive(yt({event:e,item:s,itemInputValue:i,itemUrl:c,refresh:n,source:l,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=s.getItemInputValue({item:a,state:r.getState()}),c=s.getItemUrl({item:a,state:r.getState()});(c?Promise.resolve():ot(yt({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:n,store:r},o))).then(function(){s.onSelect(yt({event:e,item:a,itemInputValue:i,itemUrl:c,refresh:n,source:s,state:r.getState()},o))})}},i)}}}function wt(e){return wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},wt(e)}function Ct(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function xt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ct(Object(n),!0).forEach(function(t){St(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ct(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function St(e,t,n){return(t=function(e){var t=function(e){if("object"!==wt(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==wt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===wt(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Mt(e){var t,n,r,o,a=e.plugins,s=e.options,i=null===(t=((null===(n=s.__autocomplete_metadata)||void 0===n?void 0:n.userAgents)||[])[0])||void 0===t?void 0:t.segment,c=i?St({},i,Object.keys((null===(r=s.__autocomplete_metadata)||void 0===r?void 0:r.options)||{})):{};return{plugins:a.map(function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}}),options:xt({"autocomplete-core":Object.keys(s)},c),ua:R.concat((null===(o=s.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])}}function Et(e){var t,n=e.state;return!1===n.isOpen||null===n.activeItemId?null:(null===(t=ve(n))||void 0===t?void 0:t.itemInputValue)||null}function Ot(e){return Ot="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ot(e)}function At(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function jt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?At(Object(n),!0).forEach(function(t){Dt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):At(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Dt(e,t,n){return(t=function(e){var t=function(e){if("object"!==Ot(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Ot(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Ot(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Pt=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return jt(jt({},e),{},{activeItemId:t.payload});case"setQuery":return jt(jt({},e),{},{query:t.payload,completion:null});case"setCollections":return jt(jt({},e),{},{collections:t.payload});case"setIsOpen":return jt(jt({},e),{},{isOpen:t.payload});case"setStatus":return jt(jt({},e),{},{status:t.payload});case"setContext":return jt(jt({},e),{},{context:jt(jt({},e.context),t.payload)});case"ArrowDown":var n=jt(jt({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:he(1,e.activeItemId,T(e),t.props.defaultActiveItemId)});return jt(jt({},n),{},{completion:Et({state:n})});case"ArrowUp":var r=jt(jt({},e),{},{activeItemId:he(-1,e.activeItemId,T(e),t.props.defaultActiveItemId)});return jt(jt({},r),{},{completion:Et({state:r})});case"Escape":return e.isOpen?jt(jt({},e),{},{activeItemId:null,isOpen:!1,completion:null}):jt(jt({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return jt(jt({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return jt(jt({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",completion:null,query:""});case"focus":return jt(jt({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:jt(jt({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return jt(jt({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function Tt(e){return Tt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Tt(e)}function It(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Nt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?It(Object(n),!0).forEach(function(t){Lt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):It(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Lt(e,t,n){return(t=function(e){var t=function(e){if("object"!==Tt(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==Tt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Tt(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Rt(e){var t=[],n=Ne(e,t),r=function(e,t,n){var r,o=t.initialState;return{getState:function(){return o},dispatch:function(r,a){var s=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xe(Object(n),!0).forEach(function(t){Se(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xe(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},o);o=e(o,{type:r,props:t,payload:a}),n({state:o,prevState:s})},pendingRequests:(r=[],{add:function(e){return r.push(e),e.finally(function(){r=r.filter(function(t){return t!==e})})},cancelAll:function(){r.forEach(function(e){return e.cancel()})},isEmpty:function(){return 0===r.length}})}}(Pt,n,function(e){var t,r,a=e.prevState,l=e.state;if(n.onStateChange(Nt({prevState:a,state:l,refresh:s,navigator:n.navigator},o)),!c()&&null!==(t=l.context)&&void 0!==t&&null!==(r=t.algoliaInsightsPlugin)&&void 0!==r&&r.__automaticInsights&&!1!==n.insights){var u=ce({__autocomplete_clickAnalytics:!1});n.plugins.push(u),i([u])}}),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map(function(e){return Oe(Oe({},e),{},{items:D(e.items).map(function(e){return Oe(Oe({},e),{},{__autocomplete_id:n++})})})});t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),a=kt(Nt({props:n,refresh:s,store:r,navigator:n.navigator},o));function s(){return ot(Nt({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,navigator:n.navigator,query:r.getState().query,refresh:s,store:r},o))}function i(e){e.forEach(function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,Nt(Nt({},o),{},{navigator:n.navigator,refresh:s,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})},onResolve:function(e){t.push({onResolve:e})}}))})}function c(){return n.plugins.some(function(e){return"aa.algoliaInsightsPlugin"===e.name})}if(n.insights&&!c()){var l="boolean"==typeof n.insights?{}:n.insights;n.plugins.push(ce(l))}return i(n.plugins),function(e){var t,n,r=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var a=o.document.createElement("meta"),s=o.document.querySelector("head");a.name="algolia:metadata",setTimeout(function(){a.content=JSON.stringify(r),s.appendChild(a)},0)}}({metadata:Mt({plugins:n.plugins,options:e}),environment:n.environment}),Nt(Nt({refresh:s,navigator:n.navigator},a),o)}function Ft(e){var t=e.translations,n=(void 0===t?{}:t).searchByText,o=void 0===n?"Search by":n;return r.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},r.createElement("span",{className:"DocSearch-Label"},o),r.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500"},r.createElement("defs",null,r.createElement("style",null,".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}")),r.createElement("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),r.createElement("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),r.createElement("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),r.createElement("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),r.createElement("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),r.createElement("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),r.createElement("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),r.createElement("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),r.createElement("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})))}function zt(e){return r.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},r.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function Bt(e){var t=e.translations,n=void 0===t?{}:t,o=n.selectText,a=void 0===o?"to select":o,s=n.selectKeyAriaLabel,i=void 0===s?"Enter key":s,c=n.navigateText,l=void 0===c?"to navigate":c,u=n.navigateUpKeyAriaLabel,d=void 0===u?"Arrow up":u,p=n.navigateDownKeyAriaLabel,f=void 0===p?"Arrow down":p,h=n.closeText,m=void 0===h?"to close":h,g=n.closeKeyAriaLabel,b=void 0===g?"Escape key":g,y=n.searchByText,v=void 0===y?"Search by":y;return r.createElement(r.Fragment,null,r.createElement("div",{className:"DocSearch-Logo"},r.createElement(Ft,{translations:{searchByText:v}})),r.createElement("ul",{className:"DocSearch-Commands"},r.createElement("li",null,r.createElement("kbd",{className:"DocSearch-Commands-Key"},r.createElement(zt,{ariaLabel:i},r.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),r.createElement("span",{className:"DocSearch-Label"},a)),r.createElement("li",null,r.createElement("kbd",{className:"DocSearch-Commands-Key"},r.createElement(zt,{ariaLabel:f},r.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),r.createElement("kbd",{className:"DocSearch-Commands-Key"},r.createElement(zt,{ariaLabel:d},r.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),r.createElement("span",{className:"DocSearch-Label"},l)),r.createElement("li",null,r.createElement("kbd",{className:"DocSearch-Commands-Key"},r.createElement(zt,{ariaLabel:b},r.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),r.createElement("span",{className:"DocSearch-Label"},m))))}function $t(e){var t=e.hit,n=e.children;return r.createElement("a",{href:t.url},n)}function Ut(){return r.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},r.createElement("g",{fill:"none",fillRule:"evenodd"},r.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),r.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},r.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}function qt(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),r.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function Ht(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Vt(){return r.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),r.createElement("path",{d:"M8 17l-6-6 6-6"})))}var Wt=function(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Gt(e){switch(e.type){case"lvl1":return r.createElement(Wt,null);case"content":return r.createElement(Qt,null);default:return r.createElement(Kt,null)}}function Kt(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Qt(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Yt(){return r.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},r.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Zt(){return r.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function Xt(){return r.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}function Jt(e){var t=e.translations,n=void 0===t?{}:t,o=n.titleText,a=void 0===o?"Unable to fetch results":o,s=n.helpText,i=void 0===s?"You might want to check your network connection.":s;return r.createElement("div",{className:"DocSearch-ErrorScreen"},r.createElement("div",{className:"DocSearch-Screen-Icon"},r.createElement(Zt,null)),r.createElement("p",{className:"DocSearch-Title"},a),r.createElement("p",{className:"DocSearch-Help"},i))}var en=["translations"];function tn(e){var t=e.translations,n=void 0===t?{}:t,o=b(e,en),a=n.noResultsText,s=void 0===a?"No results for":a,i=n.suggestedQueryText,c=void 0===i?"Try searching for":i,l=n.reportMissingResultsText,u=void 0===l?"Believe this query should return results?":l,d=n.reportMissingResultsLinkText,p=void 0===d?"Let us know.":d,f=o.state.context.searchSuggestions;return r.createElement("div",{className:"DocSearch-NoResults"},r.createElement("div",{className:"DocSearch-Screen-Icon"},r.createElement(Xt,null)),r.createElement("p",{className:"DocSearch-Title"},s,' "',r.createElement("strong",null,o.state.query),'"'),f&&f.length>0&&r.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},r.createElement("p",{className:"DocSearch-Help"},c,":"),r.createElement("ul",null,f.slice(0,3).reduce(function(e,t){return[].concat(k(e),[r.createElement("li",{key:t},r.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){o.setQuery(t.toLowerCase()+" "),o.refresh(),o.inputRef.current.focus()}},t))])},[]))),o.getMissingResultsUrl&&r.createElement("p",{className:"DocSearch-Help"},"".concat(u," "),r.createElement("a",{href:o.getMissingResultsUrl({query:o.state.query}),target:"_blank",rel:"noopener noreferrer"},p)))}var nn=["hit","attribute","tagName"];function rn(e,t){return t.split(".").reduce(function(e,t){return null!=e&&e[t]?e[t]:null},e)}function on(e){var t=e.hit,n=e.attribute,o=e.tagName,a=void 0===o?"span":o,s=b(e,nn);return(0,r.createElement)(a,g(g({},s),{},{dangerouslySetInnerHTML:{__html:rn(t,"_snippetResult.".concat(n,".value"))||rn(t,n)}}))}function an(e){return e.collection&&0!==e.collection.items.length?r.createElement("section",{className:"DocSearch-Hits"},r.createElement("div",{className:"DocSearch-Hit-source"},e.title),r.createElement("ul",e.getListProps(),e.collection.items.map(function(t,n){return r.createElement(sn,d({key:[e.title,t.objectID].join(":"),item:t,index:n},e))}))):null}function sn(e){var t=e.item,n=e.index,o=e.renderIcon,a=e.renderAction,s=e.getItemProps,i=e.onItemClick,c=e.collection,l=e.hitComponent,u=_(r.useState(!1),2),p=u[0],f=u[1],h=_(r.useState(!1),2),m=h[0],g=h[1],b=r.useRef(null),y=l;return r.createElement("li",d({className:["DocSearch-Hit",t.__docsearch_parent&&"DocSearch-Hit--Child",p&&"DocSearch-Hit--deleting",m&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){b.current&&b.current()}},s({item:t,source:c.source,onClick:function(e){i(t,e)}})),r.createElement(y,{hit:t},r.createElement("div",{className:"DocSearch-Hit-Container"},o({item:t,index:n}),t.hierarchy[t.type]&&"lvl1"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(on,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.lvl1"}),t.content&&r.createElement(on,{className:"DocSearch-Hit-path",hit:t,attribute:"content"})),t.hierarchy[t.type]&&("lvl2"===t.type||"lvl3"===t.type||"lvl4"===t.type||"lvl5"===t.type||"lvl6"===t.type)&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(on,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.".concat(t.type)}),r.createElement(on,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),"content"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(on,{className:"DocSearch-Hit-title",hit:t,attribute:"content"}),r.createElement(on,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),a({item:t,runDeleteTransition:function(e){f(!0),b.current=e},runFavoriteTransition:function(e){g(!0),b.current=e}}))))}function cn(e,t,n){return e.reduce(function(e,r){var o=t(r);return e.hasOwnProperty(o)||(e[o]=[]),e[o].length<(n||5)&&e[o].push(r),e},{})}function ln(e){return e}function un(e){return 1===e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}function dn(){}var pn=/(<mark>|<\/mark>)/g,fn=RegExp(pn.source);function hn(e){var t,n,r=e;if(!r.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var o=r.__docsearch_parent?null===(t=r.__docsearch_parent)||void 0===t||null===(t=t._highlightResult)||void 0===t||null===(t=t.hierarchy)||void 0===t?void 0:t.lvl0:null===(n=e._highlightResult)||void 0===n||null===(n=n.hierarchy)||void 0===n?void 0:n.lvl0;return o?o.value&&fn.test(o.value)?o.value.replace(pn,""):o.value:e.hierarchy.lvl0}function mn(e){return r.createElement("div",{className:"DocSearch-Dropdown-Container"},e.state.collections.map(function(t){if(0===t.items.length)return null;var n=hn(t.items[0]);return r.createElement(an,d({},e,{key:t.source.sourceId,title:n,collection:t,renderIcon:function(e){var n,o=e.item,a=e.index;return r.createElement(r.Fragment,null,o.__docsearch_parent&&r.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},o.__docsearch_parent!==(null===(n=t.items[a+1])||void 0===n?void 0:n.__docsearch_parent)?r.createElement("path",{d:"M8 6v21M20 27H8.3"}):r.createElement("path",{d:"M8 6v42M20 27H8.3"}))),r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Gt,{type:o.type})))},renderAction:function(){return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement(Vt,null))}}))}),e.resultsFooterComponent&&r.createElement("section",{className:"DocSearch-HitsFooter"},r.createElement(e.resultsFooterComponent,{state:e.state})))}var gn=["translations"];function bn(e){var t=e.translations,n=void 0===t?{}:t,o=b(e,gn),a=n.recentSearchesTitle,s=void 0===a?"Recent":a,i=n.noRecentSearchesText,c=void 0===i?"No recent searches":i,l=n.saveRecentSearchButtonTitle,u=void 0===l?"Save this search":l,p=n.removeRecentSearchButtonTitle,f=void 0===p?"Remove this search from history":p,h=n.favoriteSearchesTitle,m=void 0===h?"Favorite":h,g=n.removeFavoriteSearchButtonTitle,y=void 0===g?"Remove this search from favorites":g;return"idle"===o.state.status&&!1===o.hasCollections?o.disableUserPersonalization?null:r.createElement("div",{className:"DocSearch-StartScreen"},r.createElement("p",{className:"DocSearch-Help"},c)):!1===o.hasCollections?null:r.createElement("div",{className:"DocSearch-Dropdown-Container"},r.createElement(an,d({},o,{title:s,collection:o.state.collections[0],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(qt,null))},renderAction:function(e){var t=e.item,n=e.runFavoriteTransition,a=e.runDeleteTransition;return r.createElement(r.Fragment,null,r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:u,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n(function(){o.favoriteSearches.add(t),o.recentSearches.remove(t),o.refresh()})}},r.createElement(Yt,null))),r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),a(function(){o.recentSearches.remove(t),o.refresh()})}},r.createElement(Ht,null))))}})),r.createElement(an,d({},o,{title:m,collection:o.state.collections[1],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Yt,null))},renderAction:function(e){var t=e.item,n=e.runDeleteTransition;return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:y,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n(function(){o.favoriteSearches.remove(t),o.refresh()})}},r.createElement(Ht,null)))}})))}var yn=["translations"],vn=r.memo(function(e){var t=e.translations,n=void 0===t?{}:t,o=b(e,yn);if("error"===o.state.status)return r.createElement(Jt,{translations:null==n?void 0:n.errorScreen});var a=o.state.collections.some(function(e){return e.items.length>0});return o.state.query?!1===a?r.createElement(tn,d({},o,{translations:null==n?void 0:n.noResultsScreen})):r.createElement(mn,o):r.createElement(bn,d({},o,{hasCollections:a,translations:null==n?void 0:n.startScreen}))},function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}),_n=["translations"];function kn(e){var t=e.translations,n=void 0===t?{}:t,o=b(e,_n),a=n.resetButtonTitle,s=void 0===a?"Clear the query":a,i=n.resetButtonAriaLabel,c=void 0===i?"Clear the query":i,l=n.cancelButtonText,u=void 0===l?"Cancel":l,p=n.cancelButtonAriaLabel,f=void 0===p?"Cancel":p,h=n.searchInputLabel,m=void 0===h?"Search":h,g=o.getFormProps({inputElement:o.inputRef.current}).onReset;return r.useEffect(function(){o.autoFocus&&o.inputRef.current&&o.inputRef.current.focus()},[o.autoFocus,o.inputRef]),r.useEffect(function(){o.isFromSelection&&o.inputRef.current&&o.inputRef.current.select()},[o.isFromSelection,o.inputRef]),r.createElement(r.Fragment,null,r.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:g},r.createElement("label",d({className:"DocSearch-MagnifierLabel"},o.getLabelProps()),r.createElement(S,null),r.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},m)),r.createElement("div",{className:"DocSearch-LoadingIndicator"},r.createElement(Ut,null)),r.createElement("input",d({className:"DocSearch-Input",ref:o.inputRef},o.getInputProps({inputElement:o.inputRef.current,autoFocus:o.autoFocus,maxLength:64}))),r.createElement("button",{type:"reset",title:s,className:"DocSearch-Reset","aria-label":c,hidden:!o.state.query},r.createElement(Ht,null))),r.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":f,onClick:o.onClose},u))}var wn=["_highlightResult","_snippetResult"];function Cn(e){var t=e.key,n=e.limit,r=void 0===n?5:n,o=function(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(e){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}(t),a=o.getItem().slice(0,r);return{add:function(e){var t=e;t._highlightResult,t._snippetResult;var n=b(t,wn),s=a.findIndex(function(e){return e.objectID===n.objectID});s>-1&&a.splice(s,1),a.unshift(n),a=a.slice(0,r),o.setItem(a)},remove:function(e){a=a.filter(function(t){return t.objectID!==e.objectID}),o.setItem(a)},getAll:function(){return a}}}function xn(e){var t,n="algolia-client-js-".concat(e.key);function r(){return void 0===t&&(t=e.localStorage||window.localStorage),t}function o(){return JSON.parse(r().getItem(n)||"{}")}function a(e){r().setItem(n,JSON.stringify(e))}return{get:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){var n,r,s;return n=e.timeToLive?1e3*e.timeToLive:null,r=o(),a(s=Object.fromEntries(Object.entries(r).filter(function(e){return void 0!==_(e,2)[1].timestamp}))),n&&a(Object.fromEntries(Object.entries(s).filter(function(e){var t=_(e,2)[1],r=(new Date).getTime();return!(t.timestamp+n<r)}))),o()[JSON.stringify(t)]}).then(function(e){return Promise.all([e?e.value:n(),void 0!==e])}).then(function(e){var t=_(e,2),n=t[0],o=t[1];return Promise.all([n,o||r.miss(n)])}).then(function(e){return _(e,1)[0]})},set:function(e,t){return Promise.resolve().then(function(){var a=o();return a[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},r().setItem(n,JSON.stringify(a)),t})},delete:function(e){return Promise.resolve().then(function(){var t=o();delete t[JSON.stringify(e)],r().setItem(n,JSON.stringify(t))})},clear:function(){return Promise.resolve().then(function(){r().removeItem(n)})}}}function Sn(e){var t=k(e.caches),n=t.shift();return void 0===n?{get:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then(function(e){return Promise.all([e,n.miss(e)])}).then(function(e){return _(e,1)[0]})},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return n.get(e,r,o).catch(function(){return Sn({caches:t}).get(e,r,o)})},set:function(e,r){return n.set(e,r).catch(function(){return Sn({caches:t}).set(e,r)})},delete:function(e){return n.delete(e).catch(function(){return Sn({caches:t}).delete(e)})},clear:function(){return n.clear().catch(function(){return Sn({caches:t}).clear()})}}}function Mn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(n,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(n);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var s=r();return s.then(function(e){return o.miss(e)}).then(function(){return s})},set:function(n,r){return t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function En(e){var t=e.algoliaAgents,n=e.client,r=e.version,o=function(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var n="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(n)&&(t.value="".concat(t.value).concat(n)),t}};return t}(r).add({segment:n,version:r});return t.forEach(function(e){return o.add(e)}),o}var On=12e4;function An(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"up",n=Date.now();return g(g({},e),{},{status:t,lastUpdate:n,isUp:function(){return"up"===t||Date.now()-n>On},isTimedOut:function(){return"timed out"===t&&Date.now()-n<=On}})}var jn=function(){function e(t,n){var r;return c(this,e),u(r=i(this,e,[t]),"name","AlgoliaError"),n&&(r.name=n),r}return f(e,C(Error)),l(e)}(),Dn=function(){function e(t,n,r){var o;return c(this,e),u(o=i(this,e,[t,r]),"stackTrace",void 0),o.stackTrace=n,o}return f(e,jn),l(e)}(),Pn=function(){function e(t){return c(this,e),i(this,e,["Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support.",t,"RetryError"])}return f(e,Dn),l(e)}(),Tn=function(){function e(t,n,r){var o,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ApiError";return c(this,e),u(o=i(this,e,[t,r,a]),"status",void 0),o.status=n,o}return f(e,Dn),l(e)}(),In=function(){function e(t,n){var r;return c(this,e),u(r=i(this,e,[t,"DeserializationError"]),"response",void 0),r.response=n,r}return f(e,jn),l(e)}(),Nn=function(){function e(t,n,r,o){var a;return c(this,e),u(a=i(this,e,[t,n,o,"DetailedApiError"]),"error",void 0),a.error=r,a}return f(e,Tn),l(e)}();function Ln(e,t,n){var r,o=(r=n,Object.keys(r).filter(function(e){return void 0!==r[e]}).sort().map(function(e){return"".concat(e,"=").concat(encodeURIComponent("[object Array]"===Object.prototype.toString.call(r[e])?r[e].join(","):r[e]).replace(/\+/g,"%20"))}).join("&")),a="".concat(e.protocol,"://").concat(e.url).concat(e.port?":".concat(e.port):"","/").concat("/"===t.charAt(0)?t.substring(1):t);return o.length&&(a+="?".concat(o)),a}function Rn(e,t){if("GET"!==e.method&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:g(g({},e.data),t.data);return JSON.stringify(n)}}function Fn(e,t,n){var r=g(g(g({Accept:"application/json"},e),t),n),o={};return Object.keys(r).forEach(function(e){var t=r[e];o[e.toLowerCase()]=t}),o}function zn(e){try{return JSON.parse(e.content)}catch(t){throw new In(t.message,e)}}function Bn(e,t){var n=e.content,r=e.status;try{var o=JSON.parse(n);return"error"in o?new Nn(o.message,r,o.error,t):new Tn(o.message,r,t)}catch(e){}return new Tn(n,r,t)}function $n(e){return e.map(function(e){return Un(e)})}function Un(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return g(g({},e),{},{request:g(g({},e.request),{},{headers:g(g({},e.request.headers),t)})})}var qn=["appId","apiKey","authMode","algoliaAgents"],Hn=["params"],Vn="5.19.0";function Wn(e){return[{url:"".concat(e,"-dsn.algolia.net"),accept:"read",protocol:"https"},{url:"".concat(e,".algolia.net"),accept:"write",protocol:"https"}].concat(function(e){for(var t=e,n=e.length-1;n>0;n--){var r=Math.floor(Math.random()*(n+1)),o=e[n];t[n]=e[r],t[r]=o}return t}([{url:"".concat(e,"-1.algolianet.com"),accept:"readWrite",protocol:"https"},{url:"".concat(e,"-2.algolianet.com"),accept:"readWrite",protocol:"https"},{url:"".concat(e,"-3.algolianet.com"),accept:"readWrite",protocol:"https"}]))}var Gn="3.9.0";function Kn(e,t,n){return r.useMemo(function(){var r=function(e,t){if(!e||"string"!=typeof e)throw new Error("`appId` is missing.");if(!t||"string"!=typeof t)throw new Error("`apiKey` is missing.");return function(e){var t=e.appId,n=e.apiKey,r=e.authMode,o=e.algoliaAgents,a=b(e,qn),i=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"WithinHeaders",r={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers:function(){return"WithinHeaders"===n?r:{}},queryParameters:function(){return"WithinQueryParameters"===n?r:{}}}}(t,n,r),c=function(e){var t=e.hosts,n=e.hostsCache,r=e.baseHeaders,o=e.logger,a=e.baseQueryParameters,i=e.algoliaAgent,c=e.timeouts,l=e.requester,u=e.requestsCache,d=e.responsesCache;function p(e){return f.apply(this,arguments)}function f(){return(f=s(y().mark(function e(t){var r,o,a,s,i;return y().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all(t.map(function(e){return n.get(e,function(){return Promise.resolve(An(e))})}));case 2:return r=e.sent,o=r.filter(function(e){return e.isUp()}),a=r.filter(function(e){return e.isTimedOut()}),s=[].concat(k(o),k(a)),i=s.length>0?s:t,e.abrupt("return",{hosts:i,getTimeout:function(e,t){return(0===a.length&&0===e?1:a.length+3+e)*t}});case 8:case"end":return e.stop()}},e)}))).apply(this,arguments)}function h(e,t){return m.apply(this,arguments)}function m(){return m=s(y().mark(function e(u,d){var f,h,m,b,v,_,w,C,x,S,M,E,O,A=arguments;return y().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(f=!(A.length>2&&void 0!==A[2])||A[2],h=[],m=Rn(u,d),b=Fn(r,u.headers,d.headers),v="GET"===u.method?g(g({},u.data),d.data):{},_=g(g(g({},a),u.queryParameters),v),i.value&&(_["x-algolia-agent"]=i.value),d&&d.queryParameters)for(w=0,C=Object.keys(d.queryParameters);w<C.length;w++)x=C[w],d.queryParameters[x]&&"[object Object]"!==Object.prototype.toString.call(d.queryParameters[x])?_[x]=d.queryParameters[x].toString():_[x]=d.queryParameters[x];return S=0,M=function(){var e=s(y().mark(function e(t,r){var a,s,i,p,v,k;return y().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==(a=t.pop())){e.next=3;break}throw new Pn($n(h));case 3:return s=g(g({},c),d.timeouts),i={data:m,headers:b,method:u.method,url:Ln(a,u.path,_),connectTimeout:r(S,s.connect),responseTimeout:r(S,f?s.read:s.write)},p=function(e){var n={request:i,response:e,host:a,triesLeft:t.length};return h.push(n),n},e.next=8,l.send(i);case 8:if(w=(y=v=e.sent).isTimedOut,C=y.status,!(w||function(e){return!e.isTimedOut&&!~~e.status}({isTimedOut:w,status:C})||2!=~~(C/100)&&4!=~~(C/100))){e.next=16;break}return k=p(v),v.isTimedOut&&S++,o.info("Retryable failure",Un(k)),e.next=15,n.set(a,An(a,v.isTimedOut?"timed out":"down"));case 15:return e.abrupt("return",M(t,r));case 16:if(2!=~~(v.status/100)){e.next=18;break}return e.abrupt("return",zn(v));case 18:throw p(v),Bn(v,h);case 20:case"end":return e.stop()}var y,w,C},e)}));return function(t,n){return e.apply(this,arguments)}}(),E=t.filter(function(e){return"readWrite"===e.accept||(f?"read"===e.accept:"write"===e.accept)}),e.next=13,p(E);case 13:return O=e.sent,e.abrupt("return",M(k(O.hosts).reverse(),O.getTimeout));case 15:case"end":return e.stop()}},e)})),m.apply(this,arguments)}return{hostsCache:n,requester:l,timeouts:c,logger:o,algoliaAgent:i,baseHeaders:r,baseQueryParameters:a,hosts:t,request:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.useReadTransporter||"GET"===e.method;if(!n)return h(e,t,n);var o=function(){return h(e,t)};if(!0!==(t.cacheable||e.cacheable))return o();var s={request:e,requestOptions:t,transporter:{queryParameters:a,headers:r}};return d.get(s,function(){return u.get(s,function(){return u.set(s,o()).then(function(e){return Promise.all([u.delete(s),e])},function(e){return Promise.all([u.delete(s),Promise.reject(e)])}).then(function(e){var t=_(e,2);return t[0],t[1]})})},{miss:function(e){return d.set(s,e)}})},requestsCache:u,responsesCache:d}}(g(g({hosts:Wn(t)},a),{},{algoliaAgent:En({algoliaAgents:o,client:"Lite",version:Vn}),baseHeaders:g(g({"content-type":"text/plain"},i.headers()),a.baseHeaders),baseQueryParameters:g(g({},i.queryParameters()),a.baseQueryParameters)}));return{transporter:c,appId:t,apiKey:n,clearCache:function(){return Promise.all([c.requestsCache.clear(),c.responsesCache.clear()]).then(function(){})},get _ua(){return c.algoliaAgent.value},addAlgoliaAgent:function(e,t){c.algoliaAgent.add({segment:e,version:t})},setClientApiKey:function(e){var t=e.apiKey;r&&"WithinHeaders"!==r?c.baseQueryParameters["x-algolia-api-key"]=t:c.baseHeaders["x-algolia-api-key"]=t},searchForHits:function(e,t){return this.search(e,t)},searchForFacets:function(e,t){return this.search(e,t)},customPost:function(e,t){var n=e.path,r=e.parameters,o=e.body;if(!n)throw new Error("Parameter `path` is required when calling `customPost`.");var a={method:"POST",path:"/{path}".replace("{path}",n),queryParameters:r||{},headers:{},data:o||{}};return c.request(a,t)},getRecommendations:function(e,t){if(e&&Array.isArray(e)&&(e={requests:e}),!e)throw new Error("Parameter `getRecommendationsParams` is required when calling `getRecommendations`.");if(!e.requests)throw new Error("Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.");var n={method:"POST",path:"/1/indexes/*/recommendations",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return c.request(n,t)},search:function(e,t){if(e&&Array.isArray(e)){var n={requests:e.map(function(e){var t=e.params,n=b(e,Hn);return"facet"===n.type?g(g(g({},n),t),{},{type:"facet"}):g(g(g({},n),t),{},{facet:void 0,maxFacetHits:void 0,facetQuery:void 0})})};e=n}if(!e)throw new Error("Parameter `searchMethodParams` is required when calling `search`.");if(!e.requests)throw new Error("Parameter `searchMethodParams.requests` is required when calling `search`.");var r={method:"POST",path:"/1/indexes/*/queries",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return c.request(r,t)}}}(g({appId:e,apiKey:t,timeouts:{connect:1e3,read:2e3,write:3e4},logger:{debug:function(e,t){return Promise.resolve()},info:function(e,t){return Promise.resolve()},error:function(e,t){return Promise.resolve()}},requester:{send:function(e){return new Promise(function(t){var n=new XMLHttpRequest;n.open(e.method,e.url,!0),Object.keys(e.headers).forEach(function(t){return n.setRequestHeader(t,e.headers[t])});var r,o=function(e,r){return setTimeout(function(){n.abort(),t({status:0,content:r,isTimedOut:!0})},e)},a=o(e.connectTimeout,"Connection timeout");n.onreadystatechange=function(){n.readyState>n.OPENED&&void 0===r&&(clearTimeout(a),r=o(e.responseTimeout,"Socket timeout"))},n.onerror=function(){0===n.status&&(clearTimeout(a),clearTimeout(r),t({content:n.responseText||"Network request failed",status:n.status,isTimedOut:!1}))},n.onload=function(){clearTimeout(a),clearTimeout(r),t({content:n.responseText,status:n.status,isTimedOut:!1})},n.send(e.data)})}},algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:Mn(),requestsCache:Mn({serializable:!1}),hostsCache:Sn({caches:[xn({key:"".concat(Vn,"-").concat(e)}),Mn()]})},void 0))}(e,t);return r.addAlgoliaAgent("docsearch",Gn),!1===/docsearch.js \(.*\)/.test(r.transporter.algoliaAgent.value)&&r.addAlgoliaAgent("docsearch-react",Gn),n(r)},[e,t,n])}var Qn=["footer","searchBox"];function Yn(e){var t=e.appId,n=e.apiKey,o=e.indexName,a=e.placeholder,s=void 0===a?"Search docs":a,i=e.searchParameters,c=e.maxResultsPerGroup,l=e.onClose,u=void 0===l?dn:l,p=e.transformItems,f=void 0===p?ln:p,h=e.hitComponent,m=void 0===h?$t:h,y=e.resultsFooterComponent,v=void 0===y?function(){return null}:y,k=e.navigator,w=e.initialScrollY,C=void 0===w?0:w,x=e.transformSearchClient,S=void 0===x?ln:x,M=e.disableUserPersonalization,E=void 0!==M&&M,O=e.initialQuery,A=void 0===O?"":O,j=e.translations,D=void 0===j?{}:j,P=e.getMissingResultsUrl,T=e.insights,I=void 0!==T&&T,N=D.footer,L=D.searchBox,R=b(D,Qn),F=_(r.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),z=F[0],B=F[1],$=r.useRef(null),U=r.useRef(null),q=r.useRef(null),H=r.useRef(null),V=r.useRef(null),W=r.useRef(10),G=r.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,64):"").current,K=r.useRef(A||G).current,Q=Kn(t,n,S),Y=r.useRef(Cn({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(o),limit:10})).current,Z=r.useRef(Cn({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(o),limit:0===Y.getAll().length?7:4})).current,X=r.useCallback(function(e){if(!E){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===Y.getAll().findIndex(function(e){return e.objectID===t.objectID})&&Z.add(t)}},[Y,Z,E]),J=r.useCallback(function(e){if(z.context.algoliaInsightsPlugin&&e.__autocomplete_id){var t=e,n={eventName:"Item Selected",index:t.__autocomplete_indexName,items:[t],positions:[e.__autocomplete_id],queryID:t.__autocomplete_queryID};z.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(n)}},[z.context.algoliaInsightsPlugin]),ee=r.useMemo(function(){return Rt({id:"docsearch",defaultActiveItemId:0,placeholder:s,openOnFocus:!0,initialState:{query:K,context:{searchSuggestions:[]}},insights:I,navigator:k,onStateChange:function(e){B(e.state)},getSources:function(e){var r=e.query,a=e.state,s=e.setContext,l=e.setStatus;if(!r)return E?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,n=e.event;X(t),un(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return Z.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,n=e.event;X(t),un(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return Y.getAll()}}];var d=Boolean(I);return Q.search({requests:[g({query:r,indexName:o,attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(W.current),"hierarchy.lvl2:".concat(W.current),"hierarchy.lvl3:".concat(W.current),"hierarchy.lvl4:".concat(W.current),"hierarchy.lvl5:".concat(W.current),"hierarchy.lvl6:".concat(W.current),"content:".concat(W.current)],snippetEllipsisText:"\u2026",highlightPreTag:"<mark>",highlightPostTag:"</mark>",hitsPerPage:20,clickAnalytics:d},i)]}).catch(function(e){throw"RetryError"===e.name&&l("error"),e}).then(function(e){var r=e.results[0],i=r.hits,l=r.nbHits,p=cn(i,function(e){return hn(e)},c);a.context.searchSuggestions.length<Object.keys(p).length&&s({searchSuggestions:Object.keys(p)}),s({nbHits:l});var h={};return d&&(h={__autocomplete_indexName:o,__autocomplete_queryID:r.queryID,__autocomplete_algoliaCredentials:{appId:t,apiKey:n}}),Object.values(p).map(function(e,t){return{sourceId:"hits".concat(t),onSelect:function(e){var t=e.item,n=e.event;X(t),un(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return Object.values(cn(e,function(e){return e.hierarchy.lvl1},c)).map(f).map(function(e){return e.map(function(t){var n=null,r=e.find(function(e){return"lvl1"===e.type&&e.hierarchy.lvl1===t.hierarchy.lvl1});return"lvl1"!==t.type&&r&&(n=r),g(g({},t),{},{__docsearch_parent:n},h)})}).flat()}}})})}})},[o,i,c,Q,u,Z,Y,X,K,s,k,f,E,I,t,n]),te=ee.getEnvironmentProps,ne=ee.getRootProps,re=ee.refresh;return function(e){var t=e.getEnvironmentProps,n=e.panelElement,o=e.formElement,a=e.inputElement;r.useEffect(function(){if(n&&o&&a){var e=t({panelElement:n,formElement:o,inputElement:a}),r=e.onTouchStart,s=e.onTouchMove;return window.addEventListener("touchstart",r),window.addEventListener("touchmove",s),function(){window.removeEventListener("touchstart",r),window.removeEventListener("touchmove",s)}}},[t,n,o,a])}({getEnvironmentProps:te,panelElement:H.current,formElement:q.current,inputElement:V.current}),function(e){var t=e.container;r.useEffect(function(){if(t){var e=t.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), input:not([disabled])"),n=e[0],r=e[e.length-1];return t.addEventListener("keydown",o),function(){t.removeEventListener("keydown",o)}}function o(e){"Tab"===e.key&&(e.shiftKey?document.activeElement===n&&(e.preventDefault(),r.focus()):document.activeElement===r&&(e.preventDefault(),n.focus()))}},[t])}({container:$.current}),r.useEffect(function(){return document.body.classList.add("DocSearch--active"),function(){var e,t;document.body.classList.remove("DocSearch--active"),null===(e=(t=window).scrollTo)||void 0===e||e.call(t,0,C)}},[]),r.useLayoutEffect(function(){var e=window.innerWidth-document.body.clientWidth;return document.body.style.marginRight="".concat(e,"px"),function(){document.body.style.marginRight="0px"}},[]),r.useEffect(function(){window.matchMedia("(max-width: 768px)").matches&&(W.current=5)},[]),r.useEffect(function(){H.current&&(H.current.scrollTop=0)},[z.query]),r.useEffect(function(){K.length>0&&(re(),V.current&&V.current.focus())},[K,re]),r.useEffect(function(){function e(){if(U.current){var e=.01*window.innerHeight;U.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}},[]),r.createElement("div",d({ref:$},ne({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===z.status&&"DocSearch-Container--Stalled","error"===z.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&u()}}),r.createElement("div",{className:"DocSearch-Modal",ref:U},r.createElement("header",{className:"DocSearch-SearchBar",ref:q},r.createElement(kn,d({},ee,{state:z,autoFocus:0===K.length,inputRef:V,isFromSelection:Boolean(K)&&K===G,translations:L,onClose:u}))),r.createElement("div",{className:"DocSearch-Dropdown",ref:H},r.createElement(vn,d({},ee,{indexName:o,state:z,hitComponent:m,resultsFooterComponent:v,disableUserPersonalization:E,recentSearches:Z,favoriteSearches:Y,inputRef:V,translations:R,getMissingResultsUrl:P,onItemClick:function(e,t){J(e),X(e),un(t)||u()}}))),r.createElement("footer",{className:"DocSearch-Footer"},r.createElement(Bt,{translations:N}))))}function Zn(e){var t=e.isOpen,n=e.onOpen,o=e.onClose,a=e.onInput,s=e.searchButtonRef;r.useEffect(function(){function e(e){var r;if("Escape"===e.code&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)return e.preventDefault(),void(t?o():document.body.classList.contains("DocSearch--active")||n());s&&s.current===document.activeElement&&a&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&a(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}},[t,n,o,a,s])}},36496:(e,t,n)=>{"use strict";n.d(t,{Be:()=>l,ZC:()=>i,_q:()=>s,dV:()=>c,fM:()=>u});var r=n(36672),o=n(10914),a=n(23420);function s(e){const t=(0,r.useRef)(e);return(0,o.A)(()=>{t.current=e},[e]),(0,r.useCallback)((...e)=>t.current(...e),[])}function i(e){const t=(0,r.useRef)();return(0,o.A)(()=>{t.current=e}),t.current}class c extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function l(e){const t=Object.entries(e);return t.sort((e,t)=>e[0].localeCompare(t[0])),(0,r.useMemo)(()=>e,t.flat())}function u(e){return({children:t})=>(0,a.jsx)(a.Fragment,{children:e.reduceRight((e,t)=>(0,a.jsx)(t,{children:e}),t)})}},36672:(e,t,n)=>{"use strict";e.exports=n(78385)},37256:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{G:()=>r})},39345:(e,t,n)=>{"use strict";var r=n(54123),o=n(36672),a=n(57235);function s(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function i(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function c(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function l(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function u(e){if(c(e)!==e)throw Error(s(188))}function d(e){var t=e.tag;if(5===t||26===t||27===t||6===t)return e;for(e=e.child;null!==e;){if(null!==(t=d(e)))return t;e=e.sibling}return null}var p=Object.assign,f=Symbol.for("react.element"),h=Symbol.for("react.transitional.element"),m=Symbol.for("react.portal"),g=Symbol.for("react.fragment"),b=Symbol.for("react.strict_mode"),y=Symbol.for("react.profiler"),v=Symbol.for("react.provider"),_=Symbol.for("react.consumer"),k=Symbol.for("react.context"),w=Symbol.for("react.forward_ref"),C=Symbol.for("react.suspense"),x=Symbol.for("react.suspense_list"),S=Symbol.for("react.memo"),M=Symbol.for("react.lazy");Symbol.for("react.scope");var E=Symbol.for("react.activity");Symbol.for("react.legacy_hidden"),Symbol.for("react.tracing_marker");var O=Symbol.for("react.memo_cache_sentinel");Symbol.for("react.view_transition");var A=Symbol.iterator;function j(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=A&&e[A]||e["@@iterator"])?e:null}var D=Symbol.for("react.client.reference");function P(e){if(null==e)return null;if("function"==typeof e)return e.$$typeof===D?null:e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case g:return"Fragment";case y:return"Profiler";case b:return"StrictMode";case C:return"Suspense";case x:return"SuspenseList";case E:return"Activity"}if("object"==typeof e)switch(e.$$typeof){case m:return"Portal";case k:return(e.displayName||"Context")+".Provider";case _:return(e._context.displayName||"Context")+".Consumer";case w:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case S:return null!==(t=e.displayName||null)?t:P(e.type)||"Memo";case M:t=e._payload,e=e._init;try{return P(e(t))}catch(n){}}return null}var T=Array.isArray,I=o.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,N=a.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,L={pending:!1,data:null,method:null,action:null},R=[],F=-1;function z(e){return{current:e}}function B(e){0>F||(e.current=R[F],R[F]=null,F--)}function $(e,t){F++,R[F]=e.current,e.current=t}var U=z(null),q=z(null),H=z(null),V=z(null);function W(e,t){switch($(H,t),$(q,e),$(U,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?od(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=ad(t=od(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}B(U),$(U,e)}function G(){B(U),B(q),B(H)}function K(e){null!==e.memoizedState&&$(V,e);var t=U.current,n=ad(t,e.type);t!==n&&($(q,e),$(U,n))}function Q(e){q.current===e&&(B(U),B(q)),V.current===e&&(B(V),Kd._currentValue=L)}var Y=Object.prototype.hasOwnProperty,Z=r.unstable_scheduleCallback,X=r.unstable_cancelCallback,J=r.unstable_shouldYield,ee=r.unstable_requestPaint,te=r.unstable_now,ne=r.unstable_getCurrentPriorityLevel,re=r.unstable_ImmediatePriority,oe=r.unstable_UserBlockingPriority,ae=r.unstable_NormalPriority,se=r.unstable_LowPriority,ie=r.unstable_IdlePriority,ce=r.log,le=r.unstable_setDisableYieldValue,ue=null,de=null;function pe(e){if("function"==typeof ce&&le(e),de&&"function"==typeof de.setStrictMode)try{de.setStrictMode(ue,e)}catch(t){}}var fe=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(he(e)/me|0)|0},he=Math.log,me=Math.LN2;var ge=256,be=4194304;function ye(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ve(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var o=0,a=e.suspendedLanes,s=e.pingedLanes;e=e.warmLanes;var i=134217727&r;return 0!==i?0!==(r=i&~a)?o=ye(r):0!==(s&=i)?o=ye(s):n||0!==(n=i&~e)&&(o=ye(n)):0!==(i=r&~a)?o=ye(i):0!==s?o=ye(s):n||0!==(n=r&~e)&&(o=ye(n)),0===o?0:0!==t&&t!==o&&0===(t&a)&&((a=o&-o)>=(n=t&-t)||32===a&&4194048&n)?t:o}function _e(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function ke(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function we(){var e=ge;return!(4194048&(ge<<=1))&&(ge=256),e}function Ce(){var e=be;return!(62914560&(be<<=1))&&(be=4194304),e}function xe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Se(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Me(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-fe(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|4194090&n}function Ee(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-fe(n),o=1<<r;o&t|e[r]&t&&(e[r]|=t),n&=~o}}function Oe(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Ae(e){return 2<(e&=-e)?8<e?134217727&e?32:268435456:8:2}function je(){var e=N.p;return 0!==e?e:void 0===(e=window.event)?32:lp(e.type)}var De=Math.random().toString(36).slice(2),Pe="__reactFiber$"+De,Te="__reactProps$"+De,Ie="__reactContainer$"+De,Ne="__reactEvents$"+De,Le="__reactListeners$"+De,Re="__reactHandles$"+De,Fe="__reactResources$"+De,ze="__reactMarker$"+De;function Be(e){delete e[Pe],delete e[Te],delete e[Ne],delete e[Le],delete e[Re]}function $e(e){var t=e[Pe];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Ie]||n[Pe]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=vd(e);null!==e;){if(n=e[Pe])return n;e=vd(e)}return t}n=(e=n).parentNode}return null}function Ue(e){if(e=e[Pe]||e[Ie]){var t=e.tag;if(5===t||6===t||13===t||26===t||27===t||3===t)return e}return null}function qe(e){var t=e.tag;if(5===t||26===t||27===t||6===t)return e.stateNode;throw Error(s(33))}function He(e){var t=e[Fe];return t||(t=e[Fe]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function Ve(e){e[ze]=!0}var We=new Set,Ge={};function Ke(e,t){Qe(e,t),Qe(e+"Capture",t)}function Qe(e,t){for(Ge[e]=t,e=0;e<t.length;e++)We.add(t[e])}var Ye,Ze,Xe=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Je={},et={};function tt(e,t,n){if(o=t,Y.call(et,o)||!Y.call(Je,o)&&(Xe.test(o)?et[o]=!0:(Je[o]=!0,0)))if(null===n)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":return void e.removeAttribute(t);case"boolean":var r=t.toLowerCase().slice(0,5);if("data-"!==r&&"aria-"!==r)return void e.removeAttribute(t)}e.setAttribute(t,""+n)}var o}function nt(e,t,n){if(null===n)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":return void e.removeAttribute(t)}e.setAttribute(t,""+n)}}function rt(e,t,n,r){if(null===r)e.removeAttribute(n);else{switch(typeof r){case"undefined":case"function":case"symbol":case"boolean":return void e.removeAttribute(n)}e.setAttributeNS(t,n,""+r)}}function ot(e){if(void 0===Ye)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Ye=t&&t[1]||"",Ze=-1<n.stack.indexOf("\n at")?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return"\n"+Ye+e+Ze}var at=!1;function st(e,t){if(!e||at)return"";at=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(n,[])}catch(o){var r=o}Reflect.construct(e,[],n)}else{try{n.call()}catch(a){r=a}e.call(n.prototype)}}else{try{throw Error()}catch(s){r=s}(n=e())&&"function"==typeof n.catch&&n.catch(function(){})}}catch(i){if(i&&r&&"string"==typeof i.stack)return[i.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var o=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,"name");o&&o.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var a=r.DetermineComponentFrameRoot(),s=a[0],i=a[1];if(s&&i){var c=s.split("\n"),l=i.split("\n");for(o=r=0;r<c.length&&!c[r].includes("DetermineComponentFrameRoot");)r++;for(;o<l.length&&!l[o].includes("DetermineComponentFrameRoot");)o++;if(r===c.length||o===l.length)for(r=c.length-1,o=l.length-1;1<=r&&0<=o&&c[r]!==l[o];)o--;for(;1<=r&&0<=o;r--,o--)if(c[r]!==l[o]){if(1!==r||1!==o)do{if(r--,0>--o||c[r]!==l[o]){var u="\n"+c[r].replace(" at new "," at ");return e.displayName&&u.includes("<anonymous>")&&(u=u.replace("<anonymous>",e.displayName)),u}}while(1<=r&&0<=o);break}}}finally{at=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?ot(n):""}function it(e){switch(e.tag){case 26:case 27:case 5:return ot(e.type);case 16:return ot("Lazy");case 13:return ot("Suspense");case 19:return ot("SuspenseList");case 0:case 15:return st(e.type,!1);case 11:return st(e.type.render,!1);case 1:return st(e.type,!0);case 31:return ot("Activity");default:return""}}function ct(e){try{var t="";do{t+=it(e),e=e.return}while(e);return t}catch(n){return"\nError generating stack: "+n.message+"\n"+n.stack}}function lt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function ut(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function dt(e){e._valueTracker||(e._valueTracker=function(e){var t=ut(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function pt(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ut(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function ft(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var ht=/[\n"\\]/g;function mt(e){return e.replace(ht,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function gt(e,t,n,r,o,a,s,i){e.name="",null!=s&&"function"!=typeof s&&"symbol"!=typeof s&&"boolean"!=typeof s?e.type=s:e.removeAttribute("type"),null!=t?"number"===s?(0===t&&""===e.value||e.value!=t)&&(e.value=""+lt(t)):e.value!==""+lt(t)&&(e.value=""+lt(t)):"submit"!==s&&"reset"!==s||e.removeAttribute("value"),null!=t?yt(e,s,lt(t)):null!=n?yt(e,s,lt(n)):null!=r&&e.removeAttribute("value"),null==o&&null!=a&&(e.defaultChecked=!!a),null!=o&&(e.checked=o&&"function"!=typeof o&&"symbol"!=typeof o),null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.name=""+lt(i):e.removeAttribute("name")}function bt(e,t,n,r,o,a,s,i){if(null!=a&&"function"!=typeof a&&"symbol"!=typeof a&&"boolean"!=typeof a&&(e.type=a),null!=t||null!=n){if(("submit"===a||"reset"===a)&&null==t)return;n=null!=n?""+lt(n):"",t=null!=t?""+lt(t):n,i||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:o)&&"symbol"!=typeof r&&!!r,e.checked=i?e.checked:!!r,e.defaultChecked=!!r,null!=s&&"function"!=typeof s&&"symbol"!=typeof s&&"boolean"!=typeof s&&(e.name=s)}function yt(e,t,n){"number"===t&&ft(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function vt(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+lt(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function _t(e,t,n){null==t||((t=""+lt(t))!==e.value&&(e.value=t),null!=n)?e.defaultValue=null!=n?""+lt(n):"":e.defaultValue!==t&&(e.defaultValue=t)}function kt(e,t,n,r){if(null==t){if(null!=r){if(null!=n)throw Error(s(92));if(T(r)){if(1<r.length)throw Error(s(93));r=r[0]}n=r}null==n&&(n=""),t=n}n=lt(t),e.defaultValue=n,(r=e.textContent)===n&&""!==r&&null!==r&&(e.value=r)}function wt(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var Ct=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function xt(e,t,n){var r=0===t.indexOf("--");null==n||"boolean"==typeof n||""===n?r?e.setProperty(t,""):"float"===t?e.cssFloat="":e[t]="":r?e.setProperty(t,n):"number"!=typeof n||0===n||Ct.has(t)?"float"===t?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function St(e,t,n){if(null!=t&&"object"!=typeof t)throw Error(s(62));if(e=e.style,null!=n){for(var r in n)!n.hasOwnProperty(r)||null!=t&&t.hasOwnProperty(r)||(0===r.indexOf("--")?e.setProperty(r,""):"float"===r?e.cssFloat="":e[r]="");for(var o in t)r=t[o],t.hasOwnProperty(o)&&n[o]!==r&&xt(e,o,r)}else for(var a in t)t.hasOwnProperty(a)&&xt(e,a,t[a])}function Mt(e){if(-1===e.indexOf("-"))return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Et=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Ot=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function At(e){return Ot.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}var jt=null;function Dt(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Pt=null,Tt=null;function It(e){var t=Ue(e);if(t&&(e=t.stateNode)){var n=e[Te]||null;e:switch(e=t.stateNode,t.type){case"input":if(gt(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+mt(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=r[Te]||null;if(!o)throw Error(s(90));gt(r,o.value,o.defaultValue,o.defaultValue,o.checked,o.defaultChecked,o.type,o.name)}}for(t=0;t<n.length;t++)(r=n[t]).form===e.form&&pt(r)}break e;case"textarea":_t(e,n.value,n.defaultValue);break e;case"select":null!=(t=n.value)&&vt(e,!!n.multiple,t,!1)}}}var Nt=!1;function Lt(e,t,n){if(Nt)return e(t,n);Nt=!0;try{return e(t)}finally{if(Nt=!1,(null!==Pt||null!==Tt)&&($l(),Pt&&(t=Pt,e=Tt,Tt=Pt=null,It(t),e)))for(t=0;t<e.length;t++)It(e[t])}}function Rt(e,t){var n=e.stateNode;if(null===n)return null;var r=n[Te]||null;if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(s(231,t,typeof n));return n}var Ft=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),zt=!1;if(Ft)try{var Bt={};Object.defineProperty(Bt,"passive",{get:function(){zt=!0}}),window.addEventListener("test",Bt,Bt),window.removeEventListener("test",Bt,Bt)}catch(Tp){zt=!1}var $t=null,Ut=null,qt=null;function Ht(){if(qt)return qt;var e,t,n=Ut,r=n.length,o="value"in $t?$t.value:$t.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var s=r-e;for(t=1;t<=s&&n[r-t]===o[a-t];t++);return qt=o.slice(e,1<t?1-t:void 0)}function Vt(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function Wt(){return!0}function Gt(){return!1}function Kt(e){function t(t,n,r,o,a){for(var s in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(s)&&(t=e[s],this[s]=t?t(o):o[s]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?Wt:Gt,this.isPropagationStopped=Gt,this}return p(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=Wt)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=Wt)},persist:function(){},isPersistent:Wt}),t}var Qt,Yt,Zt,Xt={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Jt=Kt(Xt),en=p({},Xt,{view:0,detail:0}),tn=Kt(en),nn=p({},en,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:hn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Zt&&(Zt&&"mousemove"===e.type?(Qt=e.screenX-Zt.screenX,Yt=e.screenY-Zt.screenY):Yt=Qt=0,Zt=e),Qt)},movementY:function(e){return"movementY"in e?e.movementY:Yt}}),rn=Kt(nn),on=Kt(p({},nn,{dataTransfer:0})),an=Kt(p({},en,{relatedTarget:0})),sn=Kt(p({},Xt,{animationName:0,elapsedTime:0,pseudoElement:0})),cn=Kt(p({},Xt,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}})),ln=Kt(p({},Xt,{data:0})),un={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},dn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},pn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function fn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=pn[e])&&!!t[e]}function hn(){return fn}var mn=Kt(p({},en,{key:function(e){if(e.key){var t=un[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=Vt(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?dn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:hn,charCode:function(e){return"keypress"===e.type?Vt(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?Vt(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}})),gn=Kt(p({},nn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),bn=Kt(p({},en,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:hn})),yn=Kt(p({},Xt,{propertyName:0,elapsedTime:0,pseudoElement:0})),vn=Kt(p({},nn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),_n=Kt(p({},Xt,{newState:0,oldState:0})),kn=[9,13,27,32],wn=Ft&&"CompositionEvent"in window,Cn=null;Ft&&"documentMode"in document&&(Cn=document.documentMode);var xn=Ft&&"TextEvent"in window&&!Cn,Sn=Ft&&(!wn||Cn&&8<Cn&&11>=Cn),Mn=String.fromCharCode(32),En=!1;function On(e,t){switch(e){case"keyup":return-1!==kn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function An(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var jn=!1;var Dn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Pn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Dn[e.type]:"textarea"===t}function Tn(e,t,n,r){Pt?Tt?Tt.push(r):Tt=[r]:Pt=r,0<(t=Hu(t,"onChange")).length&&(n=new Jt("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var In=null,Nn=null;function Ln(e){Lu(e,0)}function Rn(e){if(pt(qe(e)))return e}function Fn(e,t){if("change"===e)return t}var zn=!1;if(Ft){var Bn;if(Ft){var $n="oninput"in document;if(!$n){var Un=document.createElement("div");Un.setAttribute("oninput","return;"),$n="function"==typeof Un.oninput}Bn=$n}else Bn=!1;zn=Bn&&(!document.documentMode||9<document.documentMode)}function qn(){In&&(In.detachEvent("onpropertychange",Hn),Nn=In=null)}function Hn(e){if("value"===e.propertyName&&Rn(Nn)){var t=[];Tn(t,Nn,e,Dt(e)),Lt(Ln,t)}}function Vn(e,t,n){"focusin"===e?(qn(),Nn=n,(In=t).attachEvent("onpropertychange",Hn)):"focusout"===e&&qn()}function Wn(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Rn(Nn)}function Gn(e,t){if("click"===e)return Rn(t)}function Kn(e,t){if("input"===e||"change"===e)return Rn(t)}var Qn="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function Yn(e,t){if(Qn(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var o=n[r];if(!Y.call(t,o)||!Qn(e[o],t[o]))return!1}return!0}function Zn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Xn(e,t){var n,r=Zn(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Zn(r)}}function Jn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?Jn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function er(e){for(var t=ft((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=ft((e=t.contentWindow).document)}return t}function tr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var nr=Ft&&"documentMode"in document&&11>=document.documentMode,rr=null,or=null,ar=null,sr=!1;function ir(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;sr||null==rr||rr!==ft(r)||("selectionStart"in(r=rr)&&tr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},ar&&Yn(ar,r)||(ar=r,0<(r=Hu(or,"onSelect")).length&&(t=new Jt("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=rr)))}function cr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var lr={animationend:cr("Animation","AnimationEnd"),animationiteration:cr("Animation","AnimationIteration"),animationstart:cr("Animation","AnimationStart"),transitionrun:cr("Transition","TransitionRun"),transitionstart:cr("Transition","TransitionStart"),transitioncancel:cr("Transition","TransitionCancel"),transitionend:cr("Transition","TransitionEnd")},ur={},dr={};function pr(e){if(ur[e])return ur[e];if(!lr[e])return e;var t,n=lr[e];for(t in n)if(n.hasOwnProperty(t)&&t in dr)return ur[e]=n[t];return e}Ft&&(dr=document.createElement("div").style,"AnimationEvent"in window||(delete lr.animationend.animation,delete lr.animationiteration.animation,delete lr.animationstart.animation),"TransitionEvent"in window||delete lr.transitionend.transition);var fr=pr("animationend"),hr=pr("animationiteration"),mr=pr("animationstart"),gr=pr("transitionrun"),br=pr("transitionstart"),yr=pr("transitioncancel"),vr=pr("transitionend"),_r=new Map,kr="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function wr(e,t){_r.set(e,t),Ke(t,[e])}kr.push("scrollEnd");var Cr=new WeakMap;function xr(e,t){if("object"==typeof e&&null!==e){var n=Cr.get(e);return void 0!==n?n:(t={value:e,source:t,stack:ct(t)},Cr.set(e,t),t)}return{value:e,source:t,stack:ct(t)}}var Sr=[],Mr=0,Er=0;function Or(){for(var e=Mr,t=Er=Mr=0;t<e;){var n=Sr[t];Sr[t++]=null;var r=Sr[t];Sr[t++]=null;var o=Sr[t];Sr[t++]=null;var a=Sr[t];if(Sr[t++]=null,null!==r&&null!==o){var s=r.pending;null===s?o.next=o:(o.next=s.next,s.next=o),r.pending=o}0!==a&&Pr(n,o,a)}}function Ar(e,t,n,r){Sr[Mr++]=e,Sr[Mr++]=t,Sr[Mr++]=n,Sr[Mr++]=r,Er|=r,e.lanes|=r,null!==(e=e.alternate)&&(e.lanes|=r)}function jr(e,t,n,r){return Ar(e,t,n,r),Tr(e)}function Dr(e,t){return Ar(e,null,null,t),Tr(e)}function Pr(e,t,n){e.lanes|=n;var r=e.alternate;null!==r&&(r.lanes|=n);for(var o=!1,a=e.return;null!==a;)a.childLanes|=n,null!==(r=a.alternate)&&(r.childLanes|=n),22===a.tag&&(null===(e=a.stateNode)||1&e._visibility||(o=!0)),e=a,a=a.return;return 3===e.tag?(a=e.stateNode,o&&null!==t&&(o=31-fe(n),null===(r=(e=a.hiddenUpdates)[o])?e[o]=[t]:r.push(t),t.lane=536870912|n),a):null}function Tr(e){if(50<Pl)throw Pl=0,Tl=null,Error(s(185));for(var t=e.return;null!==t;)t=(e=t).return;return 3===e.tag?e.stateNode:null}var Ir={};function Nr(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lr(e,t,n,r){return new Nr(e,t,n,r)}function Rr(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Fr(e,t){var n=e.alternate;return null===n?((n=Lr(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=65011712&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function zr(e,t){e.flags&=65011714;var n=e.alternate;return null===n?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Br(e,t,n,r,o,a){var i=0;if(r=e,"function"==typeof e)Rr(e)&&(i=1);else if("string"==typeof e)i=function(e,t,n){if(1===n||null!=t.itemProp)return!1;switch(e){case"meta":case"title":return!0;case"style":if("string"!=typeof t.precedence||"string"!=typeof t.href||""===t.href)break;return!0;case"link":if("string"!=typeof t.rel||"string"!=typeof t.href||""===t.href||t.onLoad||t.onError)break;return"stylesheet"!==t.rel||(e=t.disabled,"string"==typeof t.precedence&&null==e);case"script":if(t.async&&"function"!=typeof t.async&&"symbol"!=typeof t.async&&!t.onLoad&&!t.onError&&t.src&&"string"==typeof t.src)return!0}return!1}(e,n,U.current)?26:"html"===e||"head"===e||"body"===e?27:5;else e:switch(e){case E:return(e=Lr(31,n,t,o)).elementType=E,e.lanes=a,e;case g:return $r(n.children,o,a,t);case b:i=8,o|=24;break;case y:return(e=Lr(12,n,t,2|o)).elementType=y,e.lanes=a,e;case C:return(e=Lr(13,n,t,o)).elementType=C,e.lanes=a,e;case x:return(e=Lr(19,n,t,o)).elementType=x,e.lanes=a,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case v:case k:i=10;break e;case _:i=9;break e;case w:i=11;break e;case S:i=14;break e;case M:i=16,r=null;break e}i=29,n=Error(s(130,null===e?"null":typeof e,"")),r=null}return(t=Lr(i,n,t,o)).elementType=e,t.type=r,t.lanes=a,t}function $r(e,t,n,r){return(e=Lr(7,e,r,t)).lanes=n,e}function Ur(e,t,n){return(e=Lr(6,e,null,t)).lanes=n,e}function qr(e,t,n){return(t=Lr(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var Hr=[],Vr=0,Wr=null,Gr=0,Kr=[],Qr=0,Yr=null,Zr=1,Xr="";function Jr(e,t){Hr[Vr++]=Gr,Hr[Vr++]=Wr,Wr=e,Gr=t}function eo(e,t,n){Kr[Qr++]=Zr,Kr[Qr++]=Xr,Kr[Qr++]=Yr,Yr=e;var r=Zr;e=Xr;var o=32-fe(r)-1;r&=~(1<<o),n+=1;var a=32-fe(t)+o;if(30<a){var s=o-o%5;a=(r&(1<<s)-1).toString(32),r>>=s,o-=s,Zr=1<<32-fe(t)+o|n<<o|r,Xr=a+e}else Zr=1<<a|n<<o|r,Xr=e}function to(e){null!==e.return&&(Jr(e,1),eo(e,1,0))}function no(e){for(;e===Wr;)Wr=Hr[--Vr],Hr[Vr]=null,Gr=Hr[--Vr],Hr[Vr]=null;for(;e===Yr;)Yr=Kr[--Qr],Kr[Qr]=null,Xr=Kr[--Qr],Kr[Qr]=null,Zr=Kr[--Qr],Kr[Qr]=null}var ro=null,oo=null,ao=!1,so=null,io=!1,co=Error(s(519));function lo(e){throw go(xr(Error(s(418,"")),e)),co}function uo(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[Pe]=e,t[Te]=r,n){case"dialog":Ru("cancel",t),Ru("close",t);break;case"iframe":case"object":case"embed":Ru("load",t);break;case"video":case"audio":for(n=0;n<Iu.length;n++)Ru(Iu[n],t);break;case"source":Ru("error",t);break;case"img":case"image":case"link":Ru("error",t),Ru("load",t);break;case"details":Ru("toggle",t);break;case"input":Ru("invalid",t),bt(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0),dt(t);break;case"select":Ru("invalid",t);break;case"textarea":Ru("invalid",t),kt(t,r.value,r.defaultValue,r.children),dt(t)}"string"!=typeof(n=r.children)&&"number"!=typeof n&&"bigint"!=typeof n||t.textContent===""+n||!0===r.suppressHydrationWarning||Yu(t.textContent,n)?(null!=r.popover&&(Ru("beforetoggle",t),Ru("toggle",t)),null!=r.onScroll&&Ru("scroll",t),null!=r.onScrollEnd&&Ru("scrollend",t),null!=r.onClick&&(t.onclick=Zu),t=!0):t=!1,t||lo(e)}function po(e){for(ro=e.return;ro;)switch(ro.tag){case 5:case 13:return void(io=!1);case 27:case 3:return void(io=!0);default:ro=ro.return}}function fo(e){if(e!==ro)return!1;if(!ao)return po(e),ao=!0,!1;var t,n=e.tag;if((t=3!==n&&27!==n)&&((t=5===n)&&(t=!("form"!==(t=e.type)&&"button"!==t)||sd(e.type,e.memoizedProps)),t=!t),t&&oo&&lo(e),po(e),13===n){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(s(317));e:{for(e=e.nextSibling,n=0;e;){if(8===e.nodeType)if("/$"===(t=e.data)){if(0===n){oo=bd(e.nextSibling);break e}n--}else"$"!==t&&"$!"!==t&&"$?"!==t||n++;e=e.nextSibling}oo=null}}else 27===n?(n=oo,fd(e.type)?(e=yd,yd=null,oo=e):oo=n):oo=ro?bd(e.stateNode.nextSibling):null;return!0}function ho(){oo=ro=null,ao=!1}function mo(){var e=so;return null!==e&&(null===vl?vl=e:vl.push.apply(vl,e),so=null),e}function go(e){null===so?so=[e]:so.push(e)}var bo=z(null),yo=null,vo=null;function _o(e,t,n){$(bo,t._currentValue),t._currentValue=n}function ko(e){e._currentValue=bo.current,B(bo)}function wo(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Co(e,t,n,r){var o=e.child;for(null!==o&&(o.return=e);null!==o;){var a=o.dependencies;if(null!==a){var i=o.child;a=a.firstContext;e:for(;null!==a;){var c=a;a=o;for(var l=0;l<t.length;l++)if(c.context===t[l]){a.lanes|=n,null!==(c=a.alternate)&&(c.lanes|=n),wo(a.return,n,e),r||(i=null);break e}a=c.next}}else if(18===o.tag){if(null===(i=o.return))throw Error(s(341));i.lanes|=n,null!==(a=i.alternate)&&(a.lanes|=n),wo(i,n,e),i=null}else i=o.child;if(null!==i)i.return=o;else for(i=o;null!==i;){if(i===e){i=null;break}if(null!==(o=i.sibling)){o.return=i.return,i=o;break}i=i.return}o=i}}function xo(e,t,n,r){e=null;for(var o=t,a=!1;null!==o;){if(!a)if(524288&o.flags)a=!0;else if(262144&o.flags)break;if(10===o.tag){var i=o.alternate;if(null===i)throw Error(s(387));if(null!==(i=i.memoizedProps)){var c=o.type;Qn(o.pendingProps.value,i.value)||(null!==e?e.push(c):e=[c])}}else if(o===V.current){if(null===(i=o.alternate))throw Error(s(387));i.memoizedState.memoizedState!==o.memoizedState.memoizedState&&(null!==e?e.push(Kd):e=[Kd])}o=o.return}null!==e&&Co(t,e,n,r),t.flags|=262144}function So(e){for(e=e.firstContext;null!==e;){if(!Qn(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Mo(e){yo=e,vo=null,null!==(e=e.dependencies)&&(e.firstContext=null)}function Eo(e){return Ao(yo,e)}function Oo(e,t){return null===yo&&Mo(e),Ao(e,t)}function Ao(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},null===vo){if(null===e)throw Error(s(308));vo=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else vo=vo.next=t;return n}var jo="undefined"!=typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},Do=r.unstable_scheduleCallback,Po=r.unstable_NormalPriority,To={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Io(){return{controller:new jo,data:new Map,refCount:0}}function No(e){e.refCount--,0===e.refCount&&Do(Po,function(){e.controller.abort()})}var Lo=null,Ro=0,Fo=0,zo=null;function Bo(){if(0===--Ro&&null!==Lo){null!==zo&&(zo.status="fulfilled");var e=Lo;Lo=null,Fo=0,zo=null;for(var t=0;t<e.length;t++)(0,e[t])()}}var $o=I.S;I.S=function(e,t){"object"==typeof t&&null!==t&&"function"==typeof t.then&&function(e,t){if(null===Lo){var n=Lo=[];Ro=0,Fo=Au(),zo={status:"pending",value:void 0,then:function(e){n.push(e)}}}Ro++,t.then(Bo,Bo)}(0,t),null!==$o&&$o(e,t)};var Uo=z(null);function qo(){var e=Uo.current;return null!==e?e:rl.pooledCache}function Ho(e,t){$(Uo,null===t?Uo.current:t.pool)}function Vo(){var e=qo();return null===e?null:{parent:To._currentValue,pool:e}}var Wo=Error(s(460)),Go=Error(s(474)),Ko=Error(s(542)),Qo={then:function(){}};function Yo(e){return"fulfilled"===(e=e.status)||"rejected"===e}function Zo(){}function Xo(e,t,n){switch(void 0===(n=e[n])?e.push(t):n!==t&&(t.then(Zo,Zo),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw ta(e=t.reason),e;default:if("string"==typeof t.status)t.then(Zo,Zo);else{if(null!==(e=rl)&&100<e.shellSuspendCounter)throw Error(s(482));(e=t).status="pending",e.then(function(e){if("pending"===t.status){var n=t;n.status="fulfilled",n.value=e}},function(e){if("pending"===t.status){var n=t;n.status="rejected",n.reason=e}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw ta(e=t.reason),e}throw Jo=t,Wo}}var Jo=null;function ea(){if(null===Jo)throw Error(s(459));var e=Jo;return Jo=null,e}function ta(e){if(e===Wo||e===Ko)throw Error(s(483))}var na=!1;function ra(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function oa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function aa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function sa(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&nl){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,t=Tr(e),Pr(e,null,n),t}return Ar(e,r,t,n),Tr(e)}function ia(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194048&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Ee(e,n)}}function ca(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var s={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?o=a=s:a=a.next=s,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var la=!1;function ua(){if(la){if(null!==zo)throw zo}}function da(e,t,n,r){la=!1;var o=e.updateQueue;na=!1;var a=o.firstBaseUpdate,s=o.lastBaseUpdate,i=o.shared.pending;if(null!==i){o.shared.pending=null;var c=i,l=c.next;c.next=null,null===s?a=l:s.next=l,s=c;var u=e.alternate;null!==u&&((i=(u=u.updateQueue).lastBaseUpdate)!==s&&(null===i?u.firstBaseUpdate=l:i.next=l,u.lastBaseUpdate=c))}if(null!==a){var d=o.baseState;for(s=0,u=l=c=null,i=a;;){var f=-536870913&i.lane,h=f!==i.lane;if(h?(al&f)===f:(r&f)===f){0!==f&&f===Fo&&(la=!0),null!==u&&(u=u.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});e:{var m=e,g=i;f=t;var b=n;switch(g.tag){case 1:if("function"==typeof(m=g.payload)){d=m.call(b,d,f);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(f="function"==typeof(m=g.payload)?m.call(b,d,f):m))break e;d=p({},d,f);break e;case 2:na=!0}}null!==(f=i.callback)&&(e.flags|=64,h&&(e.flags|=8192),null===(h=o.callbacks)?o.callbacks=[f]:h.push(f))}else h={lane:f,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===u?(l=u=h,c=d):u=u.next=h,s|=f;if(null===(i=i.next)){if(null===(i=o.shared.pending))break;i=(h=i).next,h.next=null,o.lastBaseUpdate=h,o.shared.pending=null}}null===u&&(c=d),o.baseState=c,o.firstBaseUpdate=l,o.lastBaseUpdate=u,null===a&&(o.shared.lanes=0),fl|=s,e.lanes=s,e.memoizedState=d}}function pa(e,t){if("function"!=typeof e)throw Error(s(191,e));e.call(t)}function fa(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;e<n.length;e++)pa(n[e],t)}var ha=z(null),ma=z(0);function ga(e,t){$(ma,e=dl),$(ha,t),dl=e|t.baseLanes}function ba(){$(ma,dl),$(ha,ha.current)}function ya(){dl=ma.current,B(ha),B(ma)}var va=0,_a=null,ka=null,wa=null,Ca=!1,xa=!1,Sa=!1,Ma=0,Ea=0,Oa=null,Aa=0;function ja(){throw Error(s(321))}function Da(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Qn(e[n],t[n]))return!1;return!0}function Pa(e,t,n,r,o,a){return va=a,_a=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,I.H=null===e||null===e.memoizedState?Ws:Gs,Sa=!1,a=n(r,o),Sa=!1,xa&&(a=Ia(t,n,r,o)),Ta(e),a}function Ta(e){I.H=Vs;var t=null!==ka&&null!==ka.next;if(va=0,wa=ka=_a=null,Ca=!1,Ea=0,Oa=null,t)throw Error(s(300));null===e||Ei||null!==(e=e.dependencies)&&So(e)&&(Ei=!0)}function Ia(e,t,n,r){_a=e;var o=0;do{if(xa&&(Oa=null),Ea=0,xa=!1,25<=o)throw Error(s(301));if(o+=1,wa=ka=null,null!=e.updateQueue){var a=e.updateQueue;a.lastEffect=null,a.events=null,a.stores=null,null!=a.memoCache&&(a.memoCache.index=0)}I.H=Ks,a=t(n,r)}while(xa);return a}function Na(){var e=I.H,t=e.useState()[0];return t="function"==typeof t.then?$a(t):t,e=e.useState()[0],(null!==ka?ka.memoizedState:null)!==e&&(_a.flags|=1024),t}function La(){var e=0!==Ma;return Ma=0,e}function Ra(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Fa(e){if(Ca){for(e=e.memoizedState;null!==e;){var t=e.queue;null!==t&&(t.pending=null),e=e.next}Ca=!1}va=0,wa=ka=_a=null,xa=!1,Ea=Ma=0,Oa=null}function za(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===wa?_a.memoizedState=wa=e:wa=wa.next=e,wa}function Ba(){if(null===ka){var e=_a.alternate;e=null!==e?e.memoizedState:null}else e=ka.next;var t=null===wa?_a.memoizedState:wa.next;if(null!==t)wa=t,ka=e;else{if(null===e){if(null===_a.alternate)throw Error(s(467));throw Error(s(310))}e={memoizedState:(ka=e).memoizedState,baseState:ka.baseState,baseQueue:ka.baseQueue,queue:ka.queue,next:null},null===wa?_a.memoizedState=wa=e:wa=wa.next=e}return wa}function $a(e){var t=Ea;return Ea+=1,null===Oa&&(Oa=[]),e=Xo(Oa,e,t),t=_a,null===(null===wa?t.memoizedState:wa.next)&&(t=t.alternate,I.H=null===t||null===t.memoizedState?Ws:Gs),e}function Ua(e){if(null!==e&&"object"==typeof e){if("function"==typeof e.then)return $a(e);if(e.$$typeof===k)return Eo(e)}throw Error(s(438,String(e)))}function qa(e){var t=null,n=_a.updateQueue;if(null!==n&&(t=n.memoCache),null==t){var r=_a.alternate;null!==r&&(null!==(r=r.updateQueue)&&(null!=(r=r.memoCache)&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(null==t&&(t={data:[],index:0}),null===n&&(n={lastEffect:null,events:null,stores:null,memoCache:null},_a.updateQueue=n),n.memoCache=t,void 0===(n=t.data[t.index]))for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=O;return t.index++,n}function Ha(e,t){return"function"==typeof t?t(e):t}function Va(e){return Wa(Ba(),ka,e)}function Wa(e,t,n){var r=e.queue;if(null===r)throw Error(s(311));r.lastRenderedReducer=n;var o=e.baseQueue,a=r.pending;if(null!==a){if(null!==o){var i=o.next;o.next=a.next,a.next=i}t.baseQueue=o=a,r.pending=null}if(a=e.baseState,null===o)e.memoizedState=a;else{var c=i=null,l=null,u=t=o.next,d=!1;do{var p=-536870913&u.lane;if(p!==u.lane?(al&p)===p:(va&p)===p){var f=u.revertLane;if(0===f)null!==l&&(l=l.next={lane:0,revertLane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),p===Fo&&(d=!0);else{if((va&f)===f){u=u.next,f===Fo&&(d=!0);continue}p={lane:0,revertLane:u.revertLane,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},null===l?(c=l=p,i=a):l=l.next=p,_a.lanes|=f,fl|=f}p=u.action,Sa&&n(a,p),a=u.hasEagerState?u.eagerState:n(a,p)}else f={lane:p,revertLane:u.revertLane,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},null===l?(c=l=f,i=a):l=l.next=f,_a.lanes|=p,fl|=p;u=u.next}while(null!==u&&u!==t);if(null===l?i=a:l.next=c,!Qn(a,e.memoizedState)&&(Ei=!0,d&&null!==(n=zo)))throw n;e.memoizedState=a,e.baseState=i,e.baseQueue=l,r.lastRenderedState=a}return null===o&&(r.lanes=0),[e.memoizedState,r.dispatch]}function Ga(e){var t=Ba(),n=t.queue;if(null===n)throw Error(s(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,a=t.memoizedState;if(null!==o){n.pending=null;var i=o=o.next;do{a=e(a,i.action),i=i.next}while(i!==o);Qn(a,t.memoizedState)||(Ei=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function Ka(e,t,n){var r=_a,o=Ba(),a=ao;if(a){if(void 0===n)throw Error(s(407));n=n()}else n=t();var i=!Qn((ka||o).memoizedState,n);if(i&&(o.memoizedState=n,Ei=!0),o=o.queue,bs(2048,8,Za.bind(null,r,o,e),[e]),o.getSnapshot!==t||i||null!==wa&&1&wa.memoizedState.tag){if(r.flags|=2048,hs(9,{destroy:void 0,resource:void 0},Ya.bind(null,r,o,n,t),null),null===rl)throw Error(s(349));a||124&va||Qa(r,t,n)}return n}function Qa(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=_a.updateQueue)?(t={lastEffect:null,events:null,stores:null,memoCache:null},_a.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Ya(e,t,n,r){t.value=n,t.getSnapshot=r,Xa(t)&&Ja(e)}function Za(e,t,n){return n(function(){Xa(t)&&Ja(e)})}function Xa(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Qn(e,n)}catch(r){return!0}}function Ja(e){var t=Dr(e,2);null!==t&&Ll(t,e,2)}function es(e){var t=za();if("function"==typeof e){var n=e;if(e=n(),Sa){pe(!0);try{n()}finally{pe(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ha,lastRenderedState:e},t}function ts(e,t,n,r){return e.baseState=n,Wa(e,ka,"function"==typeof r?r:Ha)}function ns(e,t,n,r,o){if(Us(e))throw Error(s(485));if(null!==(e=t.action)){var a={payload:o,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(e){a.listeners.push(e)}};null!==I.T?n(!0):a.isTransition=!1,r(a),null===(n=t.pending)?(a.next=t.pending=a,rs(t,a)):(a.next=n.next,t.pending=n.next=a)}}function rs(e,t){var n=t.action,r=t.payload,o=e.state;if(t.isTransition){var a=I.T,s={};I.T=s;try{var i=n(o,r),c=I.S;null!==c&&c(s,i),os(e,t,i)}catch(l){ss(e,t,l)}finally{I.T=a}}else try{os(e,t,a=n(o,r))}catch(u){ss(e,t,u)}}function os(e,t,n){null!==n&&"object"==typeof n&&"function"==typeof n.then?n.then(function(n){as(e,t,n)},function(n){return ss(e,t,n)}):as(e,t,n)}function as(e,t,n){t.status="fulfilled",t.value=n,is(t),e.state=n,null!==(t=e.pending)&&((n=t.next)===t?e.pending=null:(n=n.next,t.next=n,rs(e,n)))}function ss(e,t,n){var r=e.pending;if(e.pending=null,null!==r){r=r.next;do{t.status="rejected",t.reason=n,is(t),t=t.next}while(t!==r)}e.action=null}function is(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function cs(e,t){return t}function ls(e,t){if(ao){var n=rl.formState;if(null!==n){e:{var r=_a;if(ao){if(oo){t:{for(var o=oo,a=io;8!==o.nodeType;){if(!a){o=null;break t}if(null===(o=bd(o.nextSibling))){o=null;break t}}o="F!"===(a=o.data)||"F"===a?o:null}if(o){oo=bd(o.nextSibling),r="F!"===o.data;break e}}lo(r)}r=!1}r&&(t=n[0])}}return(n=za()).memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:cs,lastRenderedState:t},n.queue=r,n=zs.bind(null,_a,r),r.dispatch=n,r=es(!1),a=$s.bind(null,_a,!1,r.queue),o={state:t,dispatch:null,action:e,pending:null},(r=za()).queue=o,n=ns.bind(null,_a,o,a,n),o.dispatch=n,r.memoizedState=e,[t,n,!1]}function us(e){return ds(Ba(),ka,e)}function ds(e,t,n){if(t=Wa(e,t,cs)[0],e=Va(Ha)[0],"object"==typeof t&&null!==t&&"function"==typeof t.then)try{var r=$a(t)}catch(s){if(s===Wo)throw Ko;throw s}else r=t;var o=(t=Ba()).queue,a=o.dispatch;return n!==t.memoizedState&&(_a.flags|=2048,hs(9,{destroy:void 0,resource:void 0},ps.bind(null,o,n),null)),[r,a,e]}function ps(e,t){e.action=t}function fs(e){var t=Ba(),n=ka;if(null!==n)return ds(t,n,e);Ba(),t=t.memoizedState;var r=(n=Ba()).queue.dispatch;return n.memoizedState=e,[t,r,!1]}function hs(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},null===(t=_a.updateQueue)&&(t={lastEffect:null,events:null,stores:null,memoCache:null},_a.updateQueue=t),null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function ms(){return Ba().memoizedState}function gs(e,t,n,r){var o=za();r=void 0===r?null:r,_a.flags|=e,o.memoizedState=hs(1|t,{destroy:void 0,resource:void 0},n,r)}function bs(e,t,n,r){var o=Ba();r=void 0===r?null:r;var a=o.memoizedState.inst;null!==ka&&null!==r&&Da(r,ka.memoizedState.deps)?o.memoizedState=hs(t,a,n,r):(_a.flags|=e,o.memoizedState=hs(1|t,a,n,r))}function ys(e,t){gs(8390656,8,e,t)}function vs(e,t){bs(2048,8,e,t)}function _s(e,t){return bs(4,2,e,t)}function ks(e,t){return bs(4,4,e,t)}function ws(e,t){if("function"==typeof t){e=e();var n=t(e);return function(){"function"==typeof n?n():t(null)}}if(null!=t)return e=e(),t.current=e,function(){t.current=null}}function Cs(e,t,n){n=null!=n?n.concat([e]):null,bs(4,4,ws.bind(null,t,e),n)}function xs(){}function Ss(e,t){var n=Ba();t=void 0===t?null:t;var r=n.memoizedState;return null!==t&&Da(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ms(e,t){var n=Ba();t=void 0===t?null:t;var r=n.memoizedState;if(null!==t&&Da(t,r[1]))return r[0];if(r=e(),Sa){pe(!0);try{e()}finally{pe(!1)}}return n.memoizedState=[r,t],r}function Es(e,t,n){return void 0===n||1073741824&va?e.memoizedState=t:(e.memoizedState=n,e=Nl(),_a.lanes|=e,fl|=e,n)}function Os(e,t,n,r){return Qn(n,t)?n:null!==ha.current?(e=Es(e,n,r),Qn(e,t)||(Ei=!0),e):42&va?(e=Nl(),_a.lanes|=e,fl|=e,t):(Ei=!0,e.memoizedState=n)}function As(e,t,n,r,o){var a=N.p;N.p=0!==a&&8>a?a:8;var s,i,c,l=I.T,u={};I.T=u,$s(e,!1,t,n);try{var d=o(),p=I.S;if(null!==p&&p(u,d),null!==d&&"object"==typeof d&&"function"==typeof d.then)Bs(e,t,(s=r,i=[],c={status:"pending",value:null,reason:null,then:function(e){i.push(e)}},d.then(function(){c.status="fulfilled",c.value=s;for(var e=0;e<i.length;e++)(0,i[e])(s)},function(e){for(c.status="rejected",c.reason=e,e=0;e<i.length;e++)(0,i[e])(void 0)}),c),Il());else Bs(e,t,r,Il())}catch(f){Bs(e,t,{then:function(){},status:"rejected",reason:f},Il())}finally{N.p=a,I.T=l}}function js(){}function Ds(e,t,n,r){if(5!==e.tag)throw Error(s(476));var o=Ps(e).queue;As(e,o,t,L,null===n?js:function(){return Ts(e),n(r)})}function Ps(e){var t=e.memoizedState;if(null!==t)return t;var n={};return(t={memoizedState:L,baseState:L,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ha,lastRenderedState:L},next:null}).next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ha,lastRenderedState:n},next:null},e.memoizedState=t,null!==(e=e.alternate)&&(e.memoizedState=t),t}function Ts(e){Bs(e,Ps(e).next.queue,{},Il())}function Is(){return Eo(Kd)}function Ns(){return Ba().memoizedState}function Ls(){return Ba().memoizedState}function Rs(e){for(var t=e.return;null!==t;){switch(t.tag){case 24:case 3:var n=Il(),r=sa(t,e=aa(n),n);return null!==r&&(Ll(r,t,n),ia(r,t,n)),t={cache:Io()},void(e.payload=t)}t=t.return}}function Fs(e,t,n){var r=Il();n={lane:r,revertLane:0,action:n,hasEagerState:!1,eagerState:null,next:null},Us(e)?qs(t,n):null!==(n=jr(e,t,n,r))&&(Ll(n,e,r),Hs(n,t,r))}function zs(e,t,n){Bs(e,t,n,Il())}function Bs(e,t,n,r){var o={lane:r,revertLane:0,action:n,hasEagerState:!1,eagerState:null,next:null};if(Us(e))qs(t,o);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var s=t.lastRenderedState,i=a(s,n);if(o.hasEagerState=!0,o.eagerState=i,Qn(i,s))return Ar(e,t,o,0),null===rl&&Or(),!1}catch(c){}if(null!==(n=jr(e,t,o,r)))return Ll(n,e,r),Hs(n,t,r),!0}return!1}function $s(e,t,n,r){if(r={lane:2,revertLane:Au(),action:r,hasEagerState:!1,eagerState:null,next:null},Us(e)){if(t)throw Error(s(479))}else null!==(t=jr(e,n,r,2))&&Ll(t,e,2)}function Us(e){var t=e.alternate;return e===_a||null!==t&&t===_a}function qs(e,t){xa=Ca=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Hs(e,t,n){if(4194048&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Ee(e,n)}}var Vs={readContext:Eo,use:Ua,useCallback:ja,useContext:ja,useEffect:ja,useImperativeHandle:ja,useLayoutEffect:ja,useInsertionEffect:ja,useMemo:ja,useReducer:ja,useRef:ja,useState:ja,useDebugValue:ja,useDeferredValue:ja,useTransition:ja,useSyncExternalStore:ja,useId:ja,useHostTransitionStatus:ja,useFormState:ja,useActionState:ja,useOptimistic:ja,useMemoCache:ja,useCacheRefresh:ja},Ws={readContext:Eo,use:Ua,useCallback:function(e,t){return za().memoizedState=[e,void 0===t?null:t],e},useContext:Eo,useEffect:ys,useImperativeHandle:function(e,t,n){n=null!=n?n.concat([e]):null,gs(4194308,4,ws.bind(null,t,e),n)},useLayoutEffect:function(e,t){return gs(4194308,4,e,t)},useInsertionEffect:function(e,t){gs(4,2,e,t)},useMemo:function(e,t){var n=za();t=void 0===t?null:t;var r=e();if(Sa){pe(!0);try{e()}finally{pe(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=za();if(void 0!==n){var o=n(t);if(Sa){pe(!0);try{n(t)}finally{pe(!1)}}}else o=t;return r.memoizedState=r.baseState=o,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:o},r.queue=e,e=e.dispatch=Fs.bind(null,_a,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},za().memoizedState=e},useState:function(e){var t=(e=es(e)).queue,n=zs.bind(null,_a,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:xs,useDeferredValue:function(e,t){return Es(za(),e,t)},useTransition:function(){var e=es(!1);return e=As.bind(null,_a,e.queue,!0,!1),za().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=_a,o=za();if(ao){if(void 0===n)throw Error(s(407));n=n()}else{if(n=t(),null===rl)throw Error(s(349));124&al||Qa(r,t,n)}o.memoizedState=n;var a={value:n,getSnapshot:t};return o.queue=a,ys(Za.bind(null,r,a,e),[e]),r.flags|=2048,hs(9,{destroy:void 0,resource:void 0},Ya.bind(null,r,a,n,t),null),n},useId:function(){var e=za(),t=rl.identifierPrefix;if(ao){var n=Xr;t="\xab"+t+"R"+(n=(Zr&~(1<<32-fe(Zr)-1)).toString(32)+n),0<(n=Ma++)&&(t+="H"+n.toString(32)),t+="\xbb"}else t="\xab"+t+"r"+(n=Aa++).toString(32)+"\xbb";return e.memoizedState=t},useHostTransitionStatus:Is,useFormState:ls,useActionState:ls,useOptimistic:function(e){var t=za();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=$s.bind(null,_a,!0,n),n.dispatch=t,[e,t]},useMemoCache:qa,useCacheRefresh:function(){return za().memoizedState=Rs.bind(null,_a)}},Gs={readContext:Eo,use:Ua,useCallback:Ss,useContext:Eo,useEffect:vs,useImperativeHandle:Cs,useInsertionEffect:_s,useLayoutEffect:ks,useMemo:Ms,useReducer:Va,useRef:ms,useState:function(){return Va(Ha)},useDebugValue:xs,useDeferredValue:function(e,t){return Os(Ba(),ka.memoizedState,e,t)},useTransition:function(){var e=Va(Ha)[0],t=Ba().memoizedState;return["boolean"==typeof e?e:$a(e),t]},useSyncExternalStore:Ka,useId:Ns,useHostTransitionStatus:Is,useFormState:us,useActionState:us,useOptimistic:function(e,t){return ts(Ba(),0,e,t)},useMemoCache:qa,useCacheRefresh:Ls},Ks={readContext:Eo,use:Ua,useCallback:Ss,useContext:Eo,useEffect:vs,useImperativeHandle:Cs,useInsertionEffect:_s,useLayoutEffect:ks,useMemo:Ms,useReducer:Ga,useRef:ms,useState:function(){return Ga(Ha)},useDebugValue:xs,useDeferredValue:function(e,t){var n=Ba();return null===ka?Es(n,e,t):Os(n,ka.memoizedState,e,t)},useTransition:function(){var e=Ga(Ha)[0],t=Ba().memoizedState;return["boolean"==typeof e?e:$a(e),t]},useSyncExternalStore:Ka,useId:Ns,useHostTransitionStatus:Is,useFormState:fs,useActionState:fs,useOptimistic:function(e,t){var n=Ba();return null!==ka?ts(n,0,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:qa,useCacheRefresh:Ls},Qs=null,Ys=0;function Zs(e){var t=Ys;return Ys+=1,null===Qs&&(Qs=[]),Xo(Qs,e,t)}function Xs(e,t){t=t.props.ref,e.ref=void 0!==t?t:null}function Js(e,t){if(t.$$typeof===f)throw Error(s(525));throw e=Object.prototype.toString.call(t),Error(s(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function ei(e){return(0,e._init)(e._payload)}function ti(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;null!==e;)null!==e.key?t.set(e.key,e):t.set(e.index,e),e=e.sibling;return t}function o(e,t){return(e=Fr(e,t)).index=0,e.sibling=null,e}function a(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=67108866,n):r:(t.flags|=67108866,n):(t.flags|=1048576,n)}function i(t){return e&&null===t.alternate&&(t.flags|=67108866),t}function c(e,t,n,r){return null===t||6!==t.tag?((t=Ur(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function l(e,t,n,r){var a=n.type;return a===g?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===a||"object"==typeof a&&null!==a&&a.$$typeof===M&&ei(a)===t.type)?(Xs(t=o(t,n.props),n),t.return=e,t):(Xs(t=Br(n.type,n.key,n.props,null,e.mode,r),n),t.return=e,t)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=qr(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=$r(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t||"bigint"==typeof t)return(t=Ur(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case h:return Xs(n=Br(t.type,t.key,t.props,null,e.mode,n),t),n.return=e,n;case m:return(t=qr(t,e.mode,n)).return=e,t;case M:return p(e,t=(0,t._init)(t._payload),n)}if(T(t)||j(t))return(t=$r(t,e.mode,n,null)).return=e,t;if("function"==typeof t.then)return p(e,Zs(t),n);if(t.$$typeof===k)return p(e,Oo(e,t),n);Js(e,t)}return null}function f(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n||"bigint"==typeof n)return null!==o?null:c(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case h:return n.key===o?l(e,t,n,r):null;case m:return n.key===o?u(e,t,n,r):null;case M:return f(e,t,n=(o=n._init)(n._payload),r)}if(T(n)||j(n))return null!==o?null:d(e,t,n,r,null);if("function"==typeof n.then)return f(e,t,Zs(n),r);if(n.$$typeof===k)return f(e,t,Oo(e,n),r);Js(e,n)}return null}function b(e,t,n,r,o){if("string"==typeof r&&""!==r||"number"==typeof r||"bigint"==typeof r)return c(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case h:return l(t,e=e.get(null===r.key?n:r.key)||null,r,o);case m:return u(t,e=e.get(null===r.key?n:r.key)||null,r,o);case M:return b(e,t,n,r=(0,r._init)(r._payload),o)}if(T(r)||j(r))return d(t,e=e.get(n)||null,r,o,null);if("function"==typeof r.then)return b(e,t,n,Zs(r),o);if(r.$$typeof===k)return b(e,t,n,Oo(t,r),o);Js(t,r)}return null}function y(c,l,u,d){if("object"==typeof u&&null!==u&&u.type===g&&null===u.key&&(u=u.props.children),"object"==typeof u&&null!==u){switch(u.$$typeof){case h:e:{for(var v=u.key;null!==l;){if(l.key===v){if((v=u.type)===g){if(7===l.tag){n(c,l.sibling),(d=o(l,u.props.children)).return=c,c=d;break e}}else if(l.elementType===v||"object"==typeof v&&null!==v&&v.$$typeof===M&&ei(v)===l.type){n(c,l.sibling),Xs(d=o(l,u.props),u),d.return=c,c=d;break e}n(c,l);break}t(c,l),l=l.sibling}u.type===g?((d=$r(u.props.children,c.mode,d,u.key)).return=c,c=d):(Xs(d=Br(u.type,u.key,u.props,null,c.mode,d),u),d.return=c,c=d)}return i(c);case m:e:{for(v=u.key;null!==l;){if(l.key===v){if(4===l.tag&&l.stateNode.containerInfo===u.containerInfo&&l.stateNode.implementation===u.implementation){n(c,l.sibling),(d=o(l,u.children||[])).return=c,c=d;break e}n(c,l);break}t(c,l),l=l.sibling}(d=qr(u,c.mode,d)).return=c,c=d}return i(c);case M:return y(c,l,u=(v=u._init)(u._payload),d)}if(T(u))return function(o,s,i,c){for(var l=null,u=null,d=s,h=s=0,m=null;null!==d&&h<i.length;h++){d.index>h?(m=d,d=null):m=d.sibling;var g=f(o,d,i[h],c);if(null===g){null===d&&(d=m);break}e&&d&&null===g.alternate&&t(o,d),s=a(g,s,h),null===u?l=g:u.sibling=g,u=g,d=m}if(h===i.length)return n(o,d),ao&&Jr(o,h),l;if(null===d){for(;h<i.length;h++)null!==(d=p(o,i[h],c))&&(s=a(d,s,h),null===u?l=d:u.sibling=d,u=d);return ao&&Jr(o,h),l}for(d=r(d);h<i.length;h++)null!==(m=b(d,o,h,i[h],c))&&(e&&null!==m.alternate&&d.delete(null===m.key?h:m.key),s=a(m,s,h),null===u?l=m:u.sibling=m,u=m);return e&&d.forEach(function(e){return t(o,e)}),ao&&Jr(o,h),l}(c,l,u,d);if(j(u)){if("function"!=typeof(v=j(u)))throw Error(s(150));return function(o,i,c,l){if(null==c)throw Error(s(151));for(var u=null,d=null,h=i,m=i=0,g=null,y=c.next();null!==h&&!y.done;m++,y=c.next()){h.index>m?(g=h,h=null):g=h.sibling;var v=f(o,h,y.value,l);if(null===v){null===h&&(h=g);break}e&&h&&null===v.alternate&&t(o,h),i=a(v,i,m),null===d?u=v:d.sibling=v,d=v,h=g}if(y.done)return n(o,h),ao&&Jr(o,m),u;if(null===h){for(;!y.done;m++,y=c.next())null!==(y=p(o,y.value,l))&&(i=a(y,i,m),null===d?u=y:d.sibling=y,d=y);return ao&&Jr(o,m),u}for(h=r(h);!y.done;m++,y=c.next())null!==(y=b(h,o,m,y.value,l))&&(e&&null!==y.alternate&&h.delete(null===y.key?m:y.key),i=a(y,i,m),null===d?u=y:d.sibling=y,d=y);return e&&h.forEach(function(e){return t(o,e)}),ao&&Jr(o,m),u}(c,l,u=v.call(u),d)}if("function"==typeof u.then)return y(c,l,Zs(u),d);if(u.$$typeof===k)return y(c,l,Oo(c,u),d);Js(c,u)}return"string"==typeof u&&""!==u||"number"==typeof u||"bigint"==typeof u?(u=""+u,null!==l&&6===l.tag?(n(c,l.sibling),(d=o(l,u)).return=c,c=d):(n(c,l),(d=Ur(u,c.mode,d)).return=c,c=d),i(c)):n(c,l)}return function(e,t,n,r){try{Ys=0;var o=y(e,t,n,r);return Qs=null,o}catch(s){if(s===Wo||s===Ko)throw s;var a=Lr(29,s,null,e.mode);return a.lanes=r,a.return=e,a}}}var ni=ti(!0),ri=ti(!1),oi=z(null),ai=null;function si(e){var t=e.alternate;$(ui,1&ui.current),$(oi,e),null===ai&&(null===t||null!==ha.current||null!==t.memoizedState)&&(ai=e)}function ii(e){if(22===e.tag){if($(ui,ui.current),$(oi,e),null===ai){var t=e.alternate;null!==t&&null!==t.memoizedState&&(ai=e)}}else ci()}function ci(){$(ui,ui.current),$(oi,oi.current)}function li(e){B(oi),ai===e&&(ai=null),B(ui)}var ui=z(0);function di(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||gd(n)))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(128&t.flags)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function pi(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:p({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var fi={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=Il(),o=aa(r);o.payload=t,null!=n&&(o.callback=n),null!==(t=sa(e,o,r))&&(Ll(t,e,r),ia(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=Il(),o=aa(r);o.tag=1,o.payload=t,null!=n&&(o.callback=n),null!==(t=sa(e,o,r))&&(Ll(t,e,r),ia(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Il(),r=aa(n);r.tag=2,null!=t&&(r.callback=t),null!==(t=sa(e,r,n))&&(Ll(t,e,n),ia(t,e,n))}};function hi(e,t,n,r,o,a,s){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,s):!t.prototype||!t.prototype.isPureReactComponent||(!Yn(n,r)||!Yn(o,a))}function mi(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&fi.enqueueReplaceState(t,t.state,null)}function gi(e,t){var n=t;if("ref"in t)for(var r in n={},t)"ref"!==r&&(n[r]=t[r]);if(e=e.defaultProps)for(var o in n===t&&(n=p({},n)),e)void 0===n[o]&&(n[o]=e[o]);return n}var bi="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)};function yi(e){bi(e)}function vi(e){console.error(e)}function _i(e){bi(e)}function ki(e,t){try{(0,e.onUncaughtError)(t.value,{componentStack:t.stack})}catch(n){setTimeout(function(){throw n})}}function wi(e,t,n){try{(0,e.onCaughtError)(n.value,{componentStack:n.stack,errorBoundary:1===t.tag?t.stateNode:null})}catch(r){setTimeout(function(){throw r})}}function Ci(e,t,n){return(n=aa(n)).tag=3,n.payload={element:null},n.callback=function(){ki(e,t)},n}function xi(e){return(e=aa(e)).tag=3,e}function Si(e,t,n,r){var o=n.type.getDerivedStateFromError;if("function"==typeof o){var a=r.value;e.payload=function(){return o(a)},e.callback=function(){wi(t,n,r)}}var s=n.stateNode;null!==s&&"function"==typeof s.componentDidCatch&&(e.callback=function(){wi(t,n,r),"function"!=typeof o&&(null===xl?xl=new Set([this]):xl.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:null!==e?e:""})})}var Mi=Error(s(461)),Ei=!1;function Oi(e,t,n,r){t.child=null===e?ri(t,null,n,r):ni(t,e.child,n,r)}function Ai(e,t,n,r,o){n=n.render;var a=t.ref;if("ref"in r){var s={};for(var i in r)"ref"!==i&&(s[i]=r[i])}else s=r;return Mo(t),r=Pa(e,t,n,s,a,o),i=La(),null===e||Ei?(ao&&i&&to(t),t.flags|=1,Oi(e,t,r,o),t.child):(Ra(e,t,o),Qi(e,t,o))}function ji(e,t,n,r,o){if(null===e){var a=n.type;return"function"!=typeof a||Rr(a)||void 0!==a.defaultProps||null!==n.compare?((e=Br(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Di(e,t,a,r,o))}if(a=e.child,!Yi(e,o)){var s=a.memoizedProps;if((n=null!==(n=n.compare)?n:Yn)(s,r)&&e.ref===t.ref)return Qi(e,t,o)}return t.flags|=1,(e=Fr(a,r)).ref=t.ref,e.return=t,t.child=e}function Di(e,t,n,r,o){if(null!==e){var a=e.memoizedProps;if(Yn(a,r)&&e.ref===t.ref){if(Ei=!1,t.pendingProps=r=a,!Yi(e,o))return t.lanes=e.lanes,Qi(e,t,o);131072&e.flags&&(Ei=!0)}}return Ni(e,t,n,r,o)}function Pi(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode){if(128&t.flags){if(r=null!==a?a.baseLanes|n:n,null!==e){for(o=t.child=e.child,a=0;null!==o;)a=a|o.lanes|o.childLanes,o=o.sibling;t.childLanes=a&~r}else t.childLanes=0,t.child=null;return Ti(e,t,r,n)}if(!(536870912&n))return t.lanes=t.childLanes=536870912,Ti(e,t,null!==a?a.baseLanes|n:n,n);t.memoizedState={baseLanes:0,cachePool:null},null!==e&&Ho(0,null!==a?a.cachePool:null),null!==a?ga(t,a):ba(),ii(t)}else null!==a?(Ho(0,a.cachePool),ga(t,a),ci(),t.memoizedState=null):(null!==e&&Ho(0,null),ba(),ci());return Oi(e,t,o,n),t.child}function Ti(e,t,n,r){var o=qo();return o=null===o?null:{parent:To._currentValue,pool:o},t.memoizedState={baseLanes:n,cachePool:o},null!==e&&Ho(0,null),ba(),ii(t),null!==e&&xo(e,t,r,!0),null}function Ii(e,t){var n=t.ref;if(null===n)null!==e&&null!==e.ref&&(t.flags|=4194816);else{if("function"!=typeof n&&"object"!=typeof n)throw Error(s(284));null!==e&&e.ref===n||(t.flags|=4194816)}}function Ni(e,t,n,r,o){return Mo(t),n=Pa(e,t,n,r,void 0,o),r=La(),null===e||Ei?(ao&&r&&to(t),t.flags|=1,Oi(e,t,n,o),t.child):(Ra(e,t,o),Qi(e,t,o))}function Li(e,t,n,r,o,a){return Mo(t),t.updateQueue=null,n=Ia(t,r,n,o),Ta(e),r=La(),null===e||Ei?(ao&&r&&to(t),t.flags|=1,Oi(e,t,n,a),t.child):(Ra(e,t,a),Qi(e,t,a))}function Ri(e,t,n,r,o){if(Mo(t),null===t.stateNode){var a=Ir,s=n.contextType;"object"==typeof s&&null!==s&&(a=Eo(s)),a=new n(r,a),t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,a.updater=fi,t.stateNode=a,a._reactInternals=t,(a=t.stateNode).props=r,a.state=t.memoizedState,a.refs={},ra(t),s=n.contextType,a.context="object"==typeof s&&null!==s?Eo(s):Ir,a.state=t.memoizedState,"function"==typeof(s=n.getDerivedStateFromProps)&&(pi(t,n,s,r),a.state=t.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(s=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),s!==a.state&&fi.enqueueReplaceState(a,a.state,null),da(t,r,a,o),ua(),a.state=t.memoizedState),"function"==typeof a.componentDidMount&&(t.flags|=4194308),r=!0}else if(null===e){a=t.stateNode;var i=t.memoizedProps,c=gi(n,i);a.props=c;var l=a.context,u=n.contextType;s=Ir,"object"==typeof u&&null!==u&&(s=Eo(u));var d=n.getDerivedStateFromProps;u="function"==typeof d||"function"==typeof a.getSnapshotBeforeUpdate,i=t.pendingProps!==i,u||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(i||l!==s)&&mi(t,a,r,s),na=!1;var p=t.memoizedState;a.state=p,da(t,r,a,o),ua(),l=t.memoizedState,i||p!==l||na?("function"==typeof d&&(pi(t,n,d,r),l=t.memoizedState),(c=na||hi(t,n,c,r,p,l,s))?(u||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.flags|=4194308)):("function"==typeof a.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=s,r=c):("function"==typeof a.componentDidMount&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,oa(e,t),u=gi(n,s=t.memoizedProps),a.props=u,d=t.pendingProps,p=a.context,l=n.contextType,c=Ir,"object"==typeof l&&null!==l&&(c=Eo(l)),(l="function"==typeof(i=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==d||p!==c)&&mi(t,a,r,c),na=!1,p=t.memoizedState,a.state=p,da(t,r,a,o),ua();var f=t.memoizedState;s!==d||p!==f||na||null!==e&&null!==e.dependencies&&So(e.dependencies)?("function"==typeof i&&(pi(t,n,i,r),f=t.memoizedState),(u=na||hi(t,n,u,r,p,f,c)||null!==e&&null!==e.dependencies&&So(e.dependencies))?(l||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,f,c),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,f,c)),"function"==typeof a.componentDidUpdate&&(t.flags|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=f),a.props=r,a.state=f,a.context=c,r=u):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,Ii(e,t),r=!!(128&t.flags),a||r?(a=t.stateNode,n=r&&"function"!=typeof n.getDerivedStateFromError?null:a.render(),t.flags|=1,null!==e&&r?(t.child=ni(t,e.child,null,o),t.child=ni(t,null,n,o)):Oi(e,t,n,o),t.memoizedState=a.state,e=t.child):e=Qi(e,t,o),e}function Fi(e,t,n,r){return ho(),t.flags|=256,Oi(e,t,n,r),t.child}var zi={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Bi(e){return{baseLanes:e,cachePool:Vo()}}function $i(e,t,n){return e=null!==e?e.childLanes&~n:0,t&&(e|=gl),e}function Ui(e,t,n){var r,o=t.pendingProps,a=!1,i=!!(128&t.flags);if((r=i)||(r=(null===e||null!==e.memoizedState)&&!!(2&ui.current)),r&&(a=!0,t.flags&=-129),r=!!(32&t.flags),t.flags&=-33,null===e){if(ao){if(a?si(t):ci(),ao){var c,l=oo;if(c=l){e:{for(c=l,l=io;8!==c.nodeType;){if(!l){l=null;break e}if(null===(c=bd(c.nextSibling))){l=null;break e}}l=c}null!==l?(t.memoizedState={dehydrated:l,treeContext:null!==Yr?{id:Zr,overflow:Xr}:null,retryLane:536870912,hydrationErrors:null},(c=Lr(18,null,null,0)).stateNode=l,c.return=t,t.child=c,ro=t,oo=null,c=!0):c=!1}c||lo(t)}if(null!==(l=t.memoizedState)&&null!==(l=l.dehydrated))return gd(l)?t.lanes=32:t.lanes=536870912,null;li(t)}return l=o.children,o=o.fallback,a?(ci(),l=Hi({mode:"hidden",children:l},a=t.mode),o=$r(o,a,n,null),l.return=t,o.return=t,l.sibling=o,t.child=l,(a=t.child).memoizedState=Bi(n),a.childLanes=$i(e,r,n),t.memoizedState=zi,o):(si(t),qi(t,l))}if(null!==(c=e.memoizedState)&&null!==(l=c.dehydrated)){if(i)256&t.flags?(si(t),t.flags&=-257,t=Vi(e,t,n)):null!==t.memoizedState?(ci(),t.child=e.child,t.flags|=128,t=null):(ci(),a=o.fallback,l=t.mode,o=Hi({mode:"visible",children:o.children},l),(a=$r(a,l,n,null)).flags|=2,o.return=t,a.return=t,o.sibling=a,t.child=o,ni(t,e.child,null,n),(o=t.child).memoizedState=Bi(n),o.childLanes=$i(e,r,n),t.memoizedState=zi,t=a);else if(si(t),gd(l)){if(r=l.nextSibling&&l.nextSibling.dataset)var u=r.dgst;r=u,(o=Error(s(419))).stack="",o.digest=r,go({value:o,source:null,stack:null}),t=Vi(e,t,n)}else if(Ei||xo(e,t,n,!1),r=0!==(n&e.childLanes),Ei||r){if(null!==(r=rl)&&(0!==(o=0!==((o=42&(o=n&-n)?1:Oe(o))&(r.suspendedLanes|n))?0:o)&&o!==c.retryLane))throw c.retryLane=o,Dr(e,o),Ll(r,e,o),Mi;"$?"===l.data||Gl(),t=Vi(e,t,n)}else"$?"===l.data?(t.flags|=192,t.child=e.child,t=null):(e=c.treeContext,oo=bd(l.nextSibling),ro=t,ao=!0,so=null,io=!1,null!==e&&(Kr[Qr++]=Zr,Kr[Qr++]=Xr,Kr[Qr++]=Yr,Zr=e.id,Xr=e.overflow,Yr=t),(t=qi(t,o.children)).flags|=4096);return t}return a?(ci(),a=o.fallback,l=t.mode,u=(c=e.child).sibling,(o=Fr(c,{mode:"hidden",children:o.children})).subtreeFlags=65011712&c.subtreeFlags,null!==u?a=Fr(u,a):(a=$r(a,l,n,null)).flags|=2,a.return=t,o.return=t,o.sibling=a,t.child=o,o=a,a=t.child,null===(l=e.child.memoizedState)?l=Bi(n):(null!==(c=l.cachePool)?(u=To._currentValue,c=c.parent!==u?{parent:u,pool:u}:c):c=Vo(),l={baseLanes:l.baseLanes|n,cachePool:c}),a.memoizedState=l,a.childLanes=$i(e,r,n),t.memoizedState=zi,o):(si(t),e=(n=e.child).sibling,(n=Fr(n,{mode:"visible",children:o.children})).return=t,n.sibling=null,null!==e&&(null===(r=t.deletions)?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function qi(e,t){return(t=Hi({mode:"visible",children:t},e.mode)).return=e,e.child=t}function Hi(e,t){return(e=Lr(22,e,null,t)).lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function Vi(e,t,n){return ni(t,e.child,null,n),(e=qi(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Wi(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),wo(e.return,t,n)}function Gi(e,t,n,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o)}function Ki(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(Oi(e,t,r.children,n),2&(r=ui.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Wi(e,n,t);else if(19===e.tag)Wi(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}switch($(ui,r),o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===di(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Gi(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===di(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Gi(t,!0,n,null,a);break;case"together":Gi(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Qi(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),fl|=t.lanes,0===(n&t.childLanes)){if(null===e)return null;if(xo(e,t,n,!1),0===(n&t.childLanes))return null}if(null!==e&&t.child!==e.child)throw Error(s(153));if(null!==t.child){for(n=Fr(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Fr(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Yi(e,t){return 0!==(e.lanes&t)||!(null===(e=e.dependencies)||!So(e))}function Zi(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps)Ei=!0;else{if(!(Yi(e,n)||128&t.flags))return Ei=!1,function(e,t,n){switch(t.tag){case 3:W(t,t.stateNode.containerInfo),_o(0,To,e.memoizedState.cache),ho();break;case 27:case 5:K(t);break;case 4:W(t,t.stateNode.containerInfo);break;case 10:_o(0,t.type,t.memoizedProps.value);break;case 13:var r=t.memoizedState;if(null!==r)return null!==r.dehydrated?(si(t),t.flags|=128,null):0!==(n&t.child.childLanes)?Ui(e,t,n):(si(t),null!==(e=Qi(e,t,n))?e.sibling:null);si(t);break;case 19:var o=!!(128&e.flags);if((r=0!==(n&t.childLanes))||(xo(e,t,n,!1),r=0!==(n&t.childLanes)),o){if(r)return Ki(e,t,n);t.flags|=128}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),$(ui,ui.current),r)break;return null;case 22:case 23:return t.lanes=0,Pi(e,t,n);case 24:_o(0,To,e.memoizedState.cache)}return Qi(e,t,n)}(e,t,n);Ei=!!(131072&e.flags)}else Ei=!1,ao&&1048576&t.flags&&eo(t,Gr,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var r=t.elementType,o=r._init;if(r=o(r._payload),t.type=r,"function"!=typeof r){if(null!=r){if((o=r.$$typeof)===w){t.tag=11,t=Ai(null,t,r,e,n);break e}if(o===S){t.tag=14,t=ji(null,t,r,e,n);break e}}throw t=P(r)||r,Error(s(306,t,""))}Rr(r)?(e=gi(r,e),t.tag=1,t=Ri(null,t,r,e,n)):(t.tag=0,t=Ni(null,t,r,e,n))}return t;case 0:return Ni(e,t,t.type,t.pendingProps,n);case 1:return Ri(e,t,r=t.type,o=gi(r,t.pendingProps),n);case 3:e:{if(W(t,t.stateNode.containerInfo),null===e)throw Error(s(387));r=t.pendingProps;var a=t.memoizedState;o=a.element,oa(e,t),da(t,r,null,n);var i=t.memoizedState;if(r=i.cache,_o(0,To,r),r!==a.cache&&Co(t,[To],n,!0),ua(),r=i.element,a.isDehydrated){if(a={element:r,isDehydrated:!1,cache:i.cache},t.updateQueue.baseState=a,t.memoizedState=a,256&t.flags){t=Fi(e,t,r,n);break e}if(r!==o){go(o=xr(Error(s(424)),t)),t=Fi(e,t,r,n);break e}if(9===(e=t.stateNode.containerInfo).nodeType)e=e.body;else e="HTML"===e.nodeName?e.ownerDocument.body:e;for(oo=bd(e.firstChild),ro=t,ao=!0,so=null,io=!0,n=ri(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ho(),r===o){t=Qi(e,t,n);break e}Oi(e,t,r,n)}t=t.child}return t;case 26:return Ii(e,t),null===e?(n=Od(t.type,null,t.pendingProps,null))?t.memoizedState=n:ao||(n=t.type,e=t.pendingProps,(r=rd(H.current).createElement(n))[Pe]=t,r[Te]=e,ed(r,n,e),Ve(r),t.stateNode=r):t.memoizedState=Od(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return K(t),null===e&&ao&&(r=t.stateNode=_d(t.type,t.pendingProps,H.current),ro=t,io=!0,o=oo,fd(t.type)?(yd=o,oo=bd(r.firstChild)):oo=o),Oi(e,t,t.pendingProps.children,n),Ii(e,t),null===e&&(t.flags|=4194304),t.child;case 5:return null===e&&ao&&((o=r=oo)&&(null!==(r=function(e,t,n,r){for(;1===e.nodeType;){var o=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&("INPUT"!==e.nodeName||"hidden"!==e.type))break}else if(r){if(!e[ze])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if("stylesheet"===(a=e.getAttribute("rel"))&&e.hasAttribute("data-precedence"))break;if(a!==o.rel||e.getAttribute("href")!==(null==o.href||""===o.href?null:o.href)||e.getAttribute("crossorigin")!==(null==o.crossOrigin?null:o.crossOrigin)||e.getAttribute("title")!==(null==o.title?null:o.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(((a=e.getAttribute("src"))!==(null==o.src?null:o.src)||e.getAttribute("type")!==(null==o.type?null:o.type)||e.getAttribute("crossorigin")!==(null==o.crossOrigin?null:o.crossOrigin))&&a&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else{if("input"!==t||"hidden"!==e.type)return e;var a=null==o.name?null:""+o.name;if("hidden"===o.type&&e.getAttribute("name")===a)return e}if(null===(e=bd(e.nextSibling)))break}return null}(r,t.type,t.pendingProps,io))?(t.stateNode=r,ro=t,oo=bd(r.firstChild),io=!1,o=!0):o=!1),o||lo(t)),K(t),o=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,r=a.children,sd(o,a)?r=null:null!==i&&sd(o,i)&&(t.flags|=32),null!==t.memoizedState&&(o=Pa(e,t,Na,null,null,n),Kd._currentValue=o),Ii(e,t),Oi(e,t,r,n),t.child;case 6:return null===e&&ao&&((e=n=oo)&&(null!==(n=function(e,t,n){if(""===t)return null;for(;3!==e.nodeType;){if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!n)return null;if(null===(e=bd(e.nextSibling)))return null}return e}(n,t.pendingProps,io))?(t.stateNode=n,ro=t,oo=null,e=!0):e=!1),e||lo(t)),null;case 13:return Ui(e,t,n);case 4:return W(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ni(t,null,r,n):Oi(e,t,r,n),t.child;case 11:return Ai(e,t,t.type,t.pendingProps,n);case 7:return Oi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Oi(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,_o(0,t.type,r.value),Oi(e,t,r.children,n),t.child;case 9:return o=t.type._context,r=t.pendingProps.children,Mo(t),r=r(o=Eo(o)),t.flags|=1,Oi(e,t,r,n),t.child;case 14:return ji(e,t,t.type,t.pendingProps,n);case 15:return Di(e,t,t.type,t.pendingProps,n);case 19:return Ki(e,t,n);case 31:return r=t.pendingProps,n=t.mode,r={mode:r.mode,children:r.children},null===e?((n=Hi(r,n)).ref=t.ref,t.child=n,n.return=t,t=n):((n=Fr(e.child,r)).ref=t.ref,t.child=n,n.return=t,t=n),t;case 22:return Pi(e,t,n);case 24:return Mo(t),r=Eo(To),null===e?(null===(o=qo())&&(o=rl,a=Io(),o.pooledCache=a,a.refCount++,null!==a&&(o.pooledCacheLanes|=n),o=a),t.memoizedState={parent:r,cache:o},ra(t),_o(0,To,o)):(0!==(e.lanes&n)&&(oa(e,t),da(t,null,null,n),ua()),o=e.memoizedState,a=t.memoizedState,o.parent!==r?(o={parent:r,cache:r},t.memoizedState=o,0===t.lanes&&(t.memoizedState=t.updateQueue.baseState=o),_o(0,To,r)):(r=a.cache,_o(0,To,r),r!==o.cache&&Co(t,[To],n,!0))),Oi(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(s(156,t.tag))}function Xi(e){e.flags|=4}function Ji(e,t){if("stylesheet"!==t.type||4&t.state.loading)e.flags&=-16777217;else if(e.flags|=16777216,!$d(t)){if(null!==(t=oi.current)&&((4194048&al)===al?null!==ai:(62914560&al)!==al&&!(536870912&al)||t!==ai))throw Jo=Qo,Go;e.flags|=8192}}function ec(e,t){null!==t&&(e.flags|=4),16384&e.flags&&(t=22!==e.tag?Ce():536870912,e.lanes|=t,bl|=t)}function tc(e,t){if(!ao)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function nc(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=65011712&o.subtreeFlags,r|=65011712&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function rc(e,t,n){var r=t.pendingProps;switch(no(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:case 1:return nc(t),null;case 3:return n=t.stateNode,r=null,null!==e&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),ko(To),G(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),null!==e&&null!==e.child||(fo(t)?Xi(t):null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,mo())),nc(t),null;case 26:return n=t.memoizedState,null===e?(Xi(t),null!==n?(nc(t),Ji(t,n)):(nc(t),t.flags&=-16777217)):n?n!==e.memoizedState?(Xi(t),nc(t),Ji(t,n)):(nc(t),t.flags&=-16777217):(e.memoizedProps!==r&&Xi(t),nc(t),t.flags&=-16777217),null;case 27:Q(t),n=H.current;var o=t.type;if(null!==e&&null!=t.stateNode)e.memoizedProps!==r&&Xi(t);else{if(!r){if(null===t.stateNode)throw Error(s(166));return nc(t),null}e=U.current,fo(t)?uo(t):(e=_d(o,r,n),t.stateNode=e,Xi(t))}return nc(t),null;case 5:if(Q(t),n=t.type,null!==e&&null!=t.stateNode)e.memoizedProps!==r&&Xi(t);else{if(!r){if(null===t.stateNode)throw Error(s(166));return nc(t),null}if(e=U.current,fo(t))uo(t);else{switch(o=rd(H.current),e){case 1:e=o.createElementNS("http://www.w3.org/2000/svg",n);break;case 2:e=o.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;default:switch(n){case"svg":e=o.createElementNS("http://www.w3.org/2000/svg",n);break;case"math":e=o.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;case"script":(e=o.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild);break;case"select":e="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?e.multiple=!0:r.size&&(e.size=r.size);break;default:e="string"==typeof r.is?o.createElement(n,{is:r.is}):o.createElement(n)}}e[Pe]=t,e[Te]=r;e:for(o=t.child;null!==o;){if(5===o.tag||6===o.tag)e.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break e;for(;null===o.sibling;){if(null===o.return||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=e;e:switch(ed(e,n,r),n){case"button":case"input":case"select":case"textarea":e=!!r.autoFocus;break e;case"img":e=!0;break e;default:e=!1}e&&Xi(t)}}return nc(t),t.flags&=-16777217,null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&Xi(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(s(166));if(e=H.current,fo(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(o=ro))switch(o.tag){case 27:case 5:r=o.memoizedProps}e[Pe]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||Yu(e.nodeValue,n)))||lo(t)}else(e=rd(e).createTextNode(r))[Pe]=t,t.stateNode=e}return nc(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(o=fo(t),null!==r&&null!==r.dehydrated){if(null===e){if(!o)throw Error(s(318));if(!(o=null!==(o=t.memoizedState)?o.dehydrated:null))throw Error(s(317));o[Pe]=t}else ho(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;nc(t),o=!1}else o=mo(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return 256&t.flags?(li(t),t):(li(t),null)}if(li(t),128&t.flags)return t.lanes=n,t;if(n=null!==r,e=null!==e&&null!==e.memoizedState,n){o=null,null!==(r=t.child).alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(o=r.alternate.memoizedState.cachePool.pool);var a=null;null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==o&&(r.flags|=2048)}return n!==e&&n&&(t.child.flags|=8192),ec(t,t.updateQueue),nc(t),null;case 4:return G(),null===e&&Bu(t.stateNode.containerInfo),nc(t),null;case 10:return ko(t.type),nc(t),null;case 19:if(B(ui),null===(o=t.memoizedState))return nc(t),null;if(r=!!(128&t.flags),null===(a=o.rendering))if(r)tc(o,!1);else{if(0!==pl||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(a=di(e))){for(t.flags|=128,tc(o,!1),e=a.updateQueue,t.updateQueue=e,ec(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)zr(n,e),n=n.sibling;return $(ui,1&ui.current|2),t.child}e=e.sibling}null!==o.tail&&te()>wl&&(t.flags|=128,r=!0,tc(o,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=di(a))){if(t.flags|=128,r=!0,e=e.updateQueue,t.updateQueue=e,ec(t,e),tc(o,!0),null===o.tail&&"hidden"===o.tailMode&&!a.alternate&&!ao)return nc(t),null}else 2*te()-o.renderingStartTime>wl&&536870912!==n&&(t.flags|=128,r=!0,tc(o,!1),t.lanes=4194304);o.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=o.last)?e.sibling=a:t.child=a,o.last=a)}return null!==o.tail?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=te(),t.sibling=null,e=ui.current,$(ui,r?1&e|2:1&e),t):(nc(t),null);case 22:case 23:return li(t),ya(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?!!(536870912&n)&&!(128&t.flags)&&(nc(t),6&t.subtreeFlags&&(t.flags|=8192)):nc(t),null!==(n=t.updateQueue)&&ec(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&B(Uo),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ko(To),nc(t),null;case 25:case 30:return null}throw Error(s(156,t.tag))}function oc(e,t){switch(no(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return ko(To),G(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return Q(t),null;case 13:if(li(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(s(340));ho()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return B(ui),null;case 4:return G(),null;case 10:return ko(t.type),null;case 22:case 23:return li(t),ya(),null!==e&&B(Uo),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return ko(To),null;default:return null}}function ac(e,t){switch(no(t),t.tag){case 3:ko(To),G();break;case 26:case 27:case 5:Q(t);break;case 4:G();break;case 13:li(t);break;case 19:B(ui);break;case 10:ko(t.type);break;case 22:case 23:li(t),ya(),null!==e&&B(Uo);break;case 24:ko(To)}}function sc(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var o=r.next;n=o;do{if((n.tag&e)===e){r=void 0;var a=n.create,s=n.inst;r=a(),s.destroy=r}n=n.next}while(n!==o)}}catch(i){uu(t,t.return,i)}}function ic(e,t,n){try{var r=t.updateQueue,o=null!==r?r.lastEffect:null;if(null!==o){var a=o.next;r=a;do{if((r.tag&e)===e){var s=r.inst,i=s.destroy;if(void 0!==i){s.destroy=void 0,o=t;var c=n,l=i;try{l()}catch(u){uu(o,c,u)}}}r=r.next}while(r!==a)}}catch(u){uu(t,t.return,u)}}function cc(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{fa(t,n)}catch(r){uu(e,e.return,r)}}}function lc(e,t,n){n.props=gi(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(r){uu(e,t,r)}}function uc(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(o){uu(e,t,o)}}function dc(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(o){uu(e,t,o)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(a){uu(e,t,a)}else n.current=null}function pc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break e;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(o){uu(e,e.return,o)}}function fc(e,t,n){try{var r=e.stateNode;!function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var o=null,a=null,i=null,c=null,l=null,u=null,d=null;for(h in n){var p=n[h];if(n.hasOwnProperty(h)&&null!=p)switch(h){case"checked":case"value":break;case"defaultValue":l=p;default:r.hasOwnProperty(h)||Xu(e,t,h,null,r,p)}}for(var f in r){var h=r[f];if(p=n[f],r.hasOwnProperty(f)&&(null!=h||null!=p))switch(f){case"type":a=h;break;case"name":o=h;break;case"checked":u=h;break;case"defaultChecked":d=h;break;case"value":i=h;break;case"defaultValue":c=h;break;case"children":case"dangerouslySetInnerHTML":if(null!=h)throw Error(s(137,t));break;default:h!==p&&Xu(e,t,f,h,r,p)}}return void gt(e,i,c,l,u,d,a,o);case"select":for(a in h=i=c=f=null,n)if(l=n[a],n.hasOwnProperty(a)&&null!=l)switch(a){case"value":break;case"multiple":h=l;default:r.hasOwnProperty(a)||Xu(e,t,a,null,r,l)}for(o in r)if(a=r[o],l=n[o],r.hasOwnProperty(o)&&(null!=a||null!=l))switch(o){case"value":f=a;break;case"defaultValue":c=a;break;case"multiple":i=a;default:a!==l&&Xu(e,t,o,a,r,l)}return t=c,n=i,r=h,void(null!=f?vt(e,!!n,f,!1):!!r!=!!n&&(null!=t?vt(e,!!n,t,!0):vt(e,!!n,n?[]:"",!1)));case"textarea":for(c in h=f=null,n)if(o=n[c],n.hasOwnProperty(c)&&null!=o&&!r.hasOwnProperty(c))switch(c){case"value":case"children":break;default:Xu(e,t,c,null,r,o)}for(i in r)if(o=r[i],a=n[i],r.hasOwnProperty(i)&&(null!=o||null!=a))switch(i){case"value":f=o;break;case"defaultValue":h=o;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=o)throw Error(s(91));break;default:o!==a&&Xu(e,t,i,o,r,a)}return void _t(e,f,h);case"option":for(var m in n)if(f=n[m],n.hasOwnProperty(m)&&null!=f&&!r.hasOwnProperty(m))if("selected"===m)e.selected=!1;else Xu(e,t,m,null,r,f);for(l in r)if(f=r[l],h=n[l],r.hasOwnProperty(l)&&f!==h&&(null!=f||null!=h))if("selected"===l)e.selected=f&&"function"!=typeof f&&"symbol"!=typeof f;else Xu(e,t,l,f,r,h);return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)f=n[g],n.hasOwnProperty(g)&&null!=f&&!r.hasOwnProperty(g)&&Xu(e,t,g,null,r,f);for(u in r)if(f=r[u],h=n[u],r.hasOwnProperty(u)&&f!==h&&(null!=f||null!=h))switch(u){case"children":case"dangerouslySetInnerHTML":if(null!=f)throw Error(s(137,t));break;default:Xu(e,t,u,f,r,h)}return;default:if(Mt(t)){for(var b in n)f=n[b],n.hasOwnProperty(b)&&void 0!==f&&!r.hasOwnProperty(b)&&Ju(e,t,b,void 0,r,f);for(d in r)f=r[d],h=n[d],!r.hasOwnProperty(d)||f===h||void 0===f&&void 0===h||Ju(e,t,d,f,r,h);return}}for(var y in n)f=n[y],n.hasOwnProperty(y)&&null!=f&&!r.hasOwnProperty(y)&&Xu(e,t,y,null,r,f);for(p in r)f=r[p],h=n[p],!r.hasOwnProperty(p)||f===h||null==f&&null==h||Xu(e,t,p,f,r,h)}(r,e.type,n,t),r[Te]=t}catch(o){uu(e,e.return,o)}}function hc(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&fd(e.type)||4===e.tag}function mc(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||hc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&fd(e.type))continue e;if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function gc(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?(9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).insertBefore(e,t):((t=9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Zu));else if(4!==r&&(27===r&&fd(e.type)&&(n=e.stateNode,t=null),null!==(e=e.child)))for(gc(e,t,n),e=e.sibling;null!==e;)gc(e,t,n),e=e.sibling}function bc(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&fd(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(bc(e,t,n),e=e.sibling;null!==e;)bc(e,t,n),e=e.sibling}function yc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);ed(t,r,n),t[Pe]=e,t[Te]=n}catch(a){uu(e,e.return,a)}}var vc=!1,_c=!1,kc=!1,wc="function"==typeof WeakSet?WeakSet:Set,Cc=null;function xc(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Rc(e,n),4&r&&sc(5,n);break;case 1:if(Rc(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(s){uu(n,n.return,s)}else{var o=gi(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(o,t,e.__reactInternalSnapshotBeforeUpdate)}catch(i){uu(n,n.return,i)}}64&r&&cc(n),512&r&&uc(n,n.return);break;case 3:if(Rc(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{fa(e,t)}catch(s){uu(n,n.return,s)}}break;case 27:null===t&&4&r&&yc(n);case 26:case 5:Rc(e,n),null===t&&4&r&&pc(n),512&r&&uc(n,n.return);break;case 12:Rc(e,n);break;case 13:Rc(e,n),4&r&&jc(e,n),64&r&&(null!==(e=n.memoizedState)&&(null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$?"!==e.data||"complete"===n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=hu.bind(null,n))));break;case 22:if(!(r=null!==n.memoizedState||vc)){t=null!==t&&null!==t.memoizedState||_c,o=vc;var a=_c;vc=r,(_c=t)&&!a?zc(e,n,!!(8772&n.subtreeFlags)):Rc(e,n),vc=o,_c=a}break;case 30:break;default:Rc(e,n)}}function Sc(e){var t=e.alternate;null!==t&&(e.alternate=null,Sc(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&Be(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Mc=null,Ec=!1;function Oc(e,t,n){for(n=n.child;null!==n;)Ac(e,t,n),n=n.sibling}function Ac(e,t,n){if(de&&"function"==typeof de.onCommitFiberUnmount)try{de.onCommitFiberUnmount(ue,n)}catch(a){}switch(n.tag){case 26:_c||dc(n,t),Oc(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode).parentNode.removeChild(n);break;case 27:_c||dc(n,t);var r=Mc,o=Ec;fd(n.type)&&(Mc=n.stateNode,Ec=!1),Oc(e,t,n),kd(n.stateNode),Mc=r,Ec=o;break;case 5:_c||dc(n,t);case 6:if(r=Mc,o=Ec,Mc=null,Oc(e,t,n),Ec=o,null!==(Mc=r))if(Ec)try{(9===Mc.nodeType?Mc.body:"HTML"===Mc.nodeName?Mc.ownerDocument.body:Mc).removeChild(n.stateNode)}catch(s){uu(n,t,s)}else try{Mc.removeChild(n.stateNode)}catch(s){uu(n,t,s)}break;case 18:null!==Mc&&(Ec?(hd(9===(e=Mc).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e,n.stateNode),Ep(e)):hd(Mc,n.stateNode));break;case 4:r=Mc,o=Ec,Mc=n.stateNode.containerInfo,Ec=!0,Oc(e,t,n),Mc=r,Ec=o;break;case 0:case 11:case 14:case 15:_c||ic(2,n,t),_c||ic(4,n,t),Oc(e,t,n);break;case 1:_c||(dc(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount&&lc(n,t,r)),Oc(e,t,n);break;case 21:Oc(e,t,n);break;case 22:_c=(r=_c)||null!==n.memoizedState,Oc(e,t,n),_c=r;break;default:Oc(e,t,n)}}function jc(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&(null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))))try{Ep(e)}catch(n){uu(t,t.return,n)}}function Dc(e,t){var n=function(e){switch(e.tag){case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new wc),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new wc),t;default:throw Error(s(435,e.tag))}}(e);t.forEach(function(t){var r=mu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))})}function Pc(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var o=n[r],a=e,i=t,c=i;e:for(;null!==c;){switch(c.tag){case 27:if(fd(c.type)){Mc=c.stateNode,Ec=!1;break e}break;case 5:Mc=c.stateNode,Ec=!1;break e;case 3:case 4:Mc=c.stateNode.containerInfo,Ec=!0;break e}c=c.return}if(null===Mc)throw Error(s(160));Ac(a,i,o),Mc=null,Ec=!1,null!==(a=o.alternate)&&(a.return=null),o.return=null}if(13878&t.subtreeFlags)for(t=t.child;null!==t;)Ic(t,e),t=t.sibling}var Tc=null;function Ic(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:Pc(t,e),Nc(e),4&r&&(ic(3,e,e.return),sc(3,e),ic(5,e,e.return));break;case 1:Pc(t,e),Nc(e),512&r&&(_c||null===n||dc(n,n.return)),64&r&&vc&&(null!==(e=e.updateQueue)&&(null!==(r=e.callbacks)&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=null===n?r:n.concat(r))));break;case 26:var o=Tc;if(Pc(t,e),Nc(e),512&r&&(_c||null===n||dc(n,n.return)),4&r){var a=null!==n?n.memoizedState:null;if(r=e.memoizedState,null===n)if(null===r)if(null===e.stateNode){e:{r=e.type,n=e.memoizedProps,o=o.ownerDocument||o;t:switch(r){case"title":(!(a=o.getElementsByTagName("title")[0])||a[ze]||a[Pe]||"http://www.w3.org/2000/svg"===a.namespaceURI||a.hasAttribute("itemprop"))&&(a=o.createElement(r),o.head.insertBefore(a,o.querySelector("head > title"))),ed(a,r,n),a[Pe]=e,Ve(a),r=a;break e;case"link":var i=zd("link","href",o).get(r+(n.href||""));if(i)for(var c=0;c<i.length;c++)if((a=i[c]).getAttribute("href")===(null==n.href||""===n.href?null:n.href)&&a.getAttribute("rel")===(null==n.rel?null:n.rel)&&a.getAttribute("title")===(null==n.title?null:n.title)&&a.getAttribute("crossorigin")===(null==n.crossOrigin?null:n.crossOrigin)){i.splice(c,1);break t}ed(a=o.createElement(r),r,n),o.head.appendChild(a);break;case"meta":if(i=zd("meta","content",o).get(r+(n.content||"")))for(c=0;c<i.length;c++)if((a=i[c]).getAttribute("content")===(null==n.content?null:""+n.content)&&a.getAttribute("name")===(null==n.name?null:n.name)&&a.getAttribute("property")===(null==n.property?null:n.property)&&a.getAttribute("http-equiv")===(null==n.httpEquiv?null:n.httpEquiv)&&a.getAttribute("charset")===(null==n.charSet?null:n.charSet)){i.splice(c,1);break t}ed(a=o.createElement(r),r,n),o.head.appendChild(a);break;default:throw Error(s(468,r))}a[Pe]=e,Ve(a),r=a}e.stateNode=r}else Bd(o,e.type,e.stateNode);else e.stateNode=Id(o,r,e.memoizedProps);else a!==r?(null===a?null!==n.stateNode&&(n=n.stateNode).parentNode.removeChild(n):a.count--,null===r?Bd(o,e.type,e.stateNode):Id(o,r,e.memoizedProps)):null===r&&null!==e.stateNode&&fc(e,e.memoizedProps,n.memoizedProps)}break;case 27:Pc(t,e),Nc(e),512&r&&(_c||null===n||dc(n,n.return)),null!==n&&4&r&&fc(e,e.memoizedProps,n.memoizedProps);break;case 5:if(Pc(t,e),Nc(e),512&r&&(_c||null===n||dc(n,n.return)),32&e.flags){o=e.stateNode;try{wt(o,"")}catch(h){uu(e,e.return,h)}}4&r&&null!=e.stateNode&&fc(e,o=e.memoizedProps,null!==n?n.memoizedProps:o),1024&r&&(kc=!0);break;case 6:if(Pc(t,e),Nc(e),4&r){if(null===e.stateNode)throw Error(s(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(h){uu(e,e.return,h)}}break;case 3:if(Fd=null,o=Tc,Tc=xd(t.containerInfo),Pc(t,e),Tc=o,Nc(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ep(t.containerInfo)}catch(h){uu(e,e.return,h)}kc&&(kc=!1,Lc(e));break;case 4:r=Tc,Tc=xd(e.stateNode.containerInfo),Pc(t,e),Nc(e),Tc=r;break;case 12:default:Pc(t,e),Nc(e);break;case 13:Pc(t,e),Nc(e),8192&e.child.flags&&null!==e.memoizedState!=(null!==n&&null!==n.memoizedState)&&(kl=te()),4&r&&(null!==(r=e.updateQueue)&&(e.updateQueue=null,Dc(e,r)));break;case 22:o=null!==e.memoizedState;var l=null!==n&&null!==n.memoizedState,u=vc,d=_c;if(vc=u||o,_c=d||l,Pc(t,e),_c=d,vc=u,Nc(e),8192&r)e:for(t=e.stateNode,t._visibility=o?-2&t._visibility:1|t._visibility,o&&(null===n||l||vc||_c||Fc(e)),n=null,t=e;;){if(5===t.tag||26===t.tag){if(null===n){l=n=t;try{if(a=l.stateNode,o)"function"==typeof(i=a.style).setProperty?i.setProperty("display","none","important"):i.display="none";else{c=l.stateNode;var p=l.memoizedProps.style,f=null!=p&&p.hasOwnProperty("display")?p.display:null;c.style.display=null==f||"boolean"==typeof f?"":(""+f).trim()}}catch(h){uu(l,l.return,h)}}}else if(6===t.tag){if(null===n){l=t;try{l.stateNode.nodeValue=o?"":l.memoizedProps}catch(h){uu(l,l.return,h)}}}else if((22!==t.tag&&23!==t.tag||null===t.memoizedState||t===e)&&null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;null===t.sibling;){if(null===t.return||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}4&r&&(null!==(r=e.updateQueue)&&(null!==(n=r.retryQueue)&&(r.retryQueue=null,Dc(e,n))));break;case 19:Pc(t,e),Nc(e),4&r&&(null!==(r=e.updateQueue)&&(e.updateQueue=null,Dc(e,r)));case 30:case 21:}}function Nc(e){var t=e.flags;if(2&t){try{for(var n,r=e.return;null!==r;){if(hc(r)){n=r;break}r=r.return}if(null==n)throw Error(s(160));switch(n.tag){case 27:var o=n.stateNode;bc(e,mc(e),o);break;case 5:var a=n.stateNode;32&n.flags&&(wt(a,""),n.flags&=-33),bc(e,mc(e),a);break;case 3:case 4:var i=n.stateNode.containerInfo;gc(e,mc(e),i);break;default:throw Error(s(161))}}catch(c){uu(e,e.return,c)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function Lc(e){if(1024&e.subtreeFlags)for(e=e.child;null!==e;){var t=e;Lc(t),5===t.tag&&1024&t.flags&&t.stateNode.reset(),e=e.sibling}}function Rc(e,t){if(8772&t.subtreeFlags)for(t=t.child;null!==t;)xc(e,t.alternate,t),t=t.sibling}function Fc(e){for(e=e.child;null!==e;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ic(4,t,t.return),Fc(t);break;case 1:dc(t,t.return);var n=t.stateNode;"function"==typeof n.componentWillUnmount&&lc(t,t.return,n),Fc(t);break;case 27:kd(t.stateNode);case 26:case 5:dc(t,t.return),Fc(t);break;case 22:null===t.memoizedState&&Fc(t);break;default:Fc(t)}e=e.sibling}}function zc(e,t,n){for(n=n&&!!(8772&t.subtreeFlags),t=t.child;null!==t;){var r=t.alternate,o=e,a=t,s=a.flags;switch(a.tag){case 0:case 11:case 15:zc(o,a,n),sc(4,a);break;case 1:if(zc(o,a,n),"function"==typeof(o=(r=a).stateNode).componentDidMount)try{o.componentDidMount()}catch(l){uu(r,r.return,l)}if(null!==(o=(r=a).updateQueue)){var i=r.stateNode;try{var c=o.shared.hiddenCallbacks;if(null!==c)for(o.shared.hiddenCallbacks=null,o=0;o<c.length;o++)pa(c[o],i)}catch(l){uu(r,r.return,l)}}n&&64&s&&cc(a),uc(a,a.return);break;case 27:yc(a);case 26:case 5:zc(o,a,n),n&&null===r&&4&s&&pc(a),uc(a,a.return);break;case 12:zc(o,a,n);break;case 13:zc(o,a,n),n&&4&s&&jc(o,a);break;case 22:null===a.memoizedState&&zc(o,a,n),uc(a,a.return);break;case 30:break;default:zc(o,a,n)}t=t.sibling}}function Bc(e,t){var n=null;null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),e=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(e=t.memoizedState.cachePool.pool),e!==n&&(null!=e&&e.refCount++,null!=n&&No(n))}function $c(e,t){e=null,null!==t.alternate&&(e=t.alternate.memoizedState.cache),(t=t.memoizedState.cache)!==e&&(t.refCount++,null!=e&&No(e))}function Uc(e,t,n,r){if(10256&t.subtreeFlags)for(t=t.child;null!==t;)qc(e,t,n,r),t=t.sibling}function qc(e,t,n,r){var o=t.flags;switch(t.tag){case 0:case 11:case 15:Uc(e,t,n,r),2048&o&&sc(9,t);break;case 1:case 13:default:Uc(e,t,n,r);break;case 3:Uc(e,t,n,r),2048&o&&(e=null,null!==t.alternate&&(e=t.alternate.memoizedState.cache),(t=t.memoizedState.cache)!==e&&(t.refCount++,null!=e&&No(e)));break;case 12:if(2048&o){Uc(e,t,n,r),e=t.stateNode;try{var a=t.memoizedProps,s=a.id,i=a.onPostCommit;"function"==typeof i&&i(s,null===t.alternate?"mount":"update",e.passiveEffectDuration,-0)}catch(c){uu(t,t.return,c)}}else Uc(e,t,n,r);break;case 23:break;case 22:a=t.stateNode,s=t.alternate,null!==t.memoizedState?2&a._visibility?Uc(e,t,n,r):Vc(e,t):2&a._visibility?Uc(e,t,n,r):(a._visibility|=2,Hc(e,t,n,r,!!(10256&t.subtreeFlags))),2048&o&&Bc(s,t);break;case 24:Uc(e,t,n,r),2048&o&&$c(t.alternate,t)}}function Hc(e,t,n,r,o){for(o=o&&!!(10256&t.subtreeFlags),t=t.child;null!==t;){var a=e,s=t,i=n,c=r,l=s.flags;switch(s.tag){case 0:case 11:case 15:Hc(a,s,i,c,o),sc(8,s);break;case 23:break;case 22:var u=s.stateNode;null!==s.memoizedState?2&u._visibility?Hc(a,s,i,c,o):Vc(a,s):(u._visibility|=2,Hc(a,s,i,c,o)),o&&2048&l&&Bc(s.alternate,s);break;case 24:Hc(a,s,i,c,o),o&&2048&l&&$c(s.alternate,s);break;default:Hc(a,s,i,c,o)}t=t.sibling}}function Vc(e,t){if(10256&t.subtreeFlags)for(t=t.child;null!==t;){var n=e,r=t,o=r.flags;switch(r.tag){case 22:Vc(n,r),2048&o&&Bc(r.alternate,r);break;case 24:Vc(n,r),2048&o&&$c(r.alternate,r);break;default:Vc(n,r)}t=t.sibling}}var Wc=8192;function Gc(e){if(e.subtreeFlags&Wc)for(e=e.child;null!==e;)Kc(e),e=e.sibling}function Kc(e){switch(e.tag){case 26:Gc(e),e.flags&Wc&&null!==e.memoizedState&&function(e,t,n){if(null===Ud)throw Error(s(475));var r=Ud;if(!("stylesheet"!==t.type||"string"==typeof n.media&&!1===matchMedia(n.media).matches||4&t.state.loading)){if(null===t.instance){var o=Ad(n.href),a=e.querySelector(jd(o));if(a)return null!==(e=a._p)&&"object"==typeof e&&"function"==typeof e.then&&(r.count++,r=Hd.bind(r),e.then(r,r)),t.state.loading|=4,t.instance=a,void Ve(a);a=e.ownerDocument||e,n=Dd(n),(o=wd.get(o))&&Ld(n,o),Ve(a=a.createElement("link"));var i=a;i._p=new Promise(function(e,t){i.onload=e,i.onerror=t}),ed(a,"link",n),t.instance=a}null===r.stylesheets&&(r.stylesheets=new Map),r.stylesheets.set(t,e),(e=t.state.preload)&&!(3&t.state.loading)&&(r.count++,t=Hd.bind(r),e.addEventListener("load",t),e.addEventListener("error",t))}}(Tc,e.memoizedState,e.memoizedProps);break;case 5:default:Gc(e);break;case 3:case 4:var t=Tc;Tc=xd(e.stateNode.containerInfo),Gc(e),Tc=t;break;case 22:null===e.memoizedState&&(null!==(t=e.alternate)&&null!==t.memoizedState?(t=Wc,Wc=16777216,Gc(e),Wc=t):Gc(e))}}function Qc(e){var t=e.alternate;if(null!==t&&null!==(e=t.child)){t.child=null;do{t=e.sibling,e.sibling=null,e=t}while(null!==e)}}function Yc(e){var t=e.deletions;if(16&e.flags){if(null!==t)for(var n=0;n<t.length;n++){var r=t[n];Cc=r,Jc(r,e)}Qc(e)}if(10256&e.subtreeFlags)for(e=e.child;null!==e;)Zc(e),e=e.sibling}function Zc(e){switch(e.tag){case 0:case 11:case 15:Yc(e),2048&e.flags&&ic(9,e,e.return);break;case 3:case 12:default:Yc(e);break;case 22:var t=e.stateNode;null!==e.memoizedState&&2&t._visibility&&(null===e.return||13!==e.return.tag)?(t._visibility&=-3,Xc(e)):Yc(e)}}function Xc(e){var t=e.deletions;if(16&e.flags){if(null!==t)for(var n=0;n<t.length;n++){var r=t[n];Cc=r,Jc(r,e)}Qc(e)}for(e=e.child;null!==e;){switch((t=e).tag){case 0:case 11:case 15:ic(8,t,t.return),Xc(t);break;case 22:2&(n=t.stateNode)._visibility&&(n._visibility&=-3,Xc(t));break;default:Xc(t)}e=e.sibling}}function Jc(e,t){for(;null!==Cc;){var n=Cc;switch(n.tag){case 0:case 11:case 15:ic(8,n,t);break;case 23:case 22:if(null!==n.memoizedState&&null!==n.memoizedState.cachePool){var r=n.memoizedState.cachePool.pool;null!=r&&r.refCount++}break;case 24:No(n.memoizedState.cache)}if(null!==(r=n.child))r.return=n,Cc=r;else e:for(n=e;null!==Cc;){var o=(r=Cc).sibling,a=r.return;if(Sc(r),r===n){Cc=null;break e}if(null!==o){o.return=a,Cc=o;break e}Cc=a}}}var el={getCacheForType:function(e){var t=Eo(To),n=t.data.get(e);return void 0===n&&(n=e(),t.data.set(e,n)),n}},tl="function"==typeof WeakMap?WeakMap:Map,nl=0,rl=null,ol=null,al=0,sl=0,il=null,cl=!1,ll=!1,ul=!1,dl=0,pl=0,fl=0,hl=0,ml=0,gl=0,bl=0,yl=null,vl=null,_l=!1,kl=0,wl=1/0,Cl=null,xl=null,Sl=0,Ml=null,El=null,Ol=0,Al=0,jl=null,Dl=null,Pl=0,Tl=null;function Il(){if(2&nl&&0!==al)return al&-al;if(null!==I.T){return 0!==Fo?Fo:Au()}return je()}function Nl(){0===gl&&(gl=536870912&al&&!ao?536870912:we());var e=oi.current;return null!==e&&(e.flags|=32),gl}function Ll(e,t,n){(e!==rl||2!==sl&&9!==sl)&&null===e.cancelPendingCommit||(ql(e,0),Bl(e,al,gl,!1)),Se(e,n),2&nl&&e===rl||(e===rl&&(!(2&nl)&&(hl|=n),4===pl&&Bl(e,al,gl,!1)),wu(e))}function Rl(e,t,n){if(6&nl)throw Error(s(327));for(var r=!n&&!(124&t)&&0===(t&e.expiredLanes)||_e(e,t),o=r?function(e,t){var n=nl;nl|=2;var r=Vl(),o=Wl();rl!==e||al!==t?(Cl=null,wl=te()+500,ql(e,t)):ll=_e(e,t);e:for(;;)try{if(0!==sl&&null!==ol){t=ol;var a=il;t:switch(sl){case 1:sl=0,il=null,Jl(e,t,a,1);break;case 2:case 9:if(Yo(a)){sl=0,il=null,Xl(t);break}t=function(){2!==sl&&9!==sl||rl!==e||(sl=7),wu(e)},a.then(t,t);break e;case 3:sl=7;break e;case 4:sl=5;break e;case 7:Yo(a)?(sl=0,il=null,Xl(t)):(sl=0,il=null,Jl(e,t,a,7));break;case 5:var i=null;switch(ol.tag){case 26:i=ol.memoizedState;case 5:case 27:var c=ol;if(!i||$d(i)){sl=0,il=null;var l=c.sibling;if(null!==l)ol=l;else{var u=c.return;null!==u?(ol=u,eu(u)):ol=null}break t}}sl=0,il=null,Jl(e,t,a,5);break;case 6:sl=0,il=null,Jl(e,t,a,6);break;case 8:Ul(),pl=6;break e;default:throw Error(s(462))}}Yl();break}catch(d){Hl(e,d)}return vo=yo=null,I.H=r,I.A=o,nl=n,null!==ol?0:(rl=null,al=0,Or(),pl)}(e,t):Kl(e,t,!0),a=r;;){if(0===o){ll&&!r&&Bl(e,t,0,!1);break}if(n=e.current.alternate,!a||zl(n)){if(2===o){if(a=t,e.errorRecoveryDisabledLanes&a)var i=0;else i=0!==(i=-536870913&e.pendingLanes)?i:536870912&i?536870912:0;if(0!==i){t=i;e:{var c=e;o=yl;var l=c.current.memoizedState.isDehydrated;if(l&&(ql(c,i).flags|=256),2!==(i=Kl(c,i,!1))){if(ul&&!l){c.errorRecoveryDisabledLanes|=a,hl|=a,o=4;break e}a=vl,vl=o,null!==a&&(null===vl?vl=a:vl.push.apply(vl,a))}o=i}if(a=!1,2!==o)continue}}if(1===o){ql(e,0),Bl(e,t,0,!0);break}e:{switch(r=e,a=o){case 0:case 1:throw Error(s(345));case 4:if((4194048&t)!==t)break;case 6:Bl(r,t,gl,!cl);break e;case 2:vl=null;break;case 3:case 5:break;default:throw Error(s(329))}if((62914560&t)===t&&10<(o=kl+300-te())){if(Bl(r,t,gl,!cl),0!==ve(r,0,!0))break e;r.timeoutHandle=cd(Fl.bind(null,r,n,vl,Cl,_l,t,gl,hl,bl,cl,a,2,-0,0),o)}else Fl(r,n,vl,Cl,_l,t,gl,hl,bl,cl,a,0,-0,0)}break}o=Kl(e,t,!1),a=!1}wu(e)}function Fl(e,t,n,r,o,a,i,c,l,u,d,p,f,h){if(e.timeoutHandle=-1,(8192&(p=t.subtreeFlags)||!(16785408&~p))&&(Ud={stylesheets:null,count:0,unsuspend:qd},Kc(t),null!==(p=function(){if(null===Ud)throw Error(s(475));var e=Ud;return e.stylesheets&&0===e.count&&Wd(e,e.stylesheets),0<e.count?function(t){var n=setTimeout(function(){if(e.stylesheets&&Wd(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4);return e.unsuspend=t,function(){e.unsuspend=null,clearTimeout(n)}}:null}())))return e.cancelPendingCommit=p(nu.bind(null,e,t,a,n,r,o,i,c,l,d,1,f,h)),void Bl(e,a,i,!u);nu(e,t,a,n,r,o,i,c,l)}function zl(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&(null!==(n=t.updateQueue)&&null!==(n=n.stores)))for(var r=0;r<n.length;r++){var o=n[r],a=o.getSnapshot;o=o.value;try{if(!Qn(a(),o))return!1}catch(s){return!1}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Bl(e,t,n,r){t&=~ml,t&=~hl,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var o=t;0<o;){var a=31-fe(o),s=1<<a;r[a]=-1,o&=~s}0!==n&&Me(e,n,t)}function $l(){return!!(6&nl)||(Cu(0,!1),!1)}function Ul(){if(null!==ol){if(0===sl)var e=ol.return;else vo=yo=null,Fa(e=ol),Qs=null,Ys=0,e=ol;for(;null!==e;)ac(e.alternate,e),e=e.return;ol=null}}function ql(e,t){var n=e.timeoutHandle;-1!==n&&(e.timeoutHandle=-1,ld(n)),null!==(n=e.cancelPendingCommit)&&(e.cancelPendingCommit=null,n()),Ul(),rl=e,ol=n=Fr(e.current,null),al=t,sl=0,il=null,cl=!1,ll=_e(e,t),ul=!1,bl=gl=ml=hl=fl=pl=0,vl=yl=null,_l=!1,8&t&&(t|=32&t);var r=e.entangledLanes;if(0!==r)for(e=e.entanglements,r&=t;0<r;){var o=31-fe(r),a=1<<o;t|=e[o],r&=~a}return dl=t,Or(),n}function Hl(e,t){_a=null,I.H=Vs,t===Wo||t===Ko?(t=ea(),sl=3):t===Go?(t=ea(),sl=4):sl=t===Mi?8:null!==t&&"object"==typeof t&&"function"==typeof t.then?6:1,il=t,null===ol&&(pl=1,ki(e,xr(t,e.current)))}function Vl(){var e=I.H;return I.H=Vs,null===e?Vs:e}function Wl(){var e=I.A;return I.A=el,e}function Gl(){pl=4,cl||(4194048&al)!==al&&null!==oi.current||(ll=!0),!(134217727&fl)&&!(134217727&hl)||null===rl||Bl(rl,al,gl,!1)}function Kl(e,t,n){var r=nl;nl|=2;var o=Vl(),a=Wl();rl===e&&al===t||(Cl=null,ql(e,t)),t=!1;var s=pl;e:for(;;)try{if(0!==sl&&null!==ol){var i=ol,c=il;switch(sl){case 8:Ul(),s=6;break e;case 3:case 2:case 9:case 6:null===oi.current&&(t=!0);var l=sl;if(sl=0,il=null,Jl(e,i,c,l),n&&ll){s=0;break e}break;default:l=sl,sl=0,il=null,Jl(e,i,c,l)}}Ql(),s=pl;break}catch(u){Hl(e,u)}return t&&e.shellSuspendCounter++,vo=yo=null,nl=r,I.H=o,I.A=a,null===ol&&(rl=null,al=0,Or()),s}function Ql(){for(;null!==ol;)Zl(ol)}function Yl(){for(;null!==ol&&!J();)Zl(ol)}function Zl(e){var t=Zi(e.alternate,e,dl);e.memoizedProps=e.pendingProps,null===t?eu(e):ol=t}function Xl(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=Li(n,t,t.pendingProps,t.type,void 0,al);break;case 11:t=Li(n,t,t.pendingProps,t.type.render,t.ref,al);break;case 5:Fa(t);default:ac(n,t),t=Zi(n,t=ol=zr(t,dl),dl)}e.memoizedProps=e.pendingProps,null===t?eu(e):ol=t}function Jl(e,t,n,r){vo=yo=null,Fa(t),Qs=null,Ys=0;var o=t.return;try{if(function(e,t,n,r,o){if(n.flags|=32768,null!==r&&"object"==typeof r&&"function"==typeof r.then){if(null!==(t=n.alternate)&&xo(t,n,o,!0),null!==(n=oi.current)){switch(n.tag){case 13:return null===ai?Gl():null===n.alternate&&0===pl&&(pl=3),n.flags&=-257,n.flags|=65536,n.lanes=o,r===Qo?n.flags|=16384:(null===(t=n.updateQueue)?n.updateQueue=new Set([r]):t.add(r),du(e,r,o)),!1;case 22:return n.flags|=65536,r===Qo?n.flags|=16384:(null===(t=n.updateQueue)?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):null===(n=t.retryQueue)?t.retryQueue=new Set([r]):n.add(r),du(e,r,o)),!1}throw Error(s(435,n.tag))}return du(e,r,o),Gl(),!1}if(ao)return null!==(t=oi.current)?(!(65536&t.flags)&&(t.flags|=256),t.flags|=65536,t.lanes=o,r!==co&&go(xr(e=Error(s(422),{cause:r}),n))):(r!==co&&go(xr(t=Error(s(423),{cause:r}),n)),(e=e.current.alternate).flags|=65536,o&=-o,e.lanes|=o,r=xr(r,n),ca(e,o=Ci(e.stateNode,r,o)),4!==pl&&(pl=2)),!1;var a=Error(s(520),{cause:r});if(a=xr(a,n),null===yl?yl=[a]:yl.push(a),4!==pl&&(pl=2),null===t)return!0;r=xr(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=o&-o,n.lanes|=e,ca(n,e=Ci(n.stateNode,r,e)),!1;case 1:if(t=n.type,a=n.stateNode,!(128&n.flags||"function"!=typeof t.getDerivedStateFromError&&(null===a||"function"!=typeof a.componentDidCatch||null!==xl&&xl.has(a))))return n.flags|=65536,o&=-o,n.lanes|=o,Si(o=xi(o),e,n,r),ca(n,o),!1}n=n.return}while(null!==n);return!1}(e,o,t,n,al))return pl=1,ki(e,xr(n,e.current)),void(ol=null)}catch(a){if(null!==o)throw ol=o,a;return pl=1,ki(e,xr(n,e.current)),void(ol=null)}32768&t.flags?(ao||1===r?e=!0:ll||536870912&al?e=!1:(cl=e=!0,(2===r||9===r||3===r||6===r)&&(null!==(r=oi.current)&&13===r.tag&&(r.flags|=16384))),tu(t,e)):eu(t)}function eu(e){var t=e;do{if(32768&t.flags)return void tu(t,cl);e=t.return;var n=rc(t.alternate,t,dl);if(null!==n)return void(ol=n);if(null!==(t=t.sibling))return void(ol=t);ol=t=e}while(null!==t);0===pl&&(pl=5)}function tu(e,t){do{var n=oc(e.alternate,e);if(null!==n)return n.flags&=32767,void(ol=n);if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling))return void(ol=e);ol=e=n}while(null!==e);pl=6,ol=null}function nu(e,t,n,r,o,a,i,c,l){e.cancelPendingCommit=null;do{iu()}while(0!==Sl);if(6&nl)throw Error(s(327));if(null!==t){if(t===e.current)throw Error(s(177));if(a=t.lanes|t.childLanes,function(e,t,n,r,o,a){var s=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var i=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=s&~n;0<n;){var u=31-fe(n),d=1<<u;i[u]=0,c[u]=-1;var p=l[u];if(null!==p)for(l[u]=null,u=0;u<p.length;u++){var f=p[u];null!==f&&(f.lane&=-536870913)}n&=~d}0!==r&&Me(e,r,0),0!==a&&0===o&&0!==e.tag&&(e.suspendedLanes|=a&~(s&~t))}(e,n,a|=Er,i,c,l),e===rl&&(ol=rl=null,al=0),El=t,Ml=e,Ol=n,Al=a,jl=o,Dl=r,10256&t.subtreeFlags||10256&t.flags?(e.callbackNode=null,e.callbackPriority=0,Z(ae,function(){return cu(),null})):(e.callbackNode=null,e.callbackPriority=0),r=!!(13878&t.flags),13878&t.subtreeFlags||r){r=I.T,I.T=null,o=N.p,N.p=2,i=nl,nl|=4;try{!function(e,t){if(e=e.containerInfo,td=np,tr(e=er(e))){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var o=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch(g){n=null;break e}var i=0,c=-1,l=-1,u=0,d=0,p=e,f=null;t:for(;;){for(var h;p!==n||0!==o&&3!==p.nodeType||(c=i+o),p!==a||0!==r&&3!==p.nodeType||(l=i+r),3===p.nodeType&&(i+=p.nodeValue.length),null!==(h=p.firstChild);)f=p,p=h;for(;;){if(p===e)break t;if(f===n&&++u===o&&(c=i),f===a&&++d===r&&(l=i),null!==(h=p.nextSibling))break;f=(p=f).parentNode}p=h}n=-1===c||-1===l?null:{start:c,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(nd={focusedElem:e,selectionRange:n},np=!1,Cc=t;null!==Cc;)if(e=(t=Cc).child,1024&t.subtreeFlags&&null!==e)e.return=t,Cc=e;else for(;null!==Cc;){switch(a=(t=Cc).alternate,e=t.flags,t.tag){case 0:case 11:case 15:case 5:case 26:case 27:case 6:case 4:case 17:break;case 1:if(1024&e&&null!==a){e=void 0,n=t,o=a.memoizedProps,a=a.memoizedState,r=n.stateNode;try{var m=gi(n.type,o,(n.elementType,n.type));e=r.getSnapshotBeforeUpdate(m,a),r.__reactInternalSnapshotBeforeUpdate=e}catch(b){uu(n,n.return,b)}}break;case 3:if(1024&e)if(9===(n=(e=t.stateNode.containerInfo).nodeType))md(e);else if(1===n)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":md(e);break;default:e.textContent=""}break;default:if(1024&e)throw Error(s(163))}if(null!==(e=t.sibling)){e.return=t.return,Cc=e;break}Cc=t.return}}(e,t)}finally{nl=i,N.p=o,I.T=r}}Sl=1,ru(),ou(),au()}}function ru(){if(1===Sl){Sl=0;var e=Ml,t=El,n=!!(13878&t.flags);if(13878&t.subtreeFlags||n){n=I.T,I.T=null;var r=N.p;N.p=2;var o=nl;nl|=4;try{Ic(t,e);var a=nd,s=er(e.containerInfo),i=a.focusedElem,c=a.selectionRange;if(s!==i&&i&&i.ownerDocument&&Jn(i.ownerDocument.documentElement,i)){if(null!==c&&tr(i)){var l=c.start,u=c.end;if(void 0===u&&(u=l),"selectionStart"in i)i.selectionStart=l,i.selectionEnd=Math.min(u,i.value.length);else{var d=i.ownerDocument||document,p=d&&d.defaultView||window;if(p.getSelection){var f=p.getSelection(),h=i.textContent.length,m=Math.min(c.start,h),g=void 0===c.end?m:Math.min(c.end,h);!f.extend&&m>g&&(s=g,g=m,m=s);var b=Xn(i,m),y=Xn(i,g);if(b&&y&&(1!==f.rangeCount||f.anchorNode!==b.node||f.anchorOffset!==b.offset||f.focusNode!==y.node||f.focusOffset!==y.offset)){var v=d.createRange();v.setStart(b.node,b.offset),f.removeAllRanges(),m>g?(f.addRange(v),f.extend(y.node,y.offset)):(v.setEnd(y.node,y.offset),f.addRange(v))}}}}for(d=[],f=i;f=f.parentNode;)1===f.nodeType&&d.push({element:f,left:f.scrollLeft,top:f.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;i<d.length;i++){var _=d[i];_.element.scrollLeft=_.left,_.element.scrollTop=_.top}}np=!!td,nd=td=null}finally{nl=o,N.p=r,I.T=n}}e.current=t,Sl=2}}function ou(){if(2===Sl){Sl=0;var e=Ml,t=El,n=!!(8772&t.flags);if(8772&t.subtreeFlags||n){n=I.T,I.T=null;var r=N.p;N.p=2;var o=nl;nl|=4;try{xc(e,t.alternate,t)}finally{nl=o,N.p=r,I.T=n}}Sl=3}}function au(){if(4===Sl||3===Sl){Sl=0,ee();var e=Ml,t=El,n=Ol,r=Dl;10256&t.subtreeFlags||10256&t.flags?Sl=5:(Sl=0,El=Ml=null,su(e,e.pendingLanes));var o=e.pendingLanes;if(0===o&&(xl=null),Ae(n),t=t.stateNode,de&&"function"==typeof de.onCommitFiberRoot)try{de.onCommitFiberRoot(ue,t,void 0,!(128&~t.current.flags))}catch(c){}if(null!==r){t=I.T,o=N.p,N.p=2,I.T=null;try{for(var a=e.onRecoverableError,s=0;s<r.length;s++){var i=r[s];a(i.value,{componentStack:i.stack})}}finally{I.T=t,N.p=o}}3&Ol&&iu(),wu(e),o=e.pendingLanes,4194090&n&&42&o?e===Tl?Pl++:(Pl=0,Tl=e):Pl=0,Cu(0,!1)}}function su(e,t){0===(e.pooledCacheLanes&=t)&&(null!=(t=e.pooledCache)&&(e.pooledCache=null,No(t)))}function iu(e){return ru(),ou(),au(),cu()}function cu(){if(5!==Sl)return!1;var e=Ml,t=Al;Al=0;var n=Ae(Ol),r=I.T,o=N.p;try{N.p=32>n?32:n,I.T=null,n=jl,jl=null;var a=Ml,i=Ol;if(Sl=0,El=Ml=null,Ol=0,6&nl)throw Error(s(331));var c=nl;if(nl|=4,Zc(a.current),qc(a,a.current,i,n),nl=c,Cu(0,!1),de&&"function"==typeof de.onPostCommitFiberRoot)try{de.onPostCommitFiberRoot(ue,a)}catch(l){}return!0}finally{N.p=o,I.T=r,su(e,t)}}function lu(e,t,n){t=xr(n,t),null!==(e=sa(e,t=Ci(e.stateNode,t,2),2))&&(Se(e,2),wu(e))}function uu(e,t,n){if(3===e.tag)lu(e,e,n);else for(;null!==t;){if(3===t.tag){lu(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===xl||!xl.has(r))){e=xr(n,e),null!==(r=sa(t,n=xi(2),2))&&(Si(n,r,t,e),Se(r,2),wu(r));break}}t=t.return}}function du(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new tl;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(ul=!0,o.add(n),e=pu.bind(null,e,t,n),t.then(e,e))}function pu(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,rl===e&&(al&n)===n&&(4===pl||3===pl&&(62914560&al)===al&&300>te()-kl?!(2&nl)&&ql(e,0):ml|=n,bl===al&&(bl=0)),wu(e)}function fu(e,t){0===t&&(t=Ce()),null!==(e=Dr(e,t))&&(Se(e,t),wu(e))}function hu(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),fu(e,n)}function mu(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(s(314))}null!==r&&r.delete(t),fu(e,n)}var gu=null,bu=null,yu=!1,vu=!1,_u=!1,ku=0;function wu(e){e!==bu&&null===e.next&&(null===bu?gu=bu=e:bu=bu.next=e),vu=!0,yu||(yu=!0,dd(function(){6&nl?Z(re,xu):Su()}))}function Cu(e,t){if(!_u&&vu){_u=!0;do{for(var n=!1,r=gu;null!==r;){if(!t)if(0!==e){var o=r.pendingLanes;if(0===o)var a=0;else{var s=r.suspendedLanes,i=r.pingedLanes;a=(1<<31-fe(42|e)+1)-1,a=201326741&(a&=o&~(s&~i))?201326741&a|1:a?2|a:0}0!==a&&(n=!0,Ou(r,a))}else a=al,!(3&(a=ve(r,r===rl?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||_e(r,a)||(n=!0,Ou(r,a));r=r.next}}while(n);_u=!1}}function xu(){Su()}function Su(){vu=yu=!1;var e=0;0!==ku&&(function(){var e=window.event;if(e&&"popstate"===e.type)return e!==id&&(id=e,!0);return id=null,!1}()&&(e=ku),ku=0);for(var t=te(),n=null,r=gu;null!==r;){var o=r.next,a=Mu(r,t);0===a?(r.next=null,null===n?gu=o:n.next=o,null===o&&(bu=n)):(n=r,(0!==e||3&a)&&(vu=!0)),r=o}Cu(e,!1)}function Mu(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=-62914561&e.pendingLanes;0<a;){var s=31-fe(a),i=1<<s,c=o[s];-1===c?0!==(i&n)&&0===(i&r)||(o[s]=ke(i,t)):c<=t&&(e.expiredLanes|=i),a&=~i}if(n=al,n=ve(e,e===(t=rl)?n:0,null!==e.cancelPendingCommit||-1!==e.timeoutHandle),r=e.callbackNode,0===n||e===t&&(2===sl||9===sl)||null!==e.cancelPendingCommit)return null!==r&&null!==r&&X(r),e.callbackNode=null,e.callbackPriority=0;if(!(3&n)||_e(e,n)){if((t=n&-n)===e.callbackPriority)return t;switch(null!==r&&X(r),Ae(n)){case 2:case 8:n=oe;break;case 32:default:n=ae;break;case 268435456:n=ie}return r=Eu.bind(null,e),n=Z(n,r),e.callbackPriority=t,e.callbackNode=n,t}return null!==r&&null!==r&&X(r),e.callbackPriority=2,e.callbackNode=null,2}function Eu(e,t){if(0!==Sl&&5!==Sl)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(iu()&&e.callbackNode!==n)return null;var r=al;return 0===(r=ve(e,e===rl?r:0,null!==e.cancelPendingCommit||-1!==e.timeoutHandle))?null:(Rl(e,r,t),Mu(e,te()),null!=e.callbackNode&&e.callbackNode===n?Eu.bind(null,e):null)}function Ou(e,t){if(iu())return null;Rl(e,t,!0)}function Au(){return 0===ku&&(ku=we()),ku}function ju(e){return null==e||"symbol"==typeof e||"boolean"==typeof e?null:"function"==typeof e?e:At(""+e)}function Du(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}for(var Pu=0;Pu<kr.length;Pu++){var Tu=kr[Pu];wr(Tu.toLowerCase(),"on"+(Tu[0].toUpperCase()+Tu.slice(1)))}wr(fr,"onAnimationEnd"),wr(hr,"onAnimationIteration"),wr(mr,"onAnimationStart"),wr("dblclick","onDoubleClick"),wr("focusin","onFocus"),wr("focusout","onBlur"),wr(gr,"onTransitionRun"),wr(br,"onTransitionStart"),wr(yr,"onTransitionCancel"),wr(vr,"onTransitionEnd"),Qe("onMouseEnter",["mouseout","mouseover"]),Qe("onMouseLeave",["mouseout","mouseover"]),Qe("onPointerEnter",["pointerout","pointerover"]),Qe("onPointerLeave",["pointerout","pointerover"]),Ke("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Ke("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Ke("onBeforeInput",["compositionend","keypress","textInput","paste"]),Ke("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Ke("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Ke("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Iu="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Nu=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Iu));function Lu(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var s=r.length-1;0<=s;s--){var i=r[s],c=i.instance,l=i.currentTarget;if(i=i.listener,c!==a&&o.isPropagationStopped())break e;a=i,o.currentTarget=l;try{a(o)}catch(u){bi(u)}o.currentTarget=null,a=c}else for(s=0;s<r.length;s++){if(c=(i=r[s]).instance,l=i.currentTarget,i=i.listener,c!==a&&o.isPropagationStopped())break e;a=i,o.currentTarget=l;try{a(o)}catch(u){bi(u)}o.currentTarget=null,a=c}}}}function Ru(e,t){var n=t[Ne];void 0===n&&(n=t[Ne]=new Set);var r=e+"__bubble";n.has(r)||($u(t,e,2,!1),n.add(r))}function Fu(e,t,n){var r=0;t&&(r|=4),$u(n,e,r,t)}var zu="_reactListening"+Math.random().toString(36).slice(2);function Bu(e){if(!e[zu]){e[zu]=!0,We.forEach(function(t){"selectionchange"!==t&&(Nu.has(t)||Fu(t,!1,e),Fu(t,!0,e))});var t=9===e.nodeType?e:e.ownerDocument;null===t||t[zu]||(t[zu]=!0,Fu("selectionchange",!1,t))}}function $u(e,t,n,r){switch(lp(t)){case 2:var o=rp;break;case 8:o=op;break;default:o=ap}n=o.bind(null,t,n,e),o=void 0,!zt||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Uu(e,t,n,r,o){var a=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var s=r.tag;if(3===s||4===s){var i=r.stateNode.containerInfo;if(i===o)break;if(4===s)for(s=r.return;null!==s;){var l=s.tag;if((3===l||4===l)&&s.stateNode.containerInfo===o)return;s=s.return}for(;null!==i;){if(null===(s=$e(i)))return;if(5===(l=s.tag)||6===l||26===l||27===l){r=a=s;continue e}i=i.parentNode}}r=r.return}Lt(function(){var r=a,o=Dt(n),s=[];e:{var i=_r.get(e);if(void 0!==i){var l=Jt,u=e;switch(e){case"keypress":if(0===Vt(n))break e;case"keydown":case"keyup":l=mn;break;case"focusin":u="focus",l=an;break;case"focusout":u="blur",l=an;break;case"beforeblur":case"afterblur":l=an;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":l=rn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=on;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=bn;break;case fr:case hr:case mr:l=sn;break;case vr:l=yn;break;case"scroll":case"scrollend":l=tn;break;case"wheel":l=vn;break;case"copy":case"cut":case"paste":l=cn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=gn;break;case"toggle":case"beforetoggle":l=_n}var d=!!(4&t),p=!d&&("scroll"===e||"scrollend"===e),f=d?null!==i?i+"Capture":null:i;d=[];for(var h,m=r;null!==m;){var g=m;if(h=g.stateNode,5!==(g=g.tag)&&26!==g&&27!==g||null===h||null===f||null!=(g=Rt(m,f))&&d.push(qu(m,g,h)),p)break;m=m.return}0<d.length&&(i=new l(i,u,null,n,o),s.push({event:i,listeners:d}))}}if(!(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(i="mouseover"===e||"pointerover"===e)||n===jt||!(u=n.relatedTarget||n.fromElement)||!$e(u)&&!u[Ie])&&(l||i)&&(i=o.window===o?o:(i=o.ownerDocument)?i.defaultView||i.parentWindow:window,l?(l=r,null!==(u=(u=n.relatedTarget||n.toElement)?$e(u):null)&&(p=c(u),d=u.tag,u!==p||5!==d&&27!==d&&6!==d)&&(u=null)):(l=null,u=r),l!==u)){if(d=rn,g="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(d=gn,g="onPointerLeave",f="onPointerEnter",m="pointer"),p=null==l?i:qe(l),h=null==u?i:qe(u),(i=new d(g,m+"leave",l,n,o)).target=p,i.relatedTarget=h,g=null,$e(o)===r&&((d=new d(f,m+"enter",u,n,o)).target=h,d.relatedTarget=p,g=d),p=g,l&&u)e:{for(f=u,m=0,h=d=l;h;h=Vu(h))m++;for(h=0,g=f;g;g=Vu(g))h++;for(;0<m-h;)d=Vu(d),m--;for(;0<h-m;)f=Vu(f),h--;for(;m--;){if(d===f||null!==f&&d===f.alternate)break e;d=Vu(d),f=Vu(f)}d=null}else d=null;null!==l&&Wu(s,i,l,d,!1),null!==u&&null!==p&&Wu(s,p,u,d,!0)}if("select"===(l=(i=r?qe(r):window).nodeName&&i.nodeName.toLowerCase())||"input"===l&&"file"===i.type)var b=Fn;else if(Pn(i))if(zn)b=Kn;else{b=Wn;var y=Vn}else!(l=i.nodeName)||"input"!==l.toLowerCase()||"checkbox"!==i.type&&"radio"!==i.type?r&&Mt(r.elementType)&&(b=Fn):b=Gn;switch(b&&(b=b(e,r))?Tn(s,b,n,o):(y&&y(e,i,r),"focusout"===e&&r&&"number"===i.type&&null!=r.memoizedProps.value&&yt(i,"number",i.value)),y=r?qe(r):window,e){case"focusin":(Pn(y)||"true"===y.contentEditable)&&(rr=y,or=r,ar=null);break;case"focusout":ar=or=rr=null;break;case"mousedown":sr=!0;break;case"contextmenu":case"mouseup":case"dragend":sr=!1,ir(s,n,o);break;case"selectionchange":if(nr)break;case"keydown":case"keyup":ir(s,n,o)}var v;if(wn)e:{switch(e){case"compositionstart":var _="onCompositionStart";break e;case"compositionend":_="onCompositionEnd";break e;case"compositionupdate":_="onCompositionUpdate";break e}_=void 0}else jn?On(e,n)&&(_="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(_="onCompositionStart");_&&(Sn&&"ko"!==n.locale&&(jn||"onCompositionStart"!==_?"onCompositionEnd"===_&&jn&&(v=Ht()):(Ut="value"in($t=o)?$t.value:$t.textContent,jn=!0)),0<(y=Hu(r,_)).length&&(_=new ln(_,e,null,n,o),s.push({event:_,listeners:y}),v?_.data=v:null!==(v=An(n))&&(_.data=v))),(v=xn?function(e,t){switch(e){case"compositionend":return An(t);case"keypress":return 32!==t.which?null:(En=!0,Mn);case"textInput":return(e=t.data)===Mn&&En?null:e;default:return null}}(e,n):function(e,t){if(jn)return"compositionend"===e||!wn&&On(e,t)?(e=Ht(),qt=Ut=$t=null,jn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Sn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(_=Hu(r,"onBeforeInput")).length&&(y=new ln("onBeforeInput","beforeinput",null,n,o),s.push({event:y,listeners:_}),y.data=v)),function(e,t,n,r,o){if("submit"===t&&n&&n.stateNode===o){var a=ju((o[Te]||null).action),s=r.submitter;s&&null!==(t=(t=s[Te]||null)?ju(t.formAction):s.getAttribute("formAction"))&&(a=t,s=null);var i=new Jt("action","action",null,r,o);e.push({event:i,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(0!==ku){var e=s?Du(o,s):new FormData(o);Ds(n,{pending:!0,data:e,method:o.method,action:a},null,e)}}else"function"==typeof a&&(i.preventDefault(),e=s?Du(o,s):new FormData(o),Ds(n,{pending:!0,data:e,method:o.method,action:a},a,e))},currentTarget:o}]})}}(s,e,r,n,o)}Lu(s,t)})}function qu(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Hu(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;if(5!==(o=o.tag)&&26!==o&&27!==o||null===a||(null!=(o=Rt(e,n))&&r.unshift(qu(e,o,a)),null!=(o=Rt(e,t))&&r.push(qu(e,o,a))),3===e.tag)return r;e=e.return}return[]}function Vu(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag&&27!==e.tag);return e||null}function Wu(e,t,n,r,o){for(var a=t._reactName,s=[];null!==n&&n!==r;){var i=n,c=i.alternate,l=i.stateNode;if(i=i.tag,null!==c&&c===r)break;5!==i&&26!==i&&27!==i||null===l||(c=l,o?null!=(l=Rt(n,a))&&s.unshift(qu(n,l,c)):o||null!=(l=Rt(n,a))&&s.push(qu(n,l,c))),n=n.return}0!==s.length&&e.push({event:t,listeners:s})}var Gu=/\r\n?/g,Ku=/\u0000|\uFFFD/g;function Qu(e){return("string"==typeof e?e:""+e).replace(Gu,"\n").replace(Ku,"")}function Yu(e,t){return t=Qu(t),Qu(e)===t}function Zu(){}function Xu(e,t,n,r,o,a){switch(n){case"children":"string"==typeof r?"body"===t||"textarea"===t&&""===r||wt(e,r):("number"==typeof r||"bigint"==typeof r)&&"body"!==t&&wt(e,""+r);break;case"className":nt(e,"class",r);break;case"tabIndex":nt(e,"tabindex",r);break;case"dir":case"role":case"viewBox":case"width":case"height":nt(e,n,r);break;case"style":St(e,r,a);break;case"data":if("object"!==t){nt(e,"data",r);break}case"src":case"href":if(""===r&&("a"!==t||"href"!==n)){e.removeAttribute(n);break}if(null==r||"function"==typeof r||"symbol"==typeof r||"boolean"==typeof r){e.removeAttribute(n);break}r=At(""+r),e.setAttribute(n,r);break;case"action":case"formAction":if("function"==typeof r){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}if("function"==typeof a&&("formAction"===n?("input"!==t&&Xu(e,t,"name",o.name,o,null),Xu(e,t,"formEncType",o.formEncType,o,null),Xu(e,t,"formMethod",o.formMethod,o,null),Xu(e,t,"formTarget",o.formTarget,o,null)):(Xu(e,t,"encType",o.encType,o,null),Xu(e,t,"method",o.method,o,null),Xu(e,t,"target",o.target,o,null))),null==r||"symbol"==typeof r||"boolean"==typeof r){e.removeAttribute(n);break}r=At(""+r),e.setAttribute(n,r);break;case"onClick":null!=r&&(e.onclick=Zu);break;case"onScroll":null!=r&&Ru("scroll",e);break;case"onScrollEnd":null!=r&&Ru("scrollend",e);break;case"dangerouslySetInnerHTML":if(null!=r){if("object"!=typeof r||!("__html"in r))throw Error(s(61));if(null!=(n=r.__html)){if(null!=o.children)throw Error(s(60));e.innerHTML=n}}break;case"multiple":e.multiple=r&&"function"!=typeof r&&"symbol"!=typeof r;break;case"muted":e.muted=r&&"function"!=typeof r&&"symbol"!=typeof r;break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":case"autoFocus":break;case"xlinkHref":if(null==r||"function"==typeof r||"boolean"==typeof r||"symbol"==typeof r){e.removeAttribute("xlink:href");break}n=At(""+r),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":null!=r&&"function"!=typeof r&&"symbol"!=typeof r?e.setAttribute(n,""+r):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":r&&"function"!=typeof r&&"symbol"!=typeof r?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":!0===r?e.setAttribute(n,""):!1!==r&&null!=r&&"function"!=typeof r&&"symbol"!=typeof r?e.setAttribute(n,r):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":null!=r&&"function"!=typeof r&&"symbol"!=typeof r&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case"rowSpan":case"start":null==r||"function"==typeof r||"symbol"==typeof r||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case"popover":Ru("beforetoggle",e),Ru("toggle",e),tt(e,"popover",r);break;case"xlinkActuate":rt(e,"http://www.w3.org/1999/xlink","xlink:actuate",r);break;case"xlinkArcrole":rt(e,"http://www.w3.org/1999/xlink","xlink:arcrole",r);break;case"xlinkRole":rt(e,"http://www.w3.org/1999/xlink","xlink:role",r);break;case"xlinkShow":rt(e,"http://www.w3.org/1999/xlink","xlink:show",r);break;case"xlinkTitle":rt(e,"http://www.w3.org/1999/xlink","xlink:title",r);break;case"xlinkType":rt(e,"http://www.w3.org/1999/xlink","xlink:type",r);break;case"xmlBase":rt(e,"http://www.w3.org/XML/1998/namespace","xml:base",r);break;case"xmlLang":rt(e,"http://www.w3.org/XML/1998/namespace","xml:lang",r);break;case"xmlSpace":rt(e,"http://www.w3.org/XML/1998/namespace","xml:space",r);break;case"is":tt(e,"is",r);break;case"innerText":case"textContent":break;default:(!(2<n.length)||"o"!==n[0]&&"O"!==n[0]||"n"!==n[1]&&"N"!==n[1])&&tt(e,n=Et.get(n)||n,r)}}function Ju(e,t,n,r,o,a){switch(n){case"style":St(e,r,a);break;case"dangerouslySetInnerHTML":if(null!=r){if("object"!=typeof r||!("__html"in r))throw Error(s(61));if(null!=(n=r.__html)){if(null!=o.children)throw Error(s(60));e.innerHTML=n}}break;case"children":"string"==typeof r?wt(e,r):("number"==typeof r||"bigint"==typeof r)&&wt(e,""+r);break;case"onScroll":null!=r&&Ru("scroll",e);break;case"onScrollEnd":null!=r&&Ru("scrollend",e);break;case"onClick":null!=r&&(e.onclick=Zu);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":case"innerText":case"textContent":break;default:Ge.hasOwnProperty(n)||("o"!==n[0]||"n"!==n[1]||(o=n.endsWith("Capture"),t=n.slice(2,o?n.length-7:void 0),"function"==typeof(a=null!=(a=e[Te]||null)?a[n]:null)&&e.removeEventListener(t,a,o),"function"!=typeof r)?n in e?e[n]=r:!0===r?e.setAttribute(n,""):tt(e,n,r):("function"!=typeof a&&null!==a&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,o)))}}function ed(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Ru("error",e),Ru("load",e);var r,o=!1,a=!1;for(r in n)if(n.hasOwnProperty(r)){var i=n[r];if(null!=i)switch(r){case"src":o=!0;break;case"srcSet":a=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(s(137,t));default:Xu(e,t,r,i,n,null)}}return a&&Xu(e,t,"srcSet",n.srcSet,n,null),void(o&&Xu(e,t,"src",n.src,n,null));case"input":Ru("invalid",e);var c=r=i=a=null,l=null,u=null;for(o in n)if(n.hasOwnProperty(o)){var d=n[o];if(null!=d)switch(o){case"name":a=d;break;case"type":i=d;break;case"checked":l=d;break;case"defaultChecked":u=d;break;case"value":r=d;break;case"defaultValue":c=d;break;case"children":case"dangerouslySetInnerHTML":if(null!=d)throw Error(s(137,t));break;default:Xu(e,t,o,d,n,null)}}return bt(e,r,c,l,u,i,a,!1),void dt(e);case"select":for(a in Ru("invalid",e),o=i=r=null,n)if(n.hasOwnProperty(a)&&null!=(c=n[a]))switch(a){case"value":r=c;break;case"defaultValue":i=c;break;case"multiple":o=c;default:Xu(e,t,a,c,n,null)}return t=r,n=i,e.multiple=!!o,void(null!=t?vt(e,!!o,t,!1):null!=n&&vt(e,!!o,n,!0));case"textarea":for(i in Ru("invalid",e),r=a=o=null,n)if(n.hasOwnProperty(i)&&null!=(c=n[i]))switch(i){case"value":o=c;break;case"defaultValue":a=c;break;case"children":r=c;break;case"dangerouslySetInnerHTML":if(null!=c)throw Error(s(91));break;default:Xu(e,t,i,c,n,null)}return kt(e,o,a,r),void dt(e);case"option":for(l in n)if(n.hasOwnProperty(l)&&null!=(o=n[l]))if("selected"===l)e.selected=o&&"function"!=typeof o&&"symbol"!=typeof o;else Xu(e,t,l,o,n,null);return;case"dialog":Ru("beforetoggle",e),Ru("toggle",e),Ru("cancel",e),Ru("close",e);break;case"iframe":case"object":Ru("load",e);break;case"video":case"audio":for(o=0;o<Iu.length;o++)Ru(Iu[o],e);break;case"image":Ru("error",e),Ru("load",e);break;case"details":Ru("toggle",e);break;case"embed":case"source":case"link":Ru("error",e),Ru("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(u in n)if(n.hasOwnProperty(u)&&null!=(o=n[u]))switch(u){case"children":case"dangerouslySetInnerHTML":throw Error(s(137,t));default:Xu(e,t,u,o,n,null)}return;default:if(Mt(t)){for(d in n)n.hasOwnProperty(d)&&(void 0!==(o=n[d])&&Ju(e,t,d,o,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(null!=(o=n[c])&&Xu(e,t,c,o,n,null))}var td=null,nd=null;function rd(e){return 9===e.nodeType?e:e.ownerDocument}function od(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function ad(e,t){if(0===e)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return 1===e&&"foreignObject"===t?0:e}function sd(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"bigint"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var id=null;var cd="function"==typeof setTimeout?setTimeout:void 0,ld="function"==typeof clearTimeout?clearTimeout:void 0,ud="function"==typeof Promise?Promise:void 0,dd="function"==typeof queueMicrotask?queueMicrotask:void 0!==ud?function(e){return ud.resolve(null).then(e).catch(pd)}:cd;function pd(e){setTimeout(function(){throw e})}function fd(e){return"head"===e}function hd(e,t){var n=t,r=0,o=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)){if(0<r&&8>r){n=r;var s=e.ownerDocument;if(1&n&&kd(s.documentElement),2&n&&kd(s.body),4&n)for(kd(n=s.head),s=n.firstChild;s;){var i=s.nextSibling,c=s.nodeName;s[ze]||"SCRIPT"===c||"STYLE"===c||"LINK"===c&&"stylesheet"===s.rel.toLowerCase()||n.removeChild(s),s=i}}if(0===o)return e.removeChild(a),void Ep(t);o--}else"$"===n||"$?"===n||"$!"===n?o++:r=n.charCodeAt(0)-48;else r=0;n=a}while(n);Ep(t)}function md(e){var t=e.firstChild;for(t&&10===t.nodeType&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":md(n),Be(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if("stylesheet"===n.rel.toLowerCase())continue}e.removeChild(n)}}function gd(e){return"$!"===e.data||"$?"===e.data&&"complete"===e.ownerDocument.readyState}function bd(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t||"F!"===t||"F"===t)break;if("/$"===t)return null}}return e}var yd=null;function vd(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}function _d(e,t,n){switch(t=rd(n),e){case"html":if(!(e=t.documentElement))throw Error(s(452));return e;case"head":if(!(e=t.head))throw Error(s(453));return e;case"body":if(!(e=t.body))throw Error(s(454));return e;default:throw Error(s(451))}}function kd(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);Be(e)}var wd=new Map,Cd=new Set;function xd(e){return"function"==typeof e.getRootNode?e.getRootNode():9===e.nodeType?e:e.ownerDocument}var Sd=N.d;N.d={f:function(){var e=Sd.f(),t=$l();return e||t},r:function(e){var t=Ue(e);null!==t&&5===t.tag&&"form"===t.type?Ts(t):Sd.r(e)},D:function(e){Sd.D(e),Ed("dns-prefetch",e,null)},C:function(e,t){Sd.C(e,t),Ed("preconnect",e,t)},L:function(e,t,n){Sd.L(e,t,n);var r=Md;if(r&&e&&t){var o='link[rel="preload"][as="'+mt(t)+'"]';"image"===t&&n&&n.imageSrcSet?(o+='[imagesrcset="'+mt(n.imageSrcSet)+'"]',"string"==typeof n.imageSizes&&(o+='[imagesizes="'+mt(n.imageSizes)+'"]')):o+='[href="'+mt(e)+'"]';var a=o;switch(t){case"style":a=Ad(e);break;case"script":a=Pd(e)}wd.has(a)||(e=p({rel:"preload",href:"image"===t&&n&&n.imageSrcSet?void 0:e,as:t},n),wd.set(a,e),null!==r.querySelector(o)||"style"===t&&r.querySelector(jd(a))||"script"===t&&r.querySelector(Td(a))||(ed(t=r.createElement("link"),"link",e),Ve(t),r.head.appendChild(t)))}},m:function(e,t){Sd.m(e,t);var n=Md;if(n&&e){var r=t&&"string"==typeof t.as?t.as:"script",o='link[rel="modulepreload"][as="'+mt(r)+'"][href="'+mt(e)+'"]',a=o;switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=Pd(e)}if(!wd.has(a)&&(e=p({rel:"modulepreload",href:e},t),wd.set(a,e),null===n.querySelector(o))){switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(Td(a)))return}ed(r=n.createElement("link"),"link",e),Ve(r),n.head.appendChild(r)}}},X:function(e,t){Sd.X(e,t);var n=Md;if(n&&e){var r=He(n).hoistableScripts,o=Pd(e),a=r.get(o);a||((a=n.querySelector(Td(o)))||(e=p({src:e,async:!0},t),(t=wd.get(o))&&Rd(e,t),Ve(a=n.createElement("script")),ed(a,"link",e),n.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},r.set(o,a))}},S:function(e,t,n){Sd.S(e,t,n);var r=Md;if(r&&e){var o=He(r).hoistableStyles,a=Ad(e);t=t||"default";var s=o.get(a);if(!s){var i={loading:0,preload:null};if(s=r.querySelector(jd(a)))i.loading=5;else{e=p({rel:"stylesheet",href:e,"data-precedence":t},n),(n=wd.get(a))&&Ld(e,n);var c=s=r.createElement("link");Ve(c),ed(c,"link",e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener("load",function(){i.loading|=1}),c.addEventListener("error",function(){i.loading|=2}),i.loading|=4,Nd(s,t,r)}s={type:"stylesheet",instance:s,count:1,state:i},o.set(a,s)}}},M:function(e,t){Sd.M(e,t);var n=Md;if(n&&e){var r=He(n).hoistableScripts,o=Pd(e),a=r.get(o);a||((a=n.querySelector(Td(o)))||(e=p({src:e,async:!0,type:"module"},t),(t=wd.get(o))&&Rd(e,t),Ve(a=n.createElement("script")),ed(a,"link",e),n.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},r.set(o,a))}}};var Md="undefined"==typeof document?null:document;function Ed(e,t,n){var r=Md;if(r&&"string"==typeof t&&t){var o=mt(t);o='link[rel="'+e+'"][href="'+o+'"]',"string"==typeof n&&(o+='[crossorigin="'+n+'"]'),Cd.has(o)||(Cd.add(o),e={rel:e,crossOrigin:n,href:t},null===r.querySelector(o)&&(ed(t=r.createElement("link"),"link",e),Ve(t),r.head.appendChild(t)))}}function Od(e,t,n,r){var o,a,i,c,l=(l=H.current)?xd(l):null;if(!l)throw Error(s(446));switch(e){case"meta":case"title":return null;case"style":return"string"==typeof n.precedence&&"string"==typeof n.href?(t=Ad(n.href),(r=(n=He(l).hoistableStyles).get(t))||(r={type:"style",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if("stylesheet"===n.rel&&"string"==typeof n.href&&"string"==typeof n.precedence){e=Ad(n.href);var u=He(l).hoistableStyles,d=u.get(e);if(d||(l=l.ownerDocument||l,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,d),(u=l.querySelector(jd(e)))&&!u._p&&(d.instance=u,d.state.loading=5),wd.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},wd.set(e,n),u||(o=l,a=e,i=n,c=d.state,o.querySelector('link[rel="preload"][as="style"]['+a+"]")?c.loading=1:(a=o.createElement("link"),c.preload=a,a.addEventListener("load",function(){return c.loading|=1}),a.addEventListener("error",function(){return c.loading|=2}),ed(a,"link",i),Ve(a),o.head.appendChild(a))))),t&&null===r)throw Error(s(528,""));return d}if(t&&null!==r)throw Error(s(529,""));return null;case"script":return t=n.async,"string"==typeof(n=n.src)&&t&&"function"!=typeof t&&"symbol"!=typeof t?(t=Pd(n),(r=(n=He(l).hoistableScripts).get(t))||(r={type:"script",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(s(444,e))}}function Ad(e){return'href="'+mt(e)+'"'}function jd(e){return'link[rel="stylesheet"]['+e+"]"}function Dd(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function Pd(e){return'[src="'+mt(e)+'"]'}function Td(e){return"script[async]"+e}function Id(e,t,n){if(t.count++,null===t.instance)switch(t.type){case"style":var r=e.querySelector('style[data-href~="'+mt(n.href)+'"]');if(r)return t.instance=r,Ve(r),r;var o=p({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return Ve(r=(e.ownerDocument||e).createElement("style")),ed(r,"style",o),Nd(r,n.precedence,e),t.instance=r;case"stylesheet":o=Ad(n.href);var a=e.querySelector(jd(o));if(a)return t.state.loading|=4,t.instance=a,Ve(a),a;r=Dd(n),(o=wd.get(o))&&Ld(r,o),Ve(a=(e.ownerDocument||e).createElement("link"));var i=a;return i._p=new Promise(function(e,t){i.onload=e,i.onerror=t}),ed(a,"link",r),t.state.loading|=4,Nd(a,n.precedence,e),t.instance=a;case"script":return a=Pd(n.src),(o=e.querySelector(Td(a)))?(t.instance=o,Ve(o),o):(r=n,(o=wd.get(a))&&Rd(r=p({},n),o),Ve(o=(e=e.ownerDocument||e).createElement("script")),ed(o,"link",r),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error(s(443,t.type))}else"stylesheet"===t.type&&!(4&t.state.loading)&&(r=t.instance,t.state.loading|=4,Nd(r,n.precedence,e));return t.instance}function Nd(e,t,n){for(var r=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),o=r.length?r[r.length-1]:null,a=o,s=0;s<r.length;s++){var i=r[s];if(i.dataset.precedence===t)a=i;else if(a!==o)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=9===n.nodeType?n.head:n).insertBefore(e,t.firstChild)}function Ld(e,t){null==e.crossOrigin&&(e.crossOrigin=t.crossOrigin),null==e.referrerPolicy&&(e.referrerPolicy=t.referrerPolicy),null==e.title&&(e.title=t.title)}function Rd(e,t){null==e.crossOrigin&&(e.crossOrigin=t.crossOrigin),null==e.referrerPolicy&&(e.referrerPolicy=t.referrerPolicy),null==e.integrity&&(e.integrity=t.integrity)}var Fd=null;function zd(e,t,n){if(null===Fd){var r=new Map,o=Fd=new Map;o.set(n,r)}else(r=(o=Fd).get(n))||(r=new Map,o.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),o=0;o<n.length;o++){var a=n[o];if(!(a[ze]||a[Pe]||"link"===e&&"stylesheet"===a.getAttribute("rel"))&&"http://www.w3.org/2000/svg"!==a.namespaceURI){var s=a.getAttribute(t)||"";s=e+s;var i=r.get(s);i?i.push(a):r.set(s,[a])}}return r}function Bd(e,t,n){(e=e.ownerDocument||e).head.insertBefore(n,"title"===t?e.querySelector("head > title"):null)}function $d(e){return!!("stylesheet"!==e.type||3&e.state.loading)}var Ud=null;function qd(){}function Hd(){if(this.count--,0===this.count)if(this.stylesheets)Wd(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}var Vd=null;function Wd(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,Vd=new Map,t.forEach(Gd,e),Vd=null,Hd.call(e))}function Gd(e,t){if(!(4&t.state.loading)){var n=Vd.get(e);if(n)var r=n.get(null);else{n=new Map,Vd.set(e,n);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a<o.length;a++){var s=o[a];"LINK"!==s.nodeName&&"not all"===s.getAttribute("media")||(n.set(s.dataset.precedence,s),r=s)}r&&n.set(null,r)}s=(o=t.instance).getAttribute("data-precedence"),(a=n.get(s)||r)===r&&n.set(null,o),n.set(s,o),this.count++,r=Hd.bind(this),o.addEventListener("load",r),o.addEventListener("error",r),a?a.parentNode.insertBefore(o,a.nextSibling):(e=9===e.nodeType?e.head:e).insertBefore(o,e.firstChild),t.state.loading|=4}}var Kd={$$typeof:k,Provider:null,Consumer:null,_currentValue:L,_currentValue2:L,_threadCount:0};function Qd(e,t,n,r,o,a,s,i){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=xe(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=xe(0),this.hiddenUpdates=xe(null),this.identifierPrefix=r,this.onUncaughtError=o,this.onCaughtError=a,this.onRecoverableError=s,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=i,this.incompleteTransitions=new Map}function Yd(e,t,n,r,o,a,s,i,c,l,u,d){return e=new Qd(e,t,n,s,i,c,l,d),t=1,!0===a&&(t|=24),a=Lr(3,null,null,t),e.current=a,a.stateNode=e,(t=Io()).refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},ra(a),e}function Zd(e){return e?e=Ir:Ir}function Xd(e,t,n,r,o,a){o=Zd(o),null===r.context?r.context=o:r.pendingContext=o,(r=aa(t)).payload={element:n},null!==(a=void 0===a?null:a)&&(r.callback=a),null!==(n=sa(e,r,t))&&(Ll(n,0,t),ia(n,e,t))}function Jd(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function ep(e,t){Jd(e,t),(e=e.alternate)&&Jd(e,t)}function tp(e){if(13===e.tag){var t=Dr(e,67108864);null!==t&&Ll(t,0,67108864),ep(e,67108864)}}var np=!0;function rp(e,t,n,r){var o=I.T;I.T=null;var a=N.p;try{N.p=2,ap(e,t,n,r)}finally{N.p=a,I.T=o}}function op(e,t,n,r){var o=I.T;I.T=null;var a=N.p;try{N.p=8,ap(e,t,n,r)}finally{N.p=a,I.T=o}}function ap(e,t,n,r){if(np){var o=sp(r);if(null===o)Uu(e,t,r,ip,n),yp(e,r);else if(function(e,t,n,r,o){switch(t){case"focusin":return dp=vp(dp,e,t,n,r,o),!0;case"dragenter":return pp=vp(pp,e,t,n,r,o),!0;case"mouseover":return fp=vp(fp,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return hp.set(a,vp(hp.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,mp.set(a,vp(mp.get(a)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r))r.stopPropagation();else if(yp(e,r),4&t&&-1<bp.indexOf(e)){for(;null!==o;){var a=Ue(o);if(null!==a)switch(a.tag){case 3:if((a=a.stateNode).current.memoizedState.isDehydrated){var s=ye(a.pendingLanes);if(0!==s){var i=a;for(i.pendingLanes|=2,i.entangledLanes|=2;s;){var c=1<<31-fe(s);i.entanglements[1]|=c,s&=~c}wu(a),!(6&nl)&&(wl=te()+500,Cu(0,!1))}}break;case 13:null!==(i=Dr(a,2))&&Ll(i,0,2),$l(),ep(a,2)}if(null===(a=sp(r))&&Uu(e,t,r,ip,n),a===o)break;o=a}null!==o&&r.stopPropagation()}else Uu(e,t,r,null,n)}}function sp(e){return cp(e=Dt(e))}var ip=null;function cp(e){if(ip=null,null!==(e=$e(e))){var t=c(e);if(null===t)e=null;else{var n=t.tag;if(13===n){if(null!==(e=l(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return ip=e,null}function lp(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(ne()){case re:return 2;case oe:return 8;case ae:case se:return 32;case ie:return 268435456;default:return 32}default:return 32}}var up=!1,dp=null,pp=null,fp=null,hp=new Map,mp=new Map,gp=[],bp="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function yp(e,t){switch(e){case"focusin":case"focusout":dp=null;break;case"dragenter":case"dragleave":pp=null;break;case"mouseover":case"mouseout":fp=null;break;case"pointerover":case"pointerout":hp.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":mp.delete(t.pointerId)}}function vp(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[o]},null!==t&&(null!==(t=Ue(t))&&tp(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function _p(e){var t=$e(e.target);if(null!==t){var n=c(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=l(n)))return e.blockedOn=t,void function(e,t){var n=N.p;try{return N.p=e,t()}finally{N.p=n}}(e.priority,function(){if(13===n.tag){var e=Il();e=Oe(e);var t=Dr(n,e);null!==t&&Ll(t,0,e),ep(n,e)}})}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function kp(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=sp(e.nativeEvent);if(null!==n)return null!==(t=Ue(n))&&tp(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);jt=r,n.target.dispatchEvent(r),jt=null,t.shift()}return!0}function wp(e,t,n){kp(e)&&n.delete(t)}function Cp(){up=!1,null!==dp&&kp(dp)&&(dp=null),null!==pp&&kp(pp)&&(pp=null),null!==fp&&kp(fp)&&(fp=null),hp.forEach(wp),mp.forEach(wp)}function xp(e,t){e.blockedOn===t&&(e.blockedOn=null,up||(up=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Cp)))}var Sp=null;function Mp(e){Sp!==e&&(Sp=e,r.unstable_scheduleCallback(r.unstable_NormalPriority,function(){Sp===e&&(Sp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],o=e[t+2];if("function"!=typeof r){if(null===cp(r||n))continue;break}var a=Ue(n);null!==a&&(e.splice(t,3),t-=3,Ds(a,{pending:!0,data:o,method:n.method,action:r},r,o))}}))}function Ep(e){function t(t){return xp(t,e)}null!==dp&&xp(dp,e),null!==pp&&xp(pp,e),null!==fp&&xp(fp,e),hp.forEach(t),mp.forEach(t);for(var n=0;n<gp.length;n++){var r=gp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<gp.length&&null===(n=gp[0]).blockedOn;)_p(n),null===n.blockedOn&&gp.shift();if(null!=(n=(e.ownerDocument||e).$$reactFormReplay))for(r=0;r<n.length;r+=3){var o=n[r],a=n[r+1],s=o[Te]||null;if("function"==typeof a)s||Mp(n);else if(s){var i=null;if(a&&a.hasAttribute("formAction")){if(o=a,s=a[Te]||null)i=s.formAction;else if(null!==cp(o))continue}else i=s.action;"function"==typeof i?n[r+1]=i:(n.splice(r,3),r-=3),Mp(n)}}}function Op(e){this._internalRoot=e}function Ap(e){this._internalRoot=e}Ap.prototype.render=Op.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(s(409));Xd(t.current,Il(),e,t,null,null)},Ap.prototype.unmount=Op.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;Xd(e.current,2,null,e,null,null),$l(),t[Ie]=null}},Ap.prototype.unstable_scheduleHydration=function(e){if(e){var t=je();e={blockedOn:null,target:e,priority:t};for(var n=0;n<gp.length&&0!==t&&t<gp[n].priority;n++);gp.splice(n,0,e),0===n&&_p(e)}};var jp=o.version;if("19.1.0"!==jp)throw Error(s(527,jp,"19.1.0"));N.findDOMNode=function(e){var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(s(188));throw e=Object.keys(e).join(","),Error(s(268,e))}return e=function(e){var t=e.alternate;if(!t){if(null===(t=c(e)))throw Error(s(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var a=o.alternate;if(null===a){if(null!==(r=o.return)){n=r;continue}break}if(o.child===a.child){for(a=o.child;a;){if(a===n)return u(o),e;if(a===r)return u(o),t;a=a.sibling}throw Error(s(188))}if(n.return!==r.return)n=o,r=a;else{for(var i=!1,l=o.child;l;){if(l===n){i=!0,n=o,r=a;break}if(l===r){i=!0,r=o,n=a;break}l=l.sibling}if(!i){for(l=a.child;l;){if(l===n){i=!0,n=a,r=o;break}if(l===r){i=!0,r=a,n=o;break}l=l.sibling}if(!i)throw Error(s(189))}}if(n.alternate!==r)throw Error(s(190))}if(3!==n.tag)throw Error(s(188));return n.stateNode.current===n?e:t}(t),e=null===(e=null!==e?d(e):null)?null:e.stateNode};var Dp={bundleType:0,version:"19.1.0",rendererPackageName:"react-dom",currentDispatcherRef:I,reconcilerVersion:"19.1.0"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var Pp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Pp.isDisabled&&Pp.supportsFiber)try{ue=Pp.inject(Dp),de=Pp}catch(Ip){}}t.createRoot=function(e,t){if(!i(e))throw Error(s(299));var n=!1,r="",o=yi,a=vi,c=_i;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onUncaughtError&&(o=t.onUncaughtError),void 0!==t.onCaughtError&&(a=t.onCaughtError),void 0!==t.onRecoverableError&&(c=t.onRecoverableError),void 0!==t.unstable_transitionCallbacks&&t.unstable_transitionCallbacks),t=Yd(e,1,!1,null,0,n,r,o,a,c,0,null),e[Ie]=t.current,Bu(e),new Op(t)},t.hydrateRoot=function(e,t,n){if(!i(e))throw Error(s(299));var r=!1,o="",a=yi,c=vi,l=_i,u=null;return null!=n&&(!0===n.unstable_strictMode&&(r=!0),void 0!==n.identifierPrefix&&(o=n.identifierPrefix),void 0!==n.onUncaughtError&&(a=n.onUncaughtError),void 0!==n.onCaughtError&&(c=n.onCaughtError),void 0!==n.onRecoverableError&&(l=n.onRecoverableError),void 0!==n.unstable_transitionCallbacks&&n.unstable_transitionCallbacks,void 0!==n.formState&&(u=n.formState)),(t=Yd(e,1,!0,t,0,r,o,a,c,l,0,u)).context=Zd(null),n=t.current,(o=aa(r=Oe(r=Il()))).callback=null,sa(n,o,r),n=r,t.current.lanes=n,Se(t,n),wu(t),e[Ie]=t.current,Bu(e),new Ap(t)},t.version="19.1.0"},39685:(e,t,n)=>{"use strict";n.d(t,{w:()=>o,J:()=>a});var r=n(36672);const o="navigation-with-keyboard";function a(){(0,r.useEffect)(()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}},[])}},40094:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=o,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[s]=e.split(/[#?]/),i="/"===s||s===r?s:(c=s,l=n,l?o(c):a(c));var c,l;return e.replace(s,i)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=a;const r=n(6769);function o(e){return e.endsWith("/")?e:`${e}/`}function a(e){return(0,r.removeSuffix)(e,"/")}},40187:(e,t,n)=>{"use strict";n.d(t,{C:()=>r});const r="default"},40378:(e,t,n)=>{"use strict";n.r(t)},40622:(e,t,n)=>{"use strict";function r(e,t=(e,t)=>e===t){return e.filter((n,r)=>e.findIndex(e=>t(e,n))!==r)}function o(e){return Array.from(new Set(e))}n.d(t,{XI:()=>r,sb:()=>o})},40932:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},40987:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:e=>`theme-admonition-${e}`},announcementBar:{container:"theme-announcement-bar"},layout:{navbar:{container:"theme-layout-navbar",containerLeft:"theme-layout-navbar-left",containerRight:"theme-layout-navbar-right",mobileSidebar:{container:"theme-layout-navbar-sidebar",panel:"theme-layout-navbar-sidebar-panel"}},main:{container:"theme-layout-main"},footer:{container:"theme-layout-footer",column:"theme-layout-footer-column"}},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},41201:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>s,aZ:()=>c,l:()=>l});var r=n(36672),o=n(85291),a=n(36496);function s(e){!function(e){const t=(0,o.W6)(),n=(0,a._q)(e);(0,r.useEffect)(()=>t.block((e,t)=>n(e,t)),[t,n])}((t,n)=>{if("POP"===n)return e(t,n)})}function i(e){const t=(0,o.W6)();return(0,r.useSyncExternalStore)(t.listen,()=>e(t),()=>e(t))}function c(e){return i(t=>null===e?null:new URLSearchParams(t.location.search).get(e))}function l(e){const t=c(e)??"",n=function(e){const t=(0,o.W6)();return(0,r.useCallback)((n,r)=>{const o=new URLSearchParams(t.location.search);n?o.set(e,n):o.delete(e),(r?.push?t.push:t.replace)({search:o.toString()})},[e,t])}(e);return[t,n]}},42018:(e,t,n)=>{"use strict";n.d(t,{N:()=>m,u:()=>c});var r=n(36672),o=n(10914),a=n(63345),s=n(23420);const i="ease-in-out";function c({initialState:e}){const[t,n]=(0,r.useState)(e??!1),o=(0,r.useCallback)(()=>{n(e=>!e)},[]);return{collapsed:t,setCollapsed:n,toggleCollapsed:o}}const l={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?l:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p({collapsibleRef:e,collapsed:t,animation:n}){const o=(0,r.useRef)(!1);(0,r.useEffect)(()=>{const r=e.current;function s(){const e=r.scrollHeight,t=n?.duration??function(e){if((0,a.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(e);return{transition:`height ${t}ms ${n?.easing??i}`,height:`${e}px`}}function c(){const e=s();r.style.transition=e.transition,r.style.height=e.height}if(!o.current)return d(r,t),void(o.current=!0);return r.style.willChange="height",function(){const e=requestAnimationFrame(()=>{t?(c(),requestAnimationFrame(()=>{r.style.height=l.height,r.style.overflow=l.overflow})):(r.style.display="block",requestAnimationFrame(()=>{c()}))});return()=>cancelAnimationFrame(e)}()},[e,t,n])}function f({as:e="div",collapsed:t,children:n,animation:o,onCollapseTransitionEnd:a,className:i}){const c=(0,r.useRef)(null);return p({collapsibleRef:c,collapsed:t,animation:o}),(0,s.jsx)(e,{ref:c,onTransitionEnd:e=>{"height"===e.propertyName&&(d(c.current,t),a?.(t))},className:i,children:n})}function h({collapsed:e,...t}){const[n,a]=(0,r.useState)(!e),[i,c]=(0,r.useState)(e);return(0,o.A)(()=>{e||a(!0)},[e]),(0,o.A)(()=>{n&&c(e)},[n,e]),n?(0,s.jsx)(f,{...t,collapsed:i}):null}function m({lazy:e,...t}){const n=e?h:f;return(0,s.jsx)(n,{...t})}},42396:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(39345)},42925:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u,Dv:()=>d});var r=n(36672);const o=JSON.parse('{"N":"localStorage","M":""}'),a=o.N;function s({key:e,oldValue:t,newValue:n,storage:r}){if(t===n)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,e,t,n,window.location.href,r),window.dispatchEvent(o)}function i(e=a){if("undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,c||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),c=!0),null}var t}let c=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){const n=`${e}${o.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const r=i(t?.persistence);return null===r?l:{get:()=>{try{return r.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=r.getItem(n);r.setItem(n,e),s({key:n,oldValue:t,newValue:e,storage:r})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=r.getItem(n);r.removeItem(n),s({key:n,oldValue:e,newValue:null,storage:r})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===r&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}function d(e,t){const[n]=(0,r.useState)(()=>null===e?l:u(e,t)),o=(0,r.useCallback)(e=>"undefined"==typeof window?()=>{}:n.listen(e),[n]);return[(0,r.useSyncExternalStore)(o,()=>n.get(),()=>null),n]}},44338:()=>{!function(e){var t={pattern:/((?:^|[^\\$])(?:\\{2})*)\$(?:\w+|\{[^{}]*\})/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:null}}};e.languages.groovy=e.languages.extend("clike",{string:{pattern:/'''(?:[^\\]|\\[\s\S])*?'''|'(?:\\.|[^\\'\r\n])*'/,greedy:!0},keyword:/\b(?:abstract|as|assert|boolean|break|byte|case|catch|char|class|const|continue|def|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|in|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\b/,number:/\b(?:0b[01_]+|0x[\da-f_]+(?:\.[\da-f_p\-]+)?|[\d_]+(?:\.[\d_]+)?(?:e[+-]?\d+)?)[glidf]?\b/i,operator:{pattern:/(^|[^.])(?:~|==?~?|\?[.:]?|\*(?:[.=]|\*=?)?|\.[@&]|\.\.<|\.\.(?!\.)|-[-=>]?|\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\|[|=]?|\/=?|\^=?|%=?)/,lookbehind:!0},punctuation:/\.+|[{}[\];(),:$]/}),e.languages.insertBefore("groovy","string",{shebang:{pattern:/#!.+/,alias:"comment",greedy:!0},"interpolation-string":{pattern:/"""(?:[^\\]|\\[\s\S])*?"""|(["/])(?:\\.|(?!\1)[^\\\r\n])*\1|\$\/(?:[^/$]|\$(?:[/$]|(?![/$]))|\/(?!\$))*\/\$/,greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}}}),e.languages.insertBefore("groovy","punctuation",{"spock-block":/\b(?:and|cleanup|expect|given|setup|then|when|where):/}),e.languages.insertBefore("groovy","function",{annotation:{pattern:/(^|[^.])@\w+/,lookbehind:!0,alias:"punctuation"}}),t.inside.expression.inside=e.languages.groovy}(Prism)},45544:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(36672);var r=n(13526),o=n(50120),a=n(74834),s=n(28827),i=n(65572);const c={anchorWithStickyNavbar:"anchorWithStickyNavbar_debX",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_MBh0"};var l=n(23420);function u({as:e,id:t,...n}){const u=(0,i.A)(),{navbar:{hideOnScroll:d}}=(0,a.p)();if("h1"===e||!t)return(0,l.jsx)(e,{...n,id:void 0});u.collectAnchor(t);const p=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof n.children?n.children:t});return(0,l.jsxs)(e,{...n,className:(0,r.A)("anchor",d?c.anchorWithHideOnScrollNavbar:c.anchorWithStickyNavbar,n.className),id:t,children:[n.children,(0,l.jsx)(s.A,{className:"hash-link",to:`#${t}`,"aria-label":p,title:p,children:"\u200b"})]})}},49167:(e,t,n)=>{"use strict";n.d(t,{AL:()=>u,s$:()=>d});var r=n(36672),o=n(68035),a=n(23316),s=n(36496),i=n(23420);const c=({title:e,siteTitle:t,titleDelimiter:n})=>{const r=e?.trim();return r&&r!==t?`${r} ${n} ${t}`:t},l=(0,r.createContext)(null);function u({formatter:e,children:t}){return(0,i.jsx)(l.Provider,{value:e,children:t})}function d(){const e=function(){const e=(0,r.useContext)(l);if(null===e)throw new s.dV("TitleFormatterProvider");return e}(),{siteConfig:t}=(0,o.A)(),{title:n,titleDelimiter:i}=t,{plugin:u}=(0,a.A)();return{format:t=>e({title:t,siteTitle:n,titleDelimiter:i,plugin:u,defaultFormatter:c})}}},49263:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;const r=n(5482);var o=n(40094);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(o).default}});var a=n(6769);var s=n(81268);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return s.getErrorCausalChain}})},50120:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,T:()=>c});var r=n(36672),o=n(23420);function a(e,t){const n=e.split(/(\{\w+\})/).map((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e});return n.some(e=>(0,r.isValidElement)(e))?n.map((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e).filter(e=>""!==e):n.join("")}var s=n(22654);function i({id:e,message:t}){if(void 0===e&&void 0===t)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return s[e??t]??t??e}function c({message:e,id:t},n){return a(i({message:e,id:t}),n)}function l({children:e,id:t,values:n}){if(e&&"string"!=typeof e)throw console.warn("Illegal <Translate> children",e),new Error("The Docusaurus <Translate> component only accept simple string values");const r=i({message:e,id:t});return(0,o.jsx)(o.Fragment,{children:a(r,n)})}},54123:(e,t,n)=>{"use strict";e.exports=n(81690)},54785:(e,t,n)=>{var r=n(5526);e.exports=m,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=h;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,c="",l=t&&t.delimiter||"/";null!=(n=o.exec(e));){var u=n[0],p=n[1],f=n.index;if(c+=e.slice(i,f),i=f+u.length,p)c+=p[1];else{var h=e[i],m=n[2],g=n[3],b=n[4],y=n[5],v=n[6],_=n[7];c&&(r.push(c),c="");var k=null!=m&&null!=h&&h!==m,w="+"===v||"*"===v,C="?"===v||"*"===v,x=m||l,S=b||y,M=m||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:g||a++,prefix:m||"",delimiter:x,optional:C,repeat:w,partial:k,asterisk:!!_,pattern:S?d(S):_?".*":s(x,M)})}}return i<e.length&&(c+=e.substr(i)),c&&r.push(c),r}function s(e,t){return!t||t.indexOf(e)>-1?"[^"+u(e)+"]+?":u(t)+"|(?:(?!"+u(t)+")[^"+u(e)+"])+?"}function i(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function c(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function l(e,t){for(var n=new Array(e.length),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",f(t)));return function(t,o){for(var a="",s=t||{},l=(o||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var d=e[u];if("string"!=typeof d){var p,f=s[d.name];if(null==f){if(d.optional){d.partial&&(a+=d.prefix);continue}throw new TypeError('Expected "'+d.name+'" to be defined')}if(r(f)){if(!d.repeat)throw new TypeError('Expected "'+d.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(d.optional)continue;throw new TypeError('Expected "'+d.name+'" to not be empty')}for(var h=0;h<f.length;h++){if(p=l(f[h]),!n[u].test(p))throw new TypeError('Expected all "'+d.name+'" to match "'+d.pattern+'", but received `'+JSON.stringify(p)+"`");a+=(0===h?d.prefix:d.delimiter)+p}}else{if(p=d.asterisk?c(f):l(f),!n[u].test(p))throw new TypeError('Expected "'+d.name+'" to match "'+d.pattern+'", but received "'+p+'"');a+=d.prefix+p}}else a+=d}return a}}function u(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function d(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function p(e,t){return e.keys=t,e}function f(e){return e&&e.sensitive?"":"i"}function h(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,a=!1!==n.end,s="",i=0;i<e.length;i++){var c=e[i];if("string"==typeof c)s+=u(c);else{var l=u(c.prefix),d="(?:"+c.pattern+")";t.push(c),c.repeat&&(d+="(?:"+l+d+")*"),s+=d=c.optional?c.partial?l+"("+d+")?":"(?:"+l+"("+d+"))?":l+"("+d+")"}}var h=u(n.delimiter||"/"),m=s.slice(-h.length)===h;return o||(s=(m?s.slice(0,-h.length):s)+"(?:"+h+"(?=$))?"),s+=a?"$":o&&m?"":"(?="+h+"|$)",p(new RegExp("^"+s,f(n)),t)}function m(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return p(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(m(e[o],t,n).source);return p(new RegExp("(?:"+r.join("|")+")",f(n)),t)}(e,t,n):function(e,t,n){return h(a(e,n),t,n)}(e,t,n)}},55928:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>i,hH:()=>s});var r=n(36672),o=n(68035),a=n(15449);function s(){const{siteConfig:e}=(0,o.A)(),{baseUrl:t,url:n}=e,s=e.future.experimental_router,i=(0,r.useCallback)((e,r)=>function({siteUrl:e,baseUrl:t,url:n,options:{forcePrependBaseUrl:r=!1,absolute:o=!1}={},router:s}){if(!n||n.startsWith("#")||(0,a.z)(n))return n;if("hash"===s)return n.startsWith("/")?`.${n}`:`./${n}`;if(r)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const i=n.startsWith(t)?n:t+n.replace(/^\//,"");return o?e+i:i}({siteUrl:n,baseUrl:t,url:e,options:r,router:s}),[n,t,s]);return{withBaseUrl:i}}function i(e,t={}){const{withBaseUrl:n}=s();return n(e,t)}},57235:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(96603)},57314:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},57377:(e,t,n)=>{"use strict";n.d(t,{M:()=>h,e:()=>f});var r=n(36672),o=n(82916),a=n(97297),s=n(41201),i=n(74834),c=n(36496),l=n(23420);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,i.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[s,c]=(0,r.useState)(!1),l=(0,r.useCallback)(()=>{c(e=>!e)},[]);return(0,r.useEffect)(()=>{"desktop"===t&&c(!1)},[t]),(0,r.useMemo)(()=>({disabled:e,shouldRender:n,toggle:l,shown:s}),[e,n,l,s])}function p({handler:e}){return(0,s.$Z)(e),null}function f({children:e}){const t=d();return(0,l.jsxs)(l.Fragment,{children:[t.shown&&(0,l.jsx)(p,{handler:()=>(t.toggle(),!1)}),(0,l.jsx)(u.Provider,{value:t,children:e})]})}function h(){const e=r.useContext(u);if(void 0===e)throw new c.dV("NavbarMobileSidebarProvider");return e}},58212:(e,t,n)=>{"use strict";n.d(t,{I9:()=>d,Kd:()=>u,N_:()=>b,k2:()=>_});var r=n(85291),o=n(10809),a=n(36672),s=n(83332),i=n(70811),c=n(99298),l=n(25385),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,s.zR)(t.props),t}return(0,o.A)(t,e),t.prototype.render=function(){return a.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(a.Component);var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,s.TM)(t.props),t}return(0,o.A)(t,e),t.prototype.render=function(){return a.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(a.Component);var p=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,s.yJ)(e,null,null,t):e},h=function(e){return e},m=a.forwardRef;void 0===m&&(m=h);var g=m(function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,s=(0,c.A)(e,["innerRef","navigate","onClick"]),l=s.target,u=(0,i.A)({},s,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||l&&"_self"!==l||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=h!==m&&t||n,a.createElement("a",u)});var b=m(function(e,t){var n=e.component,o=void 0===n?g:n,u=e.replace,d=e.to,b=e.innerRef,y=(0,c.A)(e,["component","replace","to","innerRef"]);return a.createElement(r.XZ.Consumer,null,function(e){e||(0,l.A)(!1);var n=e.history,r=f(p(d,e.location),e.location),c=r?n.createHref(r):"",g=(0,i.A)({},y,{href:c,navigate:function(){var t=p(d,e.location),r=(0,s.AO)(e.location)===(0,s.AO)(f(t));(u||r?n.replace:n.push)(t)}});return h!==m?g.ref=t||b:g.innerRef=b,a.createElement(o,g)})}),y=function(e){return e},v=a.forwardRef;void 0===v&&(v=y);var _=v(function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,s=e.activeClassName,u=void 0===s?"active":s,d=e.activeStyle,h=e.className,m=e.exact,g=e.isActive,_=e.location,k=e.sensitive,w=e.strict,C=e.style,x=e.to,S=e.innerRef,M=(0,c.A)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.XZ.Consumer,null,function(e){e||(0,l.A)(!1);var n=_||e.location,s=f(p(x,n),n),c=s.pathname,E=c&&c.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),O=E?(0,r.B6)(n.pathname,{path:E,exact:m,sensitive:k,strict:w}):null,A=!!(g?g(O,n):O),j="function"==typeof h?h(A):h,D="function"==typeof C?C(A):C;A&&(j=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter(function(e){return e}).join(" ")}(j,u),D=(0,i.A)({},D,d));var P=(0,i.A)({"aria-current":A&&o||null,className:j,style:D,to:s},M);return y!==v?P.ref=t||S:P.innerRef=S,a.createElement(b,P)})})},58744:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function s(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),l=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,i(function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),c(l,s(e,u,d)),1===e?(c(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout(function(){c(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},u)},u)):setTimeout(t,u)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,s=t.querySelector(r.barSelector),i=e?"-100":a(n.status||0),l=document.querySelector(r.parent);return c(s,{transition:"all 0 linear",transform:"translate3d("+i+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),l!=document.body&&u(l,"nprogress-custom-parent"),l.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var i=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),c=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function l(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;l(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);l(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},62721:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>g,XK:()=>v,g1:()=>y});var r=n(36672),o=n(75755),a=n(57314),s=n(74834),i=n(42925),c=n(36496),l=n(23420);const u=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,i.Wf)(u(e),{persistence:t}).set(n)},read:(e,t)=>(0,i.Wf)(u(e),{persistence:t}).get(),clear:(e,t)=>{(0,i.Wf)(u(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map(e=>[e,{preferredVersionName:null}]));const f=r.createContext(null);function h(){const e=(0,o.Gy)(),t=(0,s.p)().docs.versionPersistence,n=(0,r.useMemo)(()=>Object.keys(e),[e]),[a,i]=(0,r.useState)(()=>p(n));(0,r.useEffect)(()=>{i(function({pluginIds:e,versionPersistence:t,allDocsData:n}){function r(e){const r=d.read(e,t);return n[e].versions.some(e=>e.name===r)?{preferredVersionName:r}:(d.clear(e,t),{preferredVersionName:null})}return Object.fromEntries(e.map(e=>[e,r(e)]))}({allDocsData:e,versionPersistence:t,pluginIds:n}))},[e,t,n]);return[a,(0,r.useMemo)(()=>({savePreferredVersion:function(e,n){d.save(e,t,n),i(t=>({...t,[e]:{preferredVersionName:n}}))}}),[t])]}function m({children:e}){const t=h();return(0,l.jsx)(f.Provider,{value:t,children:e})}function g({children:e}){return(0,l.jsx)(m,{children:e})}function b(){const e=(0,r.useContext)(f);if(!e)throw new c.dV("DocsPreferredVersionContextProvider");return e}function y(e=a.W){const t=(0,o.ht)(e),[n,s]=b(),{preferredVersionName:i}=n[e];return{preferredVersion:t.versions.find(e=>e.name===i)??null,savePreferredVersionName:(0,r.useCallback)(t=>{s.savePreferredVersion(e,t)},[s,e])}}function v(){const e=(0,o.Gy)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:o}=t[n];return r.versions.find(e=>e.name===o)??null}const r=Object.keys(e);return Object.fromEntries(r.map(e=>[e,n(e)]))}},62945:e=>{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),s=Object.keys(t);if(a.length!==s.length)return!1;for(var i=Object.prototype.hasOwnProperty.bind(t),c=0;c<a.length;c++){var l=a[c];if(!i(l))return!1;var u=e[l],d=t[l];if(!1===(o=n?n.call(r,u,d,l):void 0)||void 0===o&&u!==d)return!1}return!0}},62985:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},62986:(e,t,n)=>{"use strict";n.d(t,{bq:()=>u,MN:()=>l,a2:()=>c,k2:()=>d});var r=n(36672),o=n(50120),a=n(49263);const s={errorBoundaryError:"errorBoundaryError_iQOE",errorBoundaryFallback:"errorBoundaryFallback_FOml"};var i=n(23420);function c(e){return(0,i.jsx)("button",{type:"button",...e,children:(0,i.jsx)(o.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function l({error:e,tryAgain:t}){return(0,i.jsxs)("div",{className:s.errorBoundaryFallback,children:[(0,i.jsx)("p",{children:e.message}),(0,i.jsx)(c,{onClick:t})]})}function u({error:e}){const t=(0,a.rA)(e).map(e=>e.message).join("\n\nCause:\n");return(0,i.jsx)("p",{className:s.errorBoundaryError,children:t})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},63345:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},64829:(e,t,n)=>{"use strict";n.d(t,{c:()=>o});var r=n(68035);function o(){const{siteConfig:{themeConfig:e}}=(0,r.A)();return e}},65572:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var r=n(36672);n(23420);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function s(){return a()}},65777:(e,t,n)=>{var r={"./prism-groovy":44338,"./prism-java":32912,"./prism-kotlin":83481};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=65777},68035:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(36672),o=n(99125);function a(){return(0,r.useContext)(o.o)}},69197:(e,t,n)=>{"use strict";n.d(t,{M:()=>m,o:()=>h});var r=n(36672),o=n(74682),a=n(42925),s=n(36496),i=n(74834),c=n(23420);const l=(0,a.Wf)("docusaurus.announcement.dismiss"),u=(0,a.Wf)("docusaurus.announcement.id"),d=()=>"true"===l.get(),p=e=>l.set(String(e)),f=r.createContext(null);function h({children:e}){const t=function(){const{announcementBar:e}=(0,i.p)(),t=(0,o.A)(),[n,a]=(0,r.useState)(()=>!!t&&d());(0,r.useEffect)(()=>{a(d())},[]);const s=(0,r.useCallback)(()=>{p(!0),a(!0)},[]);return(0,r.useEffect)(()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)},[e]),(0,r.useMemo)(()=>({isActive:!!e&&!n,close:s}),[e,n,s])}();return(0,c.jsx)(f.Provider,{value:t,children:e})}function m(){const e=(0,r.useContext)(f);if(!e)throw new s.dV("AnnouncementBarProvider");return e}},70811:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},71951:(e,t,n)=>{"use strict";n.d(t,{o:()=>s});var r=n(68035),o=n(85291),a=n(49263);function s(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:s,currentLocale:i}}=(0,r.A)(),{pathname:c}=(0,o.zy)(),l=(0,a.Ks)(c,{trailingSlash:n,baseUrl:e}),u=i===s?e:e.replace(`/${i}/`,"/"),d=l.replace(e,"");return{createUrl:function({locale:e,fullyQualified:n}){return`${n?t:""}${function(e){return e===s?`${u}`:`${u}${e}/`}(e)}${d}`}}}},74682:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(36672),o=n(30092);function a(){return(0,r.useContext)(o.o)}},74834:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(68035);function o(){return(0,r.A)().siteConfig.themeConfig}},75755:(e,t,n)=>{"use strict";n.d(t,{zK:()=>b,vT:()=>f,gk:()=>h,Gy:()=>d,HW:()=>y,ht:()=>p,r7:()=>g,jh:()=>m});var r=n(85291),o=n(68035),a=n(57314);function s(e,t={}){const n=function(){const{globalData:e}=(0,o.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const i=e=>e.versions.find(e=>e.isLast);function c(e,t){return[...e.versions].sort((e,t)=>e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0).find(e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1}))}function l(e,t){const n=c(e,t),o=n?.docs.find(e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1}));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach(e=>{e.docs.forEach(r=>{r.id===t&&(n[e.name]=r)})}),n}(o.id):{}}}const u={},d=()=>s("docusaurus-plugin-content-docs")??u,p=e=>{try{return function(e,t=a.W,n={}){const r=s(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function f(e={}){const t=d(),{pathname:n}=(0,r.zy)();return function(e,t,n={}){const o=Object.entries(e).sort((e,t)=>t[1].path.localeCompare(e[1].path)).find(([,e])=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map(e=>e.path).join(", ")}`);return a}(t,n,e)}function h(e={}){const t=f(e),{pathname:n}=(0,r.zy)();if(!t)return;return{activePlugin:t,activeVersion:c(t.pluginData,n)}}function m(e){return p(e).versions}function g(e){const t=p(e);return i(t)}function b(e){const t=p(e),{pathname:n}=(0,r.zy)();return l(t,n)}function y(e){const t=p(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=i(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},76833:(e,t,n)=>{"use strict";n.d(t,{C:()=>i});var r=n(36672),o=n(37256),a=n(55928),s=n(64829);function i(){const{withBaseUrl:e}=(0,a.hH)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,s.c)();return(0,r.useCallback)(r=>{const a=new URL(r);if((0,o.G)(t,a.href))return r;const s=`${a.pathname+a.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(s,n))},[e,t,n])}},77137:(e,t,n)=>{"use strict";n.d(t,{G:()=>_,a:()=>v});var r=n(36672),o=n(36496),a=n(42925),s=n(74834),i=n(23420);function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function l(e){return function(e,t){const n=window.matchMedia(e);return n.addEventListener("change",t),()=>n.removeEventListener("change",t)}("(prefers-color-scheme: dark)",()=>e(c()))}const u=r.createContext(void 0),d=(0,a.Wf)("theme"),p="system",f=e=>"dark"===e?"dark":"light",h=e=>null===e||e===p?null:f(e),m={get:()=>f(document.documentElement.getAttribute("data-theme")),set:e=>{document.documentElement.setAttribute("data-theme",f(e))}},g={get:()=>h(document.documentElement.getAttribute("data-theme-choice")),set:e=>{document.documentElement.setAttribute("data-theme-choice",h(e)??p)}},b=e=>{null===e?d.del():d.set(f(e))};function y(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.p)(),{colorMode:o,setColorModeState:a,colorModeChoice:i,setColorModeChoiceState:u}=function(){const{colorMode:{defaultMode:e}}=(0,s.p)(),[t,n]=(0,r.useState)(e),[o,a]=(0,r.useState)(null);return(0,r.useEffect)(()=>{n(m.get()),a(g.get())},[]),{colorMode:t,setColorModeState:n,colorModeChoice:o,setColorModeChoiceState:a}}();(0,r.useEffect)(()=>{t&&d.del()},[t]);const p=(0,r.useCallback)((t,r={})=>{const{persist:o=!0}=r;if(null===t){const t=n?c():e;m.set(t),a(t),g.set(null),u(null)}else m.set(t),g.set(t),a(t),u(t);o&&b(t)},[a,u,n,e]);return(0,r.useEffect)(()=>d.listen(e=>{p(h(e.newValue))}),[p]),(0,r.useEffect)(()=>{if(null===i&&n)return l(e=>{a(e),m.set(e)})},[n,i,a]),(0,r.useMemo)(()=>({colorMode:o,colorModeChoice:i,setColorMode:p,get isDarkTheme(){return"dark"===o},setLightTheme(){p("light")},setDarkTheme(){p("dark")}}),[o,i,p])}function v({children:e}){const t=y();return(0,i.jsx)(u.Provider,{value:t,children:e})}function _(){const e=(0,r.useContext)(u);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},77398:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(36672);var r=n(19521),o=n(23420);function a({locale:e,version:t,tag:n}){const a=e;return(0,o.jsxs)(r.A,{children:[e&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:e}),t&&(0,o.jsx)("meta",{name:"docusaurus_version",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:language",content:a}),t&&(0,o.jsx)("meta",{name:"docsearch:version",content:t}),n&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:n})]})}},78385:(e,t)=>{"use strict";var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),c=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,g={};function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}function y(){}function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},y.prototype=b.prototype;var _=v.prototype=new y;_.constructor=v,m(_,b.prototype),_.isPureReactComponent=!0;var k=Array.isArray,w={H:null,A:null,T:null,S:null,V:null},C=Object.prototype.hasOwnProperty;function x(e,t,r,o,a,s){return r=s.ref,{$$typeof:n,type:e,key:t,ref:void 0!==r?r:null,props:s}}function S(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var M=/\/+/g;function E(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function O(){}function A(e,t,o,a,s){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var c,l,u=!1;if(null===e)u=!0;else switch(i){case"bigint":case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case n:case r:u=!0;break;case p:return A((u=e._init)(e._payload),t,o,a,s)}}if(u)return s=s(e),u=""===a?"."+E(e,0):a,k(s)?(o="",null!=u&&(o=u.replace(M,"$&/")+"/"),A(s,t,o,"",function(e){return e})):null!=s&&(S(s)&&(c=s,l=o+(null==s.key||e&&e.key===s.key?"":(""+s.key).replace(M,"$&/")+"/")+u,s=x(c.type,l,void 0,0,0,c.props)),t.push(s)),1;u=0;var d,h=""===a?".":a+":";if(k(e))for(var m=0;m<e.length;m++)u+=A(a=e[m],t,o,i=h+E(a,m),s);else if("function"==typeof(m=null===(d=e)||"object"!=typeof d?null:"function"==typeof(d=f&&d[f]||d["@@iterator"])?d:null))for(e=m.call(e),m=0;!(a=e.next()).done;)u+=A(a=a.value,t,o,i=h+E(a,m++),s);else if("object"===i){if("function"==typeof e.then)return A(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(O,O):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(e),t,o,a,s);throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return u}function j(e,t,n){if(null==e)return e;var r=[],o=0;return A(e,r,"","",function(e){return t.call(n,e,o++)}),r}function D(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var P="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)};function T(){}t.Children={map:j,forEach:function(e,t,n){j(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return j(e,function(){t++}),t},toArray:function(e){return j(e,function(e){return e})||[]},only:function(e){if(!S(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=b,t.Fragment=o,t.Profiler=s,t.PureComponent=v,t.StrictMode=a,t.Suspense=u,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,t.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},t.cache=function(e){return function(){return e.apply(null,arguments)}},t.cloneElement=function(e,t,n){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var r=m({},e.props),o=e.key;if(null!=t)for(a in void 0!==t.ref&&void 0,void 0!==t.key&&(o=""+t.key),t)!C.call(t,a)||"key"===a||"__self"===a||"__source"===a||"ref"===a&&void 0===t.ref||(r[a]=t[a]);var a=arguments.length-2;if(1===a)r.children=n;else if(1<a){for(var s=Array(a),i=0;i<a;i++)s[i]=arguments[i+2];r.children=s}return x(e.type,o,void 0,0,0,r)},t.createContext=function(e){return(e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:i,_context:e},e},t.createElement=function(e,t,n){var r,o={},a=null;if(null!=t)for(r in void 0!==t.key&&(a=""+t.key),t)C.call(t,r)&&"key"!==r&&"__self"!==r&&"__source"!==r&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var i=Array(s),c=0;c<s;c++)i[c]=arguments[c+2];o.children=i}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return x(e,a,void 0,0,0,o)},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:l,render:e}},t.isValidElement=S,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:D}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),o=w.S;null!==o&&o(n,r),"object"==typeof r&&null!==r&&"function"==typeof r.then&&r.then(T,P)}catch(a){P(a)}finally{w.T=t}},t.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},t.use=function(e){return w.H.use(e)},t.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},t.useCallback=function(e,t){return w.H.useCallback(e,t)},t.useContext=function(e){return w.H.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},t.useEffect=function(e,t,n){var r=w.H;if("function"==typeof n)throw Error("useEffect CRUD overload is not enabled in this build of React.");return r.useEffect(e,t)},t.useId=function(){return w.H.useId()},t.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},t.useMemo=function(e,t){return w.H.useMemo(e,t)},t.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},t.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},t.useRef=function(e){return w.H.useRef(e)},t.useState=function(e){return w.H.useState(e)},t.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},t.useTransition=function(){return w.H.useTransition()},t.version="19.1.0"},80480:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,t:()=>l});var r=n(36672),o=n(36496),a=n(23420);const s=Symbol("EmptyContext"),i=r.createContext(s);function c({children:e,name:t,items:n}){const o=(0,r.useMemo)(()=>t&&n?{name:t,items:n}:null,[t,n]);return(0,a.jsx)(i.Provider,{value:o,children:e})}function l(){const e=(0,r.useContext)(i);if(e===s)throw new o.dV("DocsSidebarProvider");return e}},81268:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t,...e(t.cause)];return[t]}},81507:(e,t,n)=>{"use strict";var r=n(3416),o=n(4784);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t,a=globalThis.Prism;globalThis.Prism=e,r.forEach(e=>{"php"===e&&n(88020),n(65777)(`./prism-${e}`)}),delete globalThis.Prism,void 0!==a&&(globalThis.Prism=e)}(r.My)},81510:(e,t,n)=>{"use strict";n.r(t)},81690:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,o=e[r];if(!(0<a(o,t)))break e;e[r]=t,e[n]=o,n=r}}function r(e){return 0===e.length?null:e[0]}function o(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length,s=o>>>1;r<s;){var i=2*(r+1)-1,c=e[i],l=i+1,u=e[l];if(0>a(c,n))l<o&&0>a(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[i]=n,r=i);else{if(!(l<o&&0>a(u,n)))break e;e[r]=u,e[l]=n,r=l}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var s=performance;t.unstable_now=function(){return s.now()}}else{var i=Date,c=i.now();t.unstable_now=function(){return i.now()-c}}var l=[],u=[],d=1,p=null,f=3,h=!1,m=!1,g=!1,b=!1,y="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,_="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var t=r(u);null!==t;){if(null===t.callback)o(u);else{if(!(t.startTime<=e))break;o(u),t.sortIndex=t.expirationTime,n(l,t)}t=r(u)}}function w(e){if(g=!1,k(e),!m)if(null!==r(l))m=!0,x||(x=!0,C());else{var t=r(u);null!==t&&P(w,t.startTime-e)}}var C,x=!1,S=-1,M=5,E=-1;function O(){return!!b||!(t.unstable_now()-E<M)}function A(){if(b=!1,x){var e=t.unstable_now();E=e;var n=!0;try{e:{m=!1,g&&(g=!1,v(S),S=-1),h=!0;var a=f;try{t:{for(k(e),p=r(l);null!==p&&!(p.expirationTime>e&&O());){var s=p.callback;if("function"==typeof s){p.callback=null,f=p.priorityLevel;var i=s(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof i){p.callback=i,k(e),n=!0;break t}p===r(l)&&o(l),k(e)}else o(l);p=r(l)}if(null!==p)n=!0;else{var c=r(u);null!==c&&P(w,c.startTime-e),n=!1}}break e}finally{p=null,f=a,h=!1}n=void 0}}finally{n?C():x=!1}}}if("function"==typeof _)C=function(){_(A)};else if("undefined"!=typeof MessageChannel){var j=new MessageChannel,D=j.port2;j.port1.onmessage=A,C=function(){D.postMessage(null)}}else C=function(){y(A,0)};function P(e,n){S=y(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):M=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},t.unstable_requestPaint=function(){b=!0},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},t.unstable_scheduleCallback=function(e,o,a){var s=t.unstable_now();switch("object"==typeof a&&null!==a?a="number"==typeof(a=a.delay)&&0<a?s+a:s:a=s,e){case 1:var i=-1;break;case 2:i=250;break;case 5:i=1073741823;break;case 4:i=1e4;break;default:i=5e3}return e={id:d++,callback:o,priorityLevel:e,startTime:a,expirationTime:i=a+i,sortIndex:-1},a>s?(e.sortIndex=a,n(u,e),null===r(l)&&e===r(u)&&(g?(v(S),S=-1):g=!0,P(w,a-s))):(e.sortIndex=i,n(l,e),m||h||(m=!0,x||(x=!0,C()))),e},t.unstable_shouldYield=O,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},82916:(e,t,n)=>{"use strict";n.d(t,{GX:()=>l,YL:()=>c,y_:()=>i});var r=n(36672),o=n(36496),a=n(23420);const s=r.createContext(null);function i({children:e}){const t=(0,r.useState)({component:null,props:null});return(0,a.jsx)(s.Provider,{value:t,children:e})}function c(){const e=(0,r.useContext)(s);if(!e)throw new o.dV("NavbarSecondaryMenuContentProvider");return e[0]}function l({component:e,props:t}){const n=(0,r.useContext)(s);if(!n)throw new o.dV("NavbarSecondaryMenuContentProvider");const[,a]=n,i=(0,o.Be)(t);return(0,r.useEffect)(()=>{a({component:e,props:i})},[a,e,i]),(0,r.useEffect)(()=>()=>a({component:null,props:null}),[a]),null}},83332:(e,t,n)=>{"use strict";n.d(t,{zR:()=>_,TM:()=>M,yJ:()=>f,sC:()=>O,AO:()=>p});var r=n(70811);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}const s=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],s=t&&t.split("/")||[],i=e&&o(e),c=t&&o(t),l=i||c;if(e&&o(e)?s=r:r.length&&(s.pop(),s=s.concat(r)),!s.length)return"/";if(s.length){var u=s[s.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=s.length;p>=0;p--){var f=s[p];"."===f?a(s,p):".."===f?(a(s,p),d++):d&&(a(s,p),d--)}if(!l)for(;d--;d)s.unshift("..");!l||""===s[0]||s[0]&&o(s[0])||s.unshift("");var h=s.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var i=n(25385);function c(e){return"/"===e.charAt(0)?e:"/"+e}function l(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.A)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=s(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach(function(e){return e.apply(void 0,n)})}}}var m=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var b="popstate",y="hashchange";function v(){try{return window.history.state||{}}catch(e){return{}}}function _(e){void 0===e&&(e={}),m||(0,i.A)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,a=!(-1===window.navigator.userAgent.indexOf("Trident")),s=e,l=s.forceRefresh,_=void 0!==l&&l,k=s.getUserConfirmation,w=void 0===k?g:k,C=s.keyLength,x=void 0===C?6:C,S=e.basename?d(c(e.basename)):"";function M(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return S&&(a=u(a,S)),f(a,r,n)}function E(){return Math.random().toString(36).substr(2,x)}var O=h();function A(e){(0,r.A)($,e),$.length=n.length,O.notifyListeners($.location,$.action)}function j(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||T(M(e.state))}function D(){T(M(v()))}var P=!1;function T(e){if(P)P=!1,A();else{O.confirmTransitionTo(e,"POP",w,function(t){t?A({action:"POP",location:e}):function(e){var t=$.location,n=N.indexOf(t.key);-1===n&&(n=0);var r=N.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(P=!0,R(o))}(e)})}}var I=M(v()),N=[I.key];function L(e){return S+p(e)}function R(e){n.go(e)}var F=0;function z(e){1===(F+=e)&&1===e?(window.addEventListener(b,j),a&&window.addEventListener(y,D)):0===F&&(window.removeEventListener(b,j),a&&window.removeEventListener(y,D))}var B=!1;var $={length:n.length,action:"POP",location:I,createHref:L,push:function(e,t){var r="PUSH",a=f(e,t,E(),$.location);O.confirmTransitionTo(a,r,w,function(e){if(e){var t=L(a),s=a.key,i=a.state;if(o)if(n.pushState({key:s,state:i},null,t),_)window.location.href=t;else{var c=N.indexOf($.location.key),l=N.slice(0,c+1);l.push(a.key),N=l,A({action:r,location:a})}else window.location.href=t}})},replace:function(e,t){var r="REPLACE",a=f(e,t,E(),$.location);O.confirmTransitionTo(a,r,w,function(e){if(e){var t=L(a),s=a.key,i=a.state;if(o)if(n.replaceState({key:s,state:i},null,t),_)window.location.replace(t);else{var c=N.indexOf($.location.key);-1!==c&&(N[c]=a.key),A({action:r,location:a})}else window.location.replace(t)}})},go:R,goBack:function(){R(-1)},goForward:function(){R(1)},block:function(e){void 0===e&&(e=!1);var t=O.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=O.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var k="hashchange",w={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+l(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:l,decodePath:c},slash:{encodePath:c,decodePath:c}};function C(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function S(e){window.location.replace(C(window.location.href)+"#"+e)}function M(e){void 0===e&&(e={}),m||(0,i.A)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,a=void 0===o?g:o,s=n.hashType,l=void 0===s?"slash":s,b=e.basename?d(c(e.basename)):"",y=w[l],v=y.encodePath,_=y.decodePath;function M(){var e=_(x());return b&&(e=u(e,b)),f(e)}var E=h();function O(e){(0,r.A)(B,e),B.length=t.length,E.notifyListeners(B.location,B.action)}var A=!1,j=null;function D(){var e,t,n=x(),r=v(n);if(n!==r)S(r);else{var o=M(),s=B.location;if(!A&&(t=o,(e=s).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(j===p(o))return;j=null,function(e){if(A)A=!1,O();else{var t="POP";E.confirmTransitionTo(e,t,a,function(n){n?O({action:t,location:e}):function(e){var t=B.location,n=N.lastIndexOf(p(t));-1===n&&(n=0);var r=N.lastIndexOf(p(e));-1===r&&(r=0);var o=n-r;o&&(A=!0,L(o))}(e)})}}(o)}}var P=x(),T=v(P);P!==T&&S(T);var I=M(),N=[p(I)];function L(e){t.go(e)}var R=0;function F(e){1===(R+=e)&&1===e?window.addEventListener(k,D):0===R&&window.removeEventListener(k,D)}var z=!1;var B={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=C(window.location.href)),n+"#"+v(b+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,B.location);E.confirmTransitionTo(r,n,a,function(e){if(e){var t=p(r),o=v(b+t);if(x()!==o){j=t,function(e){window.location.hash=e}(o);var a=N.lastIndexOf(p(B.location)),s=N.slice(0,a+1);s.push(t),N=s,O({action:n,location:r})}else O()}})},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,B.location);E.confirmTransitionTo(r,n,a,function(e){if(e){var t=p(r),o=v(b+t);x()!==o&&(j=t,S(o));var a=N.indexOf(p(B.location));-1!==a&&(N[a]=t),O({action:n,location:r})}})},go:L,goBack:function(){L(-1)},goForward:function(){L(1)},block:function(e){void 0===e&&(e=!1);var t=E.setPrompt(e);return z||(F(1),z=!0),function(){return z&&(z=!1,F(-1)),t()}},listen:function(e){var t=E.appendListener(e);return F(1),function(){F(-1),t()}}};return B}function E(e,t,n){return Math.min(Math.max(e,t),n)}function O(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,a=void 0===o?["/"]:o,s=t.initialIndex,i=void 0===s?0:s,c=t.keyLength,l=void 0===c?6:c,u=h();function d(e){(0,r.A)(_,e),_.length=_.entries.length,u.notifyListeners(_.location,_.action)}function m(){return Math.random().toString(36).substr(2,l)}var g=E(i,0,a.length-1),b=a.map(function(e){return f(e,void 0,"string"==typeof e?m():e.key||m())}),y=p;function v(e){var t=E(_.index+e,0,_.entries.length-1),r=_.entries[t];u.confirmTransitionTo(r,"POP",n,function(e){e?d({action:"POP",location:r,index:t}):d()})}var _={length:b.length,action:"POP",location:b[g],index:g,entries:b,createHref:y,push:function(e,t){var r="PUSH",o=f(e,t,m(),_.location);u.confirmTransitionTo(o,r,n,function(e){if(e){var t=_.index+1,n=_.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}})},replace:function(e,t){var r="REPLACE",o=f(e,t,m(),_.location);u.confirmTransitionTo(o,r,n,function(e){e&&(_.entries[_.index]=o,d({action:r,location:o}))})},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=_.index+e;return t>=0&&t<_.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return _}},83481:()=>{!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(Prism)},83770:(e,t,n)=>{"use strict";n.d(t,{$:()=>s});var r=n(36672),o=n(85291),a=n(36496);function s(e){const t=(0,o.zy)(),n=(0,a.ZC)(t),s=(0,a._q)(e);(0,r.useEffect)(()=>{n&&t!==n&&s({location:t,previousLocation:n})},[s,t,n])}},84054:e=>{"use strict";e.exports=JSON.parse('{"/ModuleCheck/changelog-6c5":{"__comp":"1f391b9e","__context":{"plugin":"a7456010"},"content":"75878fc8"},"/ModuleCheck/migrations-b20":{"__comp":"1f391b9e","__context":{"plugin":"a7456010"},"content":"444a5a58"},"/ModuleCheck/search-b2c":{"__comp":"1a4e3797","__context":{"plugin":"c141421f"}},"/ModuleCheck/docs-ea9":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/ModuleCheck/docs/0.10.0-69a":{"__comp":"a7bd4aaa","__props":"021c8caa"},"/ModuleCheck/docs/0.10.0-acc":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.10.0/-efa":{"__comp":"17896441","content":"24af6869"},"/ModuleCheck/docs/0.10.0/configuration-4f3":{"__comp":"17896441","content":"62cdf0e0"},"/ModuleCheck/docs/0.10.0/mdx-60c":{"__comp":"17896441","content":"7cbf6be7"},"/ModuleCheck/docs/0.10.0/rules/android/disable_resources-3a2":{"__comp":"17896441","content":"b3a16c5b"},"/ModuleCheck/docs/0.10.0/rules/android/disable_viewbinding-4d4":{"__comp":"17896441","content":"be81e05d"},"/ModuleCheck/docs/0.10.0/rules/kapt/custom_kapt_matchers-0fe":{"__comp":"17896441","content":"cb00cd0b"},"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_plugin-1f9":{"__comp":"17896441","content":"a4e2bd41"},"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_processor-d30":{"__comp":"17896441","content":"ffeead90"},"/ModuleCheck/docs/0.10.0/rules/overshot-771":{"__comp":"17896441","content":"d05f0a7d"},"/ModuleCheck/docs/0.10.0/rules/redundant-c5b":{"__comp":"17896441","content":"1483dc01"},"/ModuleCheck/docs/0.10.0/rules/sorting/sort_dependencies-b11":{"__comp":"17896441","content":"14e1fcc3"},"/ModuleCheck/docs/0.10.0/rules/sorting/sort_plugins-de5":{"__comp":"17896441","content":"99547feb"},"/ModuleCheck/docs/0.10.0/rules/unused-f7f":{"__comp":"17896441","content":"70335a48"},"/ModuleCheck/docs/0.11.0-00d":{"__comp":"a7bd4aaa","__props":"5ad15a2f"},"/ModuleCheck/docs/0.11.0-c05":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.11.0/-110":{"__comp":"17896441","content":"c07a004a"},"/ModuleCheck/docs/0.11.0/configuration-511":{"__comp":"17896441","content":"30f6db9d"},"/ModuleCheck/docs/0.11.0/rules/android/disable_resources-f78":{"__comp":"17896441","content":"9469bd80"},"/ModuleCheck/docs/0.11.0/rules/android/disable_viewbinding-cff":{"__comp":"17896441","content":"20c870cb"},"/ModuleCheck/docs/0.11.0/rules/compiler/could_use_anvil_factory-953":{"__comp":"17896441","content":"8e56f135"},"/ModuleCheck/docs/0.11.0/rules/inherited_dependency-83f":{"__comp":"17896441","content":"abdba85e"},"/ModuleCheck/docs/0.11.0/rules/kapt/custom_kapt_matchers-a1a":{"__comp":"17896441","content":"eadc19b4"},"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_plugin-e0c":{"__comp":"17896441","content":"3e41c308"},"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_processor-322":{"__comp":"17896441","content":"109fab02"},"/ModuleCheck/docs/0.11.0/rules/must_be_api-66f":{"__comp":"17896441","content":"e4d3d2e1"},"/ModuleCheck/docs/0.11.0/rules/sorting/sort_dependencies-077":{"__comp":"17896441","content":"4359cab8"},"/ModuleCheck/docs/0.11.0/rules/sorting/sort_plugins-b83":{"__comp":"17896441","content":"ba3d50d9"},"/ModuleCheck/docs/0.11.0/rules/unused-84a":{"__comp":"17896441","content":"048b8cd8"},"/ModuleCheck/docs/0.11.1-fdf":{"__comp":"a7bd4aaa","__props":"53b10fcd"},"/ModuleCheck/docs/0.11.1-709":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.11.1/-a1a":{"__comp":"17896441","content":"bc73dc9d"},"/ModuleCheck/docs/0.11.1/configuration-4f3":{"__comp":"17896441","content":"c5f63adb"},"/ModuleCheck/docs/0.11.1/rules/android/disable_resources-551":{"__comp":"17896441","content":"1a3a5cbb"},"/ModuleCheck/docs/0.11.1/rules/android/disable_viewbinding-5c0":{"__comp":"17896441","content":"64018eb5"},"/ModuleCheck/docs/0.11.1/rules/compiler/could_use_anvil_factory-fc2":{"__comp":"17896441","content":"c846d7aa"},"/ModuleCheck/docs/0.11.1/rules/inherited_dependency-01b":{"__comp":"17896441","content":"bc7e3c4b"},"/ModuleCheck/docs/0.11.1/rules/kapt/custom_kapt_matchers-cc4":{"__comp":"17896441","content":"5d2d37cd"},"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_plugin-85d":{"__comp":"17896441","content":"df248b36"},"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_processor-31b":{"__comp":"17896441","content":"a559ab1c"},"/ModuleCheck/docs/0.11.1/rules/must_be_api-f93":{"__comp":"17896441","content":"627bdb5d"},"/ModuleCheck/docs/0.11.1/rules/sorting/sort_dependencies-f1c":{"__comp":"17896441","content":"5f0d7ee4"},"/ModuleCheck/docs/0.11.1/rules/sorting/sort_plugins-2ac":{"__comp":"17896441","content":"ac2458d6"},"/ModuleCheck/docs/0.11.1/rules/unused-a1e":{"__comp":"17896441","content":"a8ed45e8"},"/ModuleCheck/docs/0.11.2-936":{"__comp":"a7bd4aaa","__props":"d4bc87de"},"/ModuleCheck/docs/0.11.2-ad2":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.11.2/-b89":{"__comp":"17896441","content":"46e9ac31"},"/ModuleCheck/docs/0.11.2/ci-workflow-e0f":{"__comp":"17896441","content":"cb4f58ba"},"/ModuleCheck/docs/0.11.2/configuration-c88":{"__comp":"17896441","content":"23c216bb"},"/ModuleCheck/docs/0.11.2/rules/android/disable_resources-7cd":{"__comp":"17896441","content":"12b0e932"},"/ModuleCheck/docs/0.11.2/rules/android/disable_viewbinding-59f":{"__comp":"17896441","content":"09b50579"},"/ModuleCheck/docs/0.11.2/rules/compiler/could_use_anvil_factory-c8f":{"__comp":"17896441","content":"171ac7cc"},"/ModuleCheck/docs/0.11.2/rules/inherited_dependency-d33":{"__comp":"17896441","content":"a06cff9c"},"/ModuleCheck/docs/0.11.2/rules/kapt/custom_kapt_matchers-f07":{"__comp":"17896441","content":"5fd14b8b"},"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_plugin-f7f":{"__comp":"17896441","content":"f399bb6f"},"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_processor-053":{"__comp":"17896441","content":"3139ff2f"},"/ModuleCheck/docs/0.11.2/rules/must_be_api-4c3":{"__comp":"17896441","content":"ca8e7b55"},"/ModuleCheck/docs/0.11.2/rules/sorting/sort_dependencies-abd":{"__comp":"17896441","content":"bd7e05cf"},"/ModuleCheck/docs/0.11.2/rules/sorting/sort_plugins-d80":{"__comp":"17896441","content":"de406b5e"},"/ModuleCheck/docs/0.11.2/rules/unused-789":{"__comp":"17896441","content":"b00e7a90"},"/ModuleCheck/docs/0.11.3-0ce":{"__comp":"a7bd4aaa","__props":"b20814c1"},"/ModuleCheck/docs/0.11.3-f4b":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.11.3/-5e5":{"__comp":"17896441","content":"b1002bca"},"/ModuleCheck/docs/0.11.3/ci-workflow-b4a":{"__comp":"17896441","content":"c902409b"},"/ModuleCheck/docs/0.11.3/configuration-1c6":{"__comp":"17896441","content":"7bab4396"},"/ModuleCheck/docs/0.11.3/rules/android/disable_resources-11b":{"__comp":"17896441","content":"dc7f0b30"},"/ModuleCheck/docs/0.11.3/rules/android/disable_viewbinding-e1e":{"__comp":"17896441","content":"e8303188"},"/ModuleCheck/docs/0.11.3/rules/compiler/could_use_anvil_factory-291":{"__comp":"17896441","content":"ca3e6c65"},"/ModuleCheck/docs/0.11.3/rules/inherited_dependency-712":{"__comp":"17896441","content":"46d462fa"},"/ModuleCheck/docs/0.11.3/rules/kapt/custom_kapt_matchers-75a":{"__comp":"17896441","content":"9478d12a"},"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_plugin-e38":{"__comp":"17896441","content":"5d624d4b"},"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_processor-783":{"__comp":"17896441","content":"c10c208b"},"/ModuleCheck/docs/0.11.3/rules/must_be_api-671":{"__comp":"17896441","content":"19d61b19"},"/ModuleCheck/docs/0.11.3/rules/sorting/sort_dependencies-2ad":{"__comp":"17896441","content":"a5fc5a0e"},"/ModuleCheck/docs/0.11.3/rules/sorting/sort_plugins-b98":{"__comp":"17896441","content":"fb031341"},"/ModuleCheck/docs/0.11.3/rules/unused-ba3":{"__comp":"17896441","content":"4c8a85bd"},"/ModuleCheck/docs/0.11.3/suppressing-findings-d13":{"__comp":"17896441","content":"05d123c0"},"/ModuleCheck/docs/0.12.0-ae3":{"__comp":"a7bd4aaa","__props":"e819ef22"},"/ModuleCheck/docs/0.12.0-e9b":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.12.0/-afb":{"__comp":"17896441","content":"87c27ff4"},"/ModuleCheck/docs/0.12.0/ci-workflow-29e":{"__comp":"17896441","content":"a35aa088"},"/ModuleCheck/docs/0.12.0/configuration-d18":{"__comp":"17896441","content":"518ccc20"},"/ModuleCheck/docs/0.12.0/rules/android/disable_resources-c59":{"__comp":"17896441","content":"7c1e7b42"},"/ModuleCheck/docs/0.12.0/rules/android/disable_viewbinding-e07":{"__comp":"17896441","content":"4e8e2262"},"/ModuleCheck/docs/0.12.0/rules/android/unused_kotlin_android_extensions-474":{"__comp":"17896441","content":"4047c50f"},"/ModuleCheck/docs/0.12.0/rules/compiler/could_use_anvil_factory-9f3":{"__comp":"17896441","content":"9ae4b911"},"/ModuleCheck/docs/0.12.0/rules/depths-106":{"__comp":"17896441","content":"7136df27"},"/ModuleCheck/docs/0.12.0/rules/inherited_dependency-4c6":{"__comp":"17896441","content":"41bca987"},"/ModuleCheck/docs/0.12.0/rules/kapt/custom_kapt_matchers-9d7":{"__comp":"17896441","content":"171f1b26"},"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_plugin-28a":{"__comp":"17896441","content":"ce0be35a"},"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_processor-247":{"__comp":"17896441","content":"50b1f033"},"/ModuleCheck/docs/0.12.0/rules/must_be_api-529":{"__comp":"17896441","content":"c83ce79b"},"/ModuleCheck/docs/0.12.0/rules/overshot_dependency-d6f":{"__comp":"17896441","content":"10b686c7"},"/ModuleCheck/docs/0.12.0/rules/redundant_dependency-8f3":{"__comp":"17896441","content":"e0a1aa17"},"/ModuleCheck/docs/0.12.0/rules/sorting/sort_dependencies-30d":{"__comp":"17896441","content":"521dad97"},"/ModuleCheck/docs/0.12.0/rules/sorting/sort_plugins-694":{"__comp":"17896441","content":"2f675600"},"/ModuleCheck/docs/0.12.0/rules/unused-6a4":{"__comp":"17896441","content":"71174ce3"},"/ModuleCheck/docs/0.12.0/suppressing-findings-8de":{"__comp":"17896441","content":"a2d99d88"},"/ModuleCheck/docs/0.12.1-254":{"__comp":"a7bd4aaa","__props":"c0050a27"},"/ModuleCheck/docs/0.12.1-d14":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.12.1/-75e":{"__comp":"17896441","content":"3abc021e"},"/ModuleCheck/docs/0.12.1/ci-workflow-c9b":{"__comp":"17896441","content":"1a3bb66a"},"/ModuleCheck/docs/0.12.1/configuration-584":{"__comp":"17896441","content":"ef46515e"},"/ModuleCheck/docs/0.12.1/rules/custom_kapt_matchers-68b":{"__comp":"17896441","content":"91ee770c"},"/ModuleCheck/docs/0.12.1/rules/disable_android_resources-bc2":{"__comp":"17896441","content":"325152a5"},"/ModuleCheck/docs/0.12.1/rules/disable_view_binding-133":{"__comp":"17896441","content":"89d14484"},"/ModuleCheck/docs/0.12.1/rules/inherited_dependency-c72":{"__comp":"17896441","content":"341c85ac"},"/ModuleCheck/docs/0.12.1/rules/must_be_api-5b1":{"__comp":"17896441","content":"ff366317"},"/ModuleCheck/docs/0.12.1/rules/overshot_dependency-4bd":{"__comp":"17896441","content":"a4b1a9b8"},"/ModuleCheck/docs/0.12.1/rules/project_depth-4c1":{"__comp":"17896441","content":"25072094"},"/ModuleCheck/docs/0.12.1/rules/redundant_dependency-07b":{"__comp":"17896441","content":"15a9c06b"},"/ModuleCheck/docs/0.12.1/rules/sort_dependencies-deb":{"__comp":"17896441","content":"92131bac"},"/ModuleCheck/docs/0.12.1/rules/sort_plugins-c1d":{"__comp":"17896441","content":"eb10ccf4"},"/ModuleCheck/docs/0.12.1/rules/unused_dependency-5ae":{"__comp":"17896441","content":"571f3672"},"/ModuleCheck/docs/0.12.1/rules/unused_kapt_plugin-fd6":{"__comp":"17896441","content":"e480558e"},"/ModuleCheck/docs/0.12.1/rules/unused_kapt_processor-e05":{"__comp":"17896441","content":"d2866892"},"/ModuleCheck/docs/0.12.1/rules/unused_kotlin_android_extensions-13b":{"__comp":"17896441","content":"1c291fdc"},"/ModuleCheck/docs/0.12.1/rules/use_anvil_factory_generation-164":{"__comp":"17896441","content":"150ef1cb"},"/ModuleCheck/docs/0.12.1/suppressing-findings-6c9":{"__comp":"17896441","content":"54b37c16"},"/ModuleCheck/docs/0.12.2-f87":{"__comp":"a7bd4aaa","__props":"fde89899"},"/ModuleCheck/docs/0.12.2-35b":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.12.2/-fb0":{"__comp":"17896441","content":"1050d62e"},"/ModuleCheck/docs/0.12.2/ci-workflow-b8a":{"__comp":"17896441","content":"2192b561"},"/ModuleCheck/docs/0.12.2/configuration-832":{"__comp":"17896441","content":"3fb0a163"},"/ModuleCheck/docs/0.12.2/rules/custom_kapt_matchers-7d4":{"__comp":"17896441","content":"29a2444a"},"/ModuleCheck/docs/0.12.2/rules/disable_android_resources-402":{"__comp":"17896441","content":"b7c223ee"},"/ModuleCheck/docs/0.12.2/rules/disable_view_binding-271":{"__comp":"17896441","content":"84fb41f0"},"/ModuleCheck/docs/0.12.2/rules/inherited_dependency-ff3":{"__comp":"17896441","content":"c989d589"},"/ModuleCheck/docs/0.12.2/rules/must_be_api-17f":{"__comp":"17896441","content":"228d1b45"},"/ModuleCheck/docs/0.12.2/rules/overshot_dependency-a62":{"__comp":"17896441","content":"50cf1f78"},"/ModuleCheck/docs/0.12.2/rules/project_depth-06c":{"__comp":"17896441","content":"368eb302"},"/ModuleCheck/docs/0.12.2/rules/redundant_dependency-abd":{"__comp":"17896441","content":"0f29fa4c"},"/ModuleCheck/docs/0.12.2/rules/sort_dependencies-0bd":{"__comp":"17896441","content":"7da24252"},"/ModuleCheck/docs/0.12.2/rules/sort_plugins-f4e":{"__comp":"17896441","content":"b1c76d35"},"/ModuleCheck/docs/0.12.2/rules/unused_dependency-9a1":{"__comp":"17896441","content":"3e68fbe7"},"/ModuleCheck/docs/0.12.2/rules/unused_kapt_plugin-f08":{"__comp":"17896441","content":"c7222430"},"/ModuleCheck/docs/0.12.2/rules/unused_kapt_processor-951":{"__comp":"17896441","content":"051962a1"},"/ModuleCheck/docs/0.12.2/rules/unused_kotlin_android_extensions-191":{"__comp":"17896441","content":"cc640607"},"/ModuleCheck/docs/0.12.2/rules/use_anvil_factory_generation-acb":{"__comp":"17896441","content":"341f4c6e"},"/ModuleCheck/docs/0.12.2/suppressing-findings-566":{"__comp":"17896441","content":"99cbfc76"},"/ModuleCheck/docs/0.12.3-995":{"__comp":"a7bd4aaa","__props":"d1cdaf24"},"/ModuleCheck/docs/0.12.3-549":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.12.3/-bdc":{"__comp":"17896441","content":"d51efe31"},"/ModuleCheck/docs/0.12.3/ci-workflow-2b2":{"__comp":"17896441","content":"aad83134"},"/ModuleCheck/docs/0.12.3/configuration-081":{"__comp":"17896441","content":"011d940f"},"/ModuleCheck/docs/0.12.3/rules/custom_kapt_matchers-73d":{"__comp":"17896441","content":"c2414a18"},"/ModuleCheck/docs/0.12.3/rules/disable_android_resources-8b6":{"__comp":"17896441","content":"c4b5a5df"},"/ModuleCheck/docs/0.12.3/rules/disable_view_binding-153":{"__comp":"17896441","content":"23284c9b"},"/ModuleCheck/docs/0.12.3/rules/inherited_dependency-487":{"__comp":"17896441","content":"485c5e01"},"/ModuleCheck/docs/0.12.3/rules/must_be_api-4ba":{"__comp":"17896441","content":"ef09bccd"},"/ModuleCheck/docs/0.12.3/rules/overshot_dependency-54b":{"__comp":"17896441","content":"5b786e91"},"/ModuleCheck/docs/0.12.3/rules/project_depth-1bf":{"__comp":"17896441","content":"d69a7b0b"},"/ModuleCheck/docs/0.12.3/rules/redundant_dependency-65b":{"__comp":"17896441","content":"b28afb00"},"/ModuleCheck/docs/0.12.3/rules/sort_dependencies-303":{"__comp":"17896441","content":"e7f8ca4b"},"/ModuleCheck/docs/0.12.3/rules/sort_plugins-9ba":{"__comp":"17896441","content":"cd2aa5fe"},"/ModuleCheck/docs/0.12.3/rules/unused_dependency-bf4":{"__comp":"17896441","content":"1e828d0d"},"/ModuleCheck/docs/0.12.3/rules/unused_kapt_plugin-2f6":{"__comp":"17896441","content":"400cc4b7"},"/ModuleCheck/docs/0.12.3/rules/unused_kapt_processor-75e":{"__comp":"17896441","content":"cd6f4c97"},"/ModuleCheck/docs/0.12.3/rules/unused_kotlin_android_extensions-127":{"__comp":"17896441","content":"107eb4cc"},"/ModuleCheck/docs/0.12.3/rules/use_anvil_factory_generation-522":{"__comp":"17896441","content":"1ecac929"},"/ModuleCheck/docs/0.12.3/suppressing-findings-71e":{"__comp":"17896441","content":"ede96f45"},"/ModuleCheck/docs/0.12.4-3a4":{"__comp":"a7bd4aaa","__props":"6518a949"},"/ModuleCheck/docs/0.12.4-27f":{"__comp":"a94703ab"},"/ModuleCheck/docs/0.12.4/-e8d":{"__comp":"17896441","content":"b35da6ab"},"/ModuleCheck/docs/0.12.4/ci-workflow-8b5":{"__comp":"17896441","content":"044a6187"},"/ModuleCheck/docs/0.12.4/configuration-6b4":{"__comp":"17896441","content":"ca873730"},"/ModuleCheck/docs/0.12.4/rules/custom_kapt_matchers-b37":{"__comp":"17896441","content":"f9546978"},"/ModuleCheck/docs/0.12.4/rules/disable_android_resources-e3e":{"__comp":"17896441","content":"e5eedb42"},"/ModuleCheck/docs/0.12.4/rules/disable_view_binding-54e":{"__comp":"17896441","content":"d968e4da"},"/ModuleCheck/docs/0.12.4/rules/inherited_dependency-185":{"__comp":"17896441","content":"35179155"},"/ModuleCheck/docs/0.12.4/rules/must_be_api-342":{"__comp":"17896441","content":"86c82c9a"},"/ModuleCheck/docs/0.12.4/rules/overshot_dependency-230":{"__comp":"17896441","content":"0b199b14"},"/ModuleCheck/docs/0.12.4/rules/project_depth-c39":{"__comp":"17896441","content":"f354998b"},"/ModuleCheck/docs/0.12.4/rules/redundant_dependency-606":{"__comp":"17896441","content":"e12d7f74"},"/ModuleCheck/docs/0.12.4/rules/sort_dependencies-35a":{"__comp":"17896441","content":"896d06c5"},"/ModuleCheck/docs/0.12.4/rules/sort_plugins-690":{"__comp":"17896441","content":"19b95078"},"/ModuleCheck/docs/0.12.4/rules/unused_dependency-c81":{"__comp":"17896441","content":"d425c21a"},"/ModuleCheck/docs/0.12.4/rules/unused_kapt_plugin-088":{"__comp":"17896441","content":"3325f0a2"},"/ModuleCheck/docs/0.12.4/rules/unused_kapt_processor-652":{"__comp":"17896441","content":"487ca811"},"/ModuleCheck/docs/0.12.4/rules/unused_kotlin_android_extensions-23e":{"__comp":"17896441","content":"c4025719"},"/ModuleCheck/docs/0.12.4/rules/use_anvil_factory_generation-b7d":{"__comp":"17896441","content":"411bcc8b"},"/ModuleCheck/docs/0.12.4/suppressing-findings-357":{"__comp":"17896441","content":"a5f1db42"},"/ModuleCheck/docs/next-5d8":{"__comp":"a7bd4aaa","__props":"41b23040"},"/ModuleCheck/docs/next-b28":{"__comp":"a94703ab"},"/ModuleCheck/docs/next/-2a1":{"__comp":"17896441","content":"74876495"},"/ModuleCheck/docs/next/ci-workflow-7ff":{"__comp":"17896441","content":"a180cea5"},"/ModuleCheck/docs/next/configuration-18d":{"__comp":"17896441","content":"cbb899e4"},"/ModuleCheck/docs/next/rules/custom_kapt_matchers-2df":{"__comp":"17896441","content":"c5b979b0"},"/ModuleCheck/docs/next/rules/disable_android_resources-955":{"__comp":"17896441","content":"ca460041"},"/ModuleCheck/docs/next/rules/disable_view_binding-e88":{"__comp":"17896441","content":"e69e4b95"},"/ModuleCheck/docs/next/rules/inherited_dependency-222":{"__comp":"17896441","content":"724ecf1a"},"/ModuleCheck/docs/next/rules/must_be_api-db1":{"__comp":"17896441","content":"2950f807"},"/ModuleCheck/docs/next/rules/overshot_dependency-ed9":{"__comp":"17896441","content":"cbe609e8"},"/ModuleCheck/docs/next/rules/project_depth-4d8":{"__comp":"17896441","content":"6bba662b"},"/ModuleCheck/docs/next/rules/redundant_dependency-ea9":{"__comp":"17896441","content":"c1600862"},"/ModuleCheck/docs/next/rules/sort_dependencies-9f3":{"__comp":"17896441","content":"91e5ca6b"},"/ModuleCheck/docs/next/rules/sort_plugins-ab2":{"__comp":"17896441","content":"6e873df7"},"/ModuleCheck/docs/next/rules/unused_dependency-6a3":{"__comp":"17896441","content":"7273998d"},"/ModuleCheck/docs/next/rules/unused_kapt_plugin-872":{"__comp":"17896441","content":"71eb5ef4"},"/ModuleCheck/docs/next/rules/unused_kapt_processor-a4f":{"__comp":"17896441","content":"4577221a"},"/ModuleCheck/docs/next/rules/unused_kotlin_android_extensions-bbb":{"__comp":"17896441","content":"51d6008a"},"/ModuleCheck/docs/next/rules/use_anvil_factory_generation-49a":{"__comp":"17896441","content":"0807349d"},"/ModuleCheck/docs/next/suppressing-findings-1a5":{"__comp":"17896441","content":"94dc3e5f"},"/ModuleCheck/docs-f3f":{"__comp":"a7bd4aaa","__props":"9e2bab8c"},"/ModuleCheck/docs-ce9":{"__comp":"a94703ab"},"/ModuleCheck/docs/-c72":{"__comp":"17896441","content":"324fc7ff"},"/ModuleCheck/docs/ci-workflow-ef4":{"__comp":"17896441","content":"6e6115bc"},"/ModuleCheck/docs/configuration-ce4":{"__comp":"17896441","content":"e4603b0e"},"/ModuleCheck/docs/rules/custom_kapt_matchers-aea":{"__comp":"17896441","content":"4329fc3c"},"/ModuleCheck/docs/rules/disable_android_resources-3b4":{"__comp":"17896441","content":"e0474f93"},"/ModuleCheck/docs/rules/disable_view_binding-a53":{"__comp":"17896441","content":"8dac98b9"},"/ModuleCheck/docs/rules/inherited_dependency-003":{"__comp":"17896441","content":"388f1aef"},"/ModuleCheck/docs/rules/must_be_api-f05":{"__comp":"17896441","content":"47da9d80"},"/ModuleCheck/docs/rules/overshot_dependency-7f8":{"__comp":"17896441","content":"03459661"},"/ModuleCheck/docs/rules/project_depth-919":{"__comp":"17896441","content":"66e00e19"},"/ModuleCheck/docs/rules/redundant_dependency-4c1":{"__comp":"17896441","content":"02359d8a"},"/ModuleCheck/docs/rules/sort_dependencies-8ca":{"__comp":"17896441","content":"0fc8e5d5"},"/ModuleCheck/docs/rules/sort_plugins-e73":{"__comp":"17896441","content":"54f055ef"},"/ModuleCheck/docs/rules/unused_dependency-905":{"__comp":"17896441","content":"e4f0c0bc"},"/ModuleCheck/docs/rules/unused_kapt_plugin-3c3":{"__comp":"17896441","content":"eb678835"},"/ModuleCheck/docs/rules/unused_kapt_processor-728":{"__comp":"17896441","content":"de297161"},"/ModuleCheck/docs/rules/unused_kotlin_android_extensions-2b6":{"__comp":"17896441","content":"6033e994"},"/ModuleCheck/docs/rules/use_anvil_factory_generation-a6f":{"__comp":"17896441","content":"f963ac8e"},"/ModuleCheck/docs/suppressing-findings-8f6":{"__comp":"17896441","content":"f435945d"},"/ModuleCheck/-f09":{"__comp":"c4f5d8e4","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"}}')},85291:(e,t,n)=>{"use strict";n.d(t,{B6:()=>C,Ix:()=>v,W6:()=>P,XZ:()=>y,dO:()=>j,qh:()=>x,zy:()=>T});var r=n(10809),o=n(36672),a=n(2736),s=n.n(a),i=n(83332),c=n(25385),l=n(70811),u=n(54785),d=n.n(u),p=(n(35959),n(99298)),f=(n(31035),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var m=o.createContext||function(e,t){var n,a,i="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",c=function(e){function n(){for(var t,n,r,o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];return(t=e.call.apply(e,[this].concat(a))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter(function(t){return t!==e})},get:function(){return n},set:function(e,t){n=e,r.forEach(function(e){return e(n,t)})}}),t}(0,r.A)(n,e);var o=n.prototype;return o.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},o.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((a=r)===(s=o)?0!==a||1/a==1/s:a!=a&&s!=s)?n=0:(n="function"==typeof t?t(r,o):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,s},o.render=function(){return this.props.children},n}(o.Component);c.childContextTypes=((n={})[i]=s().object.isRequired,n);var l=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!==((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.A)(n,t);var o=n.prototype;return o.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},o.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},o.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},o.getValue=function(){return this.context[i]?this.context[i].get():e},o.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(o.Component);return l.contextTypes=((a={})[i]=s().object,a),{Provider:c,Consumer:l}},g=function(e){var t=m();return t.displayName=e,t},b=g("Router-History"),y=g("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen(function(e){n._pendingLocation=e})),n}(0,r.A)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen(function(t){e._isMounted&&e.setState({location:t})})),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return o.createElement(y.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.createElement(b.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.Component);o.Component;o.Component;var _={},k=1e4,w=0;function C(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,a=void 0!==o&&o,s=n.strict,i=void 0!==s&&s,c=n.sensitive,l=void 0!==c&&c;return[].concat(r).reduce(function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=_[n]||(_[n]={});if(r[e])return r[e];var o=[],a={regexp:d()(e,o,t),keys:o};return w<k&&(r[e]=a,w++),a}(n,{end:a,strict:i,sensitive:l}),o=r.regexp,s=r.keys,c=o.exec(e);if(!c)return null;var u=c[0],p=c.slice(1),f=e===u;return a&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:s.reduce(function(e,t,n){return e[t.name]=p[n],e},{})}},null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return o.createElement(y.Consumer,null,function(t){t||(0,c.A)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?C(n.pathname,e.props):t.match,a=(0,l.A)({},t,{location:n,match:r}),s=e.props,i=s.children,u=s.component,d=s.render;return Array.isArray(i)&&function(e){return 0===o.Children.count(e)}(i)&&(i=null),o.createElement(y.Provider,{value:a},a.match?i?"function"==typeof i?i(a):i:u?o.createElement(u,a):d?d(a):null:"function"==typeof i?i(a):null)})},t}(o.Component);function S(e){return"/"===e.charAt(0)?e:"/"+e}function M(e,t){if(!e)return t;var n=S(e);return 0!==t.pathname.indexOf(n)?t:(0,l.A)({},t,{pathname:t.pathname.substr(n.length)})}function E(e){return"string"==typeof e?e:(0,i.AO)(e)}function O(e){return function(){(0,c.A)(!1)}}function A(){}o.Component;var j=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return o.createElement(y.Consumer,null,function(t){t||(0,c.A)(!1);var n,r,a=e.props.location||t.location;return o.Children.forEach(e.props.children,function(e){if(null==r&&o.isValidElement(e)){n=e;var s=e.props.path||e.props.from;r=s?C(a.pathname,(0,l.A)({},e.props,{path:s})):t.match}}),r?o.cloneElement(n,{location:a,computedMatch:r}):null})},t}(o.Component);var D=o.useContext;function P(){return D(b)}function T(){return D(y).location}},88020:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var s=n.tokenStack=[];n.code=n.code.replace(o,function(e){if("function"==typeof a&&!a(e))return e;for(var o,i=s.length;-1!==n.code.indexOf(o=t(r,i));)++i;return s[i]=e,o}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function s(i){for(var c=0;c<i.length&&!(o>=a.length);c++){var l=i[c];if("string"==typeof l||l.content&&"string"==typeof l.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof l?l:l.content,f=t(r,u),h=p.indexOf(f);if(h>-1){++o;var m=p.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(h+f.length),y=[];m&&y.push.apply(y,s([m])),y.push(g),b&&y.push.apply(y,s([b])),"string"==typeof l?i.splice.apply(i,[c,1].concat(y)):l.content=y}}else l.content&&s(l.content)}return i}(n.tokens)}}}})}(Prism)},88103:(e,t,n)=>{"use strict";n.d(t,{W:()=>s,o:()=>a});var r=n(36672),o=n(23420);const a=r.createContext(null);function s({children:e,value:t}){const n=r.useContext(a),s=(0,r.useMemo)(()=>function({parent:e,value:t}){if(!e){if(!t)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in t))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return t}const n={...e.data,...t?.data};return{plugin:e.plugin,data:n}}({parent:n,value:t}),[n,t]);return(0,o.jsx)(a.Provider,{value:s,children:e})}},90592:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(36672);var r=n(28827),o=n(55928),a=n(68035),s=n(74834),i=n(10239),c=n(23420);function l({logo:e,alt:t,imageClassName:n}){const r={light:(0,o.Ay)(e.src),dark:(0,o.Ay)(e.srcDark||e.src)},a=(0,c.jsx)(i.A,{className:e.className,sources:r,height:e.height,width:e.width,alt:t,style:e.style});return n?(0,c.jsx)("div",{className:n,children:a}):a}function u(e){const{siteConfig:{title:t}}=(0,a.A)(),{navbar:{title:n,logo:i}}=(0,s.p)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.Ay)(i?.href||"/"),h=n?"":t,m=i?.alt??h;return(0,c.jsxs)(r.A,{to:f,...p,...i?.target&&{target:i.target},children:[i&&(0,c.jsx)(l,{logo:i,alt:m,imageClassName:u}),null!=n&&(0,c.jsx)("b",{className:d,children:n})]})}},92688:(e,t,n)=>{"use strict";n.d(t,{n:()=>i,r:()=>c});var r=n(36672),o=n(36496),a=n(23420);const s=r.createContext(null);function i({children:e,version:t}){return(0,a.jsx)(s.Provider,{value:t,children:e})}function c(){const e=(0,r.useContext)(s);if(null===e)throw new o.dV("DocsVersionProvider");return e}},95843:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,s=n?Symbol.for("react.strict_mode"):60108,i=n?Symbol.for("react.profiler"):60114,c=n?Symbol.for("react.provider"):60109,l=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,_=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case a:case i:case s:case f:return e;default:switch(e=e&&e.$$typeof){case l:case p:case g:case m:case c:return e;default:return t}}case o:return t}}}function w(e){return k(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=l,t.ContextProvider=c,t.Element=r,t.ForwardRef=p,t.Fragment=a,t.Lazy=g,t.Memo=m,t.Portal=o,t.Profiler=i,t.StrictMode=s,t.Suspense=f,t.isAsyncMode=function(e){return w(e)||k(e)===u},t.isConcurrentMode=w,t.isContextConsumer=function(e){return k(e)===l},t.isContextProvider=function(e){return k(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===m},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===i},t.isStrictMode=function(e){return k(e)===s},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===i||e===s||e===f||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===c||e.$$typeof===l||e.$$typeof===p||e.$$typeof===y||e.$$typeof===v||e.$$typeof===_||e.$$typeof===b)},t.typeOf=k},96603:(e,t,n)=>{"use strict";var r=n(36672);function o(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function a(){}var s={d:{f:a,r:function(){throw Error(o(522))},D:a,C:a,L:a,m:a,X:a,S:a,M:a},p:0,findDOMNode:null},i=Symbol.for("react.portal");var c=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function l(e,t){return"font"===e?"":"string"==typeof t?"use-credentials"===t?t:"":void 0}t.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=s,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!t||1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType)throw Error(o(299));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:i,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.flushSync=function(e){var t=c.T,n=s.p;try{if(c.T=null,s.p=2,e)return e()}finally{c.T=t,s.p=n,s.d.f()}},t.preconnect=function(e,t){"string"==typeof e&&(t?t="string"==typeof(t=t.crossOrigin)?"use-credentials"===t?t:"":void 0:t=null,s.d.C(e,t))},t.prefetchDNS=function(e){"string"==typeof e&&s.d.D(e)},t.preinit=function(e,t){if("string"==typeof e&&t&&"string"==typeof t.as){var n=t.as,r=l(n,t.crossOrigin),o="string"==typeof t.integrity?t.integrity:void 0,a="string"==typeof t.fetchPriority?t.fetchPriority:void 0;"style"===n?s.d.S(e,"string"==typeof t.precedence?t.precedence:void 0,{crossOrigin:r,integrity:o,fetchPriority:a}):"script"===n&&s.d.X(e,{crossOrigin:r,integrity:o,fetchPriority:a,nonce:"string"==typeof t.nonce?t.nonce:void 0})}},t.preinitModule=function(e,t){if("string"==typeof e)if("object"==typeof t&&null!==t){if(null==t.as||"script"===t.as){var n=l(t.as,t.crossOrigin);s.d.M(e,{crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0})}}else null==t&&s.d.M(e)},t.preload=function(e,t){if("string"==typeof e&&"object"==typeof t&&null!==t&&"string"==typeof t.as){var n=t.as,r=l(n,t.crossOrigin);s.d.L(e,n,{crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0,type:"string"==typeof t.type?t.type:void 0,fetchPriority:"string"==typeof t.fetchPriority?t.fetchPriority:void 0,referrerPolicy:"string"==typeof t.referrerPolicy?t.referrerPolicy:void 0,imageSrcSet:"string"==typeof t.imageSrcSet?t.imageSrcSet:void 0,imageSizes:"string"==typeof t.imageSizes?t.imageSizes:void 0,media:"string"==typeof t.media?t.media:void 0})}},t.preloadModule=function(e,t){if("string"==typeof e)if(t){var n=l(t.as,t.crossOrigin);s.d.m(e,{as:"string"==typeof t.as&&"script"!==t.as?t.as:void 0,crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0})}else s.d.m(e)},t.requestFormReset=function(e){s.d.r(e)},t.unstable_batchedUpdates=function(e,t){return e(t)},t.useFormState=function(e,t,n){return c.H.useFormState(e,t,n)},t.useFormStatus=function(){return c.H.useHostTransitionStatus()},t.version="19.1.0"},97297:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(36672),o=n(40932);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},s=996;function i({desktopBreakpoint:e=s}={}){const[t,n]=(0,r.useState)(()=>"ssr");return(0,r.useEffect)(()=>{function t(){n(function(e){if(!o.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(e))}return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},97398:(e,t,n)=>{"use strict";n.d(t,{mg:()=>J,vd:()=>V});var r=n(36672),o=n(2736),a=n.n(o),s=n(34072),i=n.n(s),c=n(29597),l=n.n(c),u=n(62945),d=n.n(u);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(o[n]=e[n]);return o}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},y={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},_=Object.keys(g).map(function(e){return g[e]}),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},w=Object.keys(k).reduce(function(e,t){return e[k[t]]=t,e},{}),C=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=C(e,g.TITLE),n=C(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var r=C(e,"defaultTitle");return t||r||void 0},S=function(e){return C(e,"onChangeClientState")||function(){}},M=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return p({},e,t)},{})},E=function(e,t){return t.filter(function(e){return void 0!==e[g.BASE]}).map(function(e){return e[g.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o<r.length;o+=1){var a=r[o].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t},[])},O=function(e,t,n){var r={};return n.filter(function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var o={};n.filter(function(e){for(var n,a=Object.keys(e),s=0;s<a.length;s+=1){var i=a[s],c=i.toLowerCase();-1===t.indexOf(c)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===c&&"stylesheet"===e[c].toLowerCase()||(n=c),-1===t.indexOf(i)||"innerHTML"!==i&&"cssText"!==i&&"itemprop"!==i||(n=i)}if(!n||!e[n])return!1;var l=e[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][l]&&(o[n][l]=!0,!0)}).reverse().forEach(function(t){return e.push(t)});for(var a=Object.keys(o),s=0;s<a.length;s+=1){var i=a[s],c=p({},r[i],o[i]);r[i]=c}return e},[]).reverse()},A=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},j=function(e){return Array.isArray(e)?e.join(""):e},D=function(e,t){return Array.isArray(e)?e.reduce(function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e},{priority:[],default:[]}):{default:e}},P=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},T=[g.NOSCRIPT,g.SCRIPT,g.STYLE],I=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},N=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},L=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[k[n]||n]=e[n],t},t)},R=function(e,t){return t.map(function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach(function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]}),r.createElement(e,a)})},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=L(n,o),[r.createElement(g.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=N(n),a=j(t);return o?"<"+e+' data-rh="true" '+o+">"+I(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+I(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return L(t)},toString:function(){return N(t)}};default:return{toComponent:function(){return R(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var o=Object.keys(r).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,t){var o=void 0===r[t]?t:t+'="'+I(r[t],n)+'"';return e?e+" "+o:o},""),a=r.innerHTML||r.cssText||"",s=-1===T.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(s?"/>":">"+a+"</"+e+">")},"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.noscriptTags,s=e.styleTags,i=e.title,c=void 0===i?"":i,l=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=D(e.metaTags,v),a=D(t,b),s=D(n,y);return{priorityMethods:{toComponent:function(){return[].concat(R(g.META,o.priority),R(g.LINK,a.priority),R(g.SCRIPT,s.priority))},toString:function(){return F(g.META,o.priority,r)+" "+F(g.LINK,a.priority,r)+" "+F(g.SCRIPT,s.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:s.default}}(e);f=h.priorityMethods,u=h.linkTags,d=h.metaTags,p=h.scriptTags}return{priority:f,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",o,r),link:F(g.LINK,u,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,a,r),script:F(g.SCRIPT,p,r),style:F(g.STYLE,s,r),title:F(g.TITLE,{title:c,titleAttributes:l},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),q=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),H="undefined"!=typeof document,V=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);V.canUseDOM=H,V.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},V.defaultProps={context:{}},V.displayName="HelmetProvider";var W=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),s=[];return t&&t.length&&t.forEach(function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some(function(e,t){return n=t,r.isEqualNode(e)})?a.splice(n,1):s.push(r)}),a.forEach(function(e){return e.parentNode.removeChild(e)}),s.forEach(function(e){return r.appendChild(e)}),{oldTags:a,newTags:s}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),s=Object.keys(t),i=0;i<s.length;i+=1){var c=s[i],l=t[c]||"";n.getAttribute(c)!==l&&n.setAttribute(c,l),-1===o.indexOf(c)&&o.push(c);var u=a.indexOf(c);-1!==u&&a.splice(u,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==s.join(",")&&n.setAttribute("data-rh",s.join(","))}},K=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,s=e.noscriptTags,i=e.onChangeClientState,c=e.scriptTags,l=e.styleTags,u=e.title,d=e.titleAttributes;G(g.BODY,e.bodyAttributes),G(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=j(e)),G(g.TITLE,t)}(u,d);var p={baseTag:W(g.BASE,n),linkTags:W(g.LINK,o),metaTags:W(g.META,a),noscriptTags:W(g.NOSCRIPT,s),scriptTags:W(g.SCRIPT,c),styleTags:W(g.STYLE,l)},f={},h={};Object.keys(p).forEach(function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(h[e]=p[e].oldTags)}),t&&t(),i(e,f,h)},Q=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,o=null,a=(e=n.helmetInstances.get().map(function(e){var t=p({},e.props);return delete t.context,t}),{baseTag:E(["href"],e),bodyAttributes:M("bodyAttributes",e),defer:C(e,"defer"),encode:C(e,"encodeSpecialCharacters"),htmlAttributes:M("htmlAttributes",e),linkTags:O(g.LINK,["rel","href"],e),metaTags:O(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:O(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:S(e),scriptTags:O(g.SCRIPT,["src","innerHTML"],e),styleTags:O(g.STYLE,["cssText"],e),title:x(e),titleAttributes:M("titleAttributes",e),prioritizeSeoTags:A(e,"prioritizeSeoTags")});V.canUseDOM?(t=a,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame(function(){K(t,function(){Q=null})}):(K(t),Q=null)):z&&(o=z(a)),r(o)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Y.propTypes={context:q.isRequired},Y.displayName="HelmetDispatcher";var Z=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!i()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,s=e.nestedChildren;switch(r.type){case g.TITLE:return p({},o,((t={})[r.type]=s,t.titleAttributes=p({},a),t));case g.BODY:return p({},o,{bodyAttributes:p({},a)});case g.HTML:return p({},o,{htmlAttributes:p({},a)});default:return p({},o,((n={})[r.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach(function(t){var r;n=p({},n,((r={})[t]=e[t],r))}),n},n.warnOnInvalidChildren=function(e,t){return l()(_.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+_.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),l()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,o={};return r.Children.forEach(e,function(e){if(e&&e.props){var r=e.props,a=r.children,s=m(r,Z),i=Object.keys(s).reduce(function(e,t){return e[w[t]||t]=s[t],e},{}),c=e.type;switch("symbol"==typeof c?c=c.toString():n.warnOnInvalidChildren(e,a),c){case g.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:i,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:i,nestedChildren:a})}}}),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,X),o=p({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof $||(a=new $(a.context,a.instances)),a?r.createElement(Y,p({},o,{context:a.value,helmetData:void 0})):r.createElement(U.Consumer,null,function(e){return r.createElement(Y,p({},o,{context:e}))})},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},99125:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(36672),o=n(4784);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/ModuleCheck/docs","versions":[{"name":"current","label":"Next","isLast":false,"path":"/ModuleCheck/docs/next","mainDocId":"quickstart","docs":[{"id":"ci-workflow","path":"/ModuleCheck/docs/next/ci-workflow","sidebar":"Docs"},{"id":"configuration","path":"/ModuleCheck/docs/next/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/next/","sidebar":"Docs"},{"id":"rules/android/disable_android_resources","path":"/ModuleCheck/docs/next/rules/disable_android_resources","sidebar":"Docs"},{"id":"rules/android/disable_view_binding","path":"/ModuleCheck/docs/next/rules/disable_view_binding","sidebar":"Docs"},{"id":"rules/android/unused_kotlin_android_extensions","path":"/ModuleCheck/docs/next/rules/unused_kotlin_android_extensions","sidebar":"Docs"},{"id":"rules/compiler/custom_kapt_matchers","path":"/ModuleCheck/docs/next/rules/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_plugin","path":"/ModuleCheck/docs/next/rules/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_processor","path":"/ModuleCheck/docs/next/rules/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/compiler/use_anvil_factory_generation","path":"/ModuleCheck/docs/next/rules/use_anvil_factory_generation","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/next/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/next/rules/must_be_api","sidebar":"Docs"},{"id":"rules/overshot_dependency","path":"/ModuleCheck/docs/next/rules/overshot_dependency","sidebar":"Docs"},{"id":"rules/project_depth","path":"/ModuleCheck/docs/next/rules/project_depth","sidebar":"Docs"},{"id":"rules/redundant_dependency","path":"/ModuleCheck/docs/next/rules/redundant_dependency","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/next/rules/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/next/rules/sort_plugins","sidebar":"Docs"},{"id":"rules/unused_dependency","path":"/ModuleCheck/docs/next/rules/unused_dependency","sidebar":"Docs"},{"id":"suppressing-findings","path":"/ModuleCheck/docs/next/suppressing-findings","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/next/","label":"quickstart"}}}},{"name":"0.12.5","label":"0.12.5","isLast":true,"path":"/ModuleCheck/docs","mainDocId":"quickstart","docs":[{"id":"ci-workflow","path":"/ModuleCheck/docs/ci-workflow","sidebar":"Docs"},{"id":"configuration","path":"/ModuleCheck/docs/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/","sidebar":"Docs"},{"id":"rules/android/disable_android_resources","path":"/ModuleCheck/docs/rules/disable_android_resources","sidebar":"Docs"},{"id":"rules/android/disable_view_binding","path":"/ModuleCheck/docs/rules/disable_view_binding","sidebar":"Docs"},{"id":"rules/android/unused_kotlin_android_extensions","path":"/ModuleCheck/docs/rules/unused_kotlin_android_extensions","sidebar":"Docs"},{"id":"rules/compiler/custom_kapt_matchers","path":"/ModuleCheck/docs/rules/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_plugin","path":"/ModuleCheck/docs/rules/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_processor","path":"/ModuleCheck/docs/rules/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/compiler/use_anvil_factory_generation","path":"/ModuleCheck/docs/rules/use_anvil_factory_generation","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/rules/must_be_api","sidebar":"Docs"},{"id":"rules/overshot_dependency","path":"/ModuleCheck/docs/rules/overshot_dependency","sidebar":"Docs"},{"id":"rules/project_depth","path":"/ModuleCheck/docs/rules/project_depth","sidebar":"Docs"},{"id":"rules/redundant_dependency","path":"/ModuleCheck/docs/rules/redundant_dependency","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/rules/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/rules/sort_plugins","sidebar":"Docs"},{"id":"rules/unused_dependency","path":"/ModuleCheck/docs/rules/unused_dependency","sidebar":"Docs"},{"id":"suppressing-findings","path":"/ModuleCheck/docs/suppressing-findings","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/","label":"quickstart"}}}},{"name":"0.12.4","label":"0.12.4","isLast":false,"path":"/ModuleCheck/docs/0.12.4","mainDocId":"quickstart","docs":[{"id":"ci-workflow","path":"/ModuleCheck/docs/0.12.4/ci-workflow","sidebar":"Docs"},{"id":"configuration","path":"/ModuleCheck/docs/0.12.4/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/0.12.4/","sidebar":"Docs"},{"id":"rules/android/disable_android_resources","path":"/ModuleCheck/docs/0.12.4/rules/disable_android_resources","sidebar":"Docs"},{"id":"rules/android/disable_view_binding","path":"/ModuleCheck/docs/0.12.4/rules/disable_view_binding","sidebar":"Docs"},{"id":"rules/android/unused_kotlin_android_extensions","path":"/ModuleCheck/docs/0.12.4/rules/unused_kotlin_android_extensions","sidebar":"Docs"},{"id":"rules/compiler/custom_kapt_matchers","path":"/ModuleCheck/docs/0.12.4/rules/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_plugin","path":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_processor","path":"/ModuleCheck/docs/0.12.4/rules/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/compiler/use_anvil_factory_generation","path":"/ModuleCheck/docs/0.12.4/rules/use_anvil_factory_generation","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/0.12.4/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/0.12.4/rules/must_be_api","sidebar":"Docs"},{"id":"rules/overshot_dependency","path":"/ModuleCheck/docs/0.12.4/rules/overshot_dependency","sidebar":"Docs"},{"id":"rules/project_depth","path":"/ModuleCheck/docs/0.12.4/rules/project_depth","sidebar":"Docs"},{"id":"rules/redundant_dependency","path":"/ModuleCheck/docs/0.12.4/rules/redundant_dependency","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.12.4/rules/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.12.4/rules/sort_plugins","sidebar":"Docs"},{"id":"rules/unused_dependency","path":"/ModuleCheck/docs/0.12.4/rules/unused_dependency","sidebar":"Docs"},{"id":"suppressing-findings","path":"/ModuleCheck/docs/0.12.4/suppressing-findings","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/0.12.4/","label":"quickstart"}}}},{"name":"0.12.3","label":"0.12.3","isLast":false,"path":"/ModuleCheck/docs/0.12.3","mainDocId":"quickstart","docs":[{"id":"ci-workflow","path":"/ModuleCheck/docs/0.12.3/ci-workflow","sidebar":"Docs"},{"id":"configuration","path":"/ModuleCheck/docs/0.12.3/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/0.12.3/","sidebar":"Docs"},{"id":"rules/android/disable_android_resources","path":"/ModuleCheck/docs/0.12.3/rules/disable_android_resources","sidebar":"Docs"},{"id":"rules/android/disable_view_binding","path":"/ModuleCheck/docs/0.12.3/rules/disable_view_binding","sidebar":"Docs"},{"id":"rules/android/unused_kotlin_android_extensions","path":"/ModuleCheck/docs/0.12.3/rules/unused_kotlin_android_extensions","sidebar":"Docs"},{"id":"rules/compiler/custom_kapt_matchers","path":"/ModuleCheck/docs/0.12.3/rules/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_plugin","path":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_processor","path":"/ModuleCheck/docs/0.12.3/rules/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/compiler/use_anvil_factory_generation","path":"/ModuleCheck/docs/0.12.3/rules/use_anvil_factory_generation","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/0.12.3/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/0.12.3/rules/must_be_api","sidebar":"Docs"},{"id":"rules/overshot_dependency","path":"/ModuleCheck/docs/0.12.3/rules/overshot_dependency","sidebar":"Docs"},{"id":"rules/project_depth","path":"/ModuleCheck/docs/0.12.3/rules/project_depth","sidebar":"Docs"},{"id":"rules/redundant_dependency","path":"/ModuleCheck/docs/0.12.3/rules/redundant_dependency","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.12.3/rules/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.12.3/rules/sort_plugins","sidebar":"Docs"},{"id":"rules/unused_dependency","path":"/ModuleCheck/docs/0.12.3/rules/unused_dependency","sidebar":"Docs"},{"id":"suppressing-findings","path":"/ModuleCheck/docs/0.12.3/suppressing-findings","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/0.12.3/","label":"quickstart"}}}},{"name":"0.12.2","label":"0.12.2","isLast":false,"path":"/ModuleCheck/docs/0.12.2","mainDocId":"quickstart","docs":[{"id":"ci-workflow","path":"/ModuleCheck/docs/0.12.2/ci-workflow","sidebar":"Docs"},{"id":"configuration","path":"/ModuleCheck/docs/0.12.2/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/0.12.2/","sidebar":"Docs"},{"id":"rules/android/disable_android_resources","path":"/ModuleCheck/docs/0.12.2/rules/disable_android_resources","sidebar":"Docs"},{"id":"rules/android/disable_view_binding","path":"/ModuleCheck/docs/0.12.2/rules/disable_view_binding","sidebar":"Docs"},{"id":"rules/android/unused_kotlin_android_extensions","path":"/ModuleCheck/docs/0.12.2/rules/unused_kotlin_android_extensions","sidebar":"Docs"},{"id":"rules/compiler/custom_kapt_matchers","path":"/ModuleCheck/docs/0.12.2/rules/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_plugin","path":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_processor","path":"/ModuleCheck/docs/0.12.2/rules/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/compiler/use_anvil_factory_generation","path":"/ModuleCheck/docs/0.12.2/rules/use_anvil_factory_generation","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/0.12.2/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/0.12.2/rules/must_be_api","sidebar":"Docs"},{"id":"rules/overshot_dependency","path":"/ModuleCheck/docs/0.12.2/rules/overshot_dependency","sidebar":"Docs"},{"id":"rules/project_depth","path":"/ModuleCheck/docs/0.12.2/rules/project_depth","sidebar":"Docs"},{"id":"rules/redundant_dependency","path":"/ModuleCheck/docs/0.12.2/rules/redundant_dependency","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.12.2/rules/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.12.2/rules/sort_plugins","sidebar":"Docs"},{"id":"rules/unused_dependency","path":"/ModuleCheck/docs/0.12.2/rules/unused_dependency","sidebar":"Docs"},{"id":"suppressing-findings","path":"/ModuleCheck/docs/0.12.2/suppressing-findings","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/0.12.2/","label":"quickstart"}}}},{"name":"0.12.1","label":"0.12.1","isLast":false,"path":"/ModuleCheck/docs/0.12.1","mainDocId":"quickstart","docs":[{"id":"ci-workflow","path":"/ModuleCheck/docs/0.12.1/ci-workflow","sidebar":"Docs"},{"id":"configuration","path":"/ModuleCheck/docs/0.12.1/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/0.12.1/","sidebar":"Docs"},{"id":"rules/android/disable_android_resources","path":"/ModuleCheck/docs/0.12.1/rules/disable_android_resources","sidebar":"Docs"},{"id":"rules/android/disable_view_binding","path":"/ModuleCheck/docs/0.12.1/rules/disable_view_binding","sidebar":"Docs"},{"id":"rules/android/unused_kotlin_android_extensions","path":"/ModuleCheck/docs/0.12.1/rules/unused_kotlin_android_extensions","sidebar":"Docs"},{"id":"rules/compiler/custom_kapt_matchers","path":"/ModuleCheck/docs/0.12.1/rules/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_plugin","path":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/compiler/unused_kapt_processor","path":"/ModuleCheck/docs/0.12.1/rules/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/compiler/use_anvil_factory_generation","path":"/ModuleCheck/docs/0.12.1/rules/use_anvil_factory_generation","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/0.12.1/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/0.12.1/rules/must_be_api","sidebar":"Docs"},{"id":"rules/overshot_dependency","path":"/ModuleCheck/docs/0.12.1/rules/overshot_dependency","sidebar":"Docs"},{"id":"rules/project_depth","path":"/ModuleCheck/docs/0.12.1/rules/project_depth","sidebar":"Docs"},{"id":"rules/redundant_dependency","path":"/ModuleCheck/docs/0.12.1/rules/redundant_dependency","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.12.1/rules/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.12.1/rules/sort_plugins","sidebar":"Docs"},{"id":"rules/unused_dependency","path":"/ModuleCheck/docs/0.12.1/rules/unused_dependency","sidebar":"Docs"},{"id":"suppressing-findings","path":"/ModuleCheck/docs/0.12.1/suppressing-findings","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/0.12.1/","label":"quickstart"}}}},{"name":"0.12.0","label":"0.12.0","isLast":false,"path":"/ModuleCheck/docs/0.12.0","mainDocId":"quickstart","docs":[{"id":"ci-workflow","path":"/ModuleCheck/docs/0.12.0/ci-workflow","sidebar":"Docs"},{"id":"configuration","path":"/ModuleCheck/docs/0.12.0/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/0.12.0/","sidebar":"Docs"},{"id":"rules/android/disable_resources","path":"/ModuleCheck/docs/0.12.0/rules/android/disable_resources","sidebar":"Docs"},{"id":"rules/android/disable_viewbinding","path":"/ModuleCheck/docs/0.12.0/rules/android/disable_viewbinding","sidebar":"Docs"},{"id":"rules/android/unused_kotlin_android_extensions","path":"/ModuleCheck/docs/0.12.0/rules/android/unused_kotlin_android_extensions","sidebar":"Docs"},{"id":"rules/compiler/could_use_anvil_factory","path":"/ModuleCheck/docs/0.12.0/rules/compiler/could_use_anvil_factory","sidebar":"Docs"},{"id":"rules/depths","path":"/ModuleCheck/docs/0.12.0/rules/depths","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/0.12.0/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/kapt/custom_kapt_matchers","path":"/ModuleCheck/docs/0.12.0/rules/kapt/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_plugin","path":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_processor","path":"/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/0.12.0/rules/must_be_api","sidebar":"Docs"},{"id":"rules/overshot_dependency","path":"/ModuleCheck/docs/0.12.0/rules/overshot_dependency","sidebar":"Docs"},{"id":"rules/redundant_dependency","path":"/ModuleCheck/docs/0.12.0/rules/redundant_dependency","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.12.0/rules/sorting/sort_plugins","sidebar":"Docs"},{"id":"rules/unused","path":"/ModuleCheck/docs/0.12.0/rules/unused","sidebar":"Docs"},{"id":"suppressing-findings","path":"/ModuleCheck/docs/0.12.0/suppressing-findings","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/0.12.0/","label":"quickstart"}}}},{"name":"0.11.3","label":"0.11.3","isLast":false,"path":"/ModuleCheck/docs/0.11.3","mainDocId":"quickstart","docs":[{"id":"ci-workflow","path":"/ModuleCheck/docs/0.11.3/ci-workflow","sidebar":"Docs"},{"id":"configuration","path":"/ModuleCheck/docs/0.11.3/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/0.11.3/","sidebar":"Docs"},{"id":"rules/android/disable_resources","path":"/ModuleCheck/docs/0.11.3/rules/android/disable_resources","sidebar":"Docs"},{"id":"rules/android/disable_viewbinding","path":"/ModuleCheck/docs/0.11.3/rules/android/disable_viewbinding","sidebar":"Docs"},{"id":"rules/compiler/could_use_anvil_factory","path":"/ModuleCheck/docs/0.11.3/rules/compiler/could_use_anvil_factory","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/0.11.3/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/kapt/custom_kapt_matchers","path":"/ModuleCheck/docs/0.11.3/rules/kapt/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_plugin","path":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_processor","path":"/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/0.11.3/rules/must_be_api","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.11.3/rules/sorting/sort_plugins","sidebar":"Docs"},{"id":"rules/unused","path":"/ModuleCheck/docs/0.11.3/rules/unused","sidebar":"Docs"},{"id":"suppressing-findings","path":"/ModuleCheck/docs/0.11.3/suppressing-findings","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/0.11.3/","label":"quickstart"}}}},{"name":"0.11.2","label":"0.11.2","isLast":false,"path":"/ModuleCheck/docs/0.11.2","mainDocId":"quickstart","docs":[{"id":"ci-workflow","path":"/ModuleCheck/docs/0.11.2/ci-workflow","sidebar":"Docs"},{"id":"configuration","path":"/ModuleCheck/docs/0.11.2/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/0.11.2/","sidebar":"Docs"},{"id":"rules/android/disable_resources","path":"/ModuleCheck/docs/0.11.2/rules/android/disable_resources","sidebar":"Docs"},{"id":"rules/android/disable_viewbinding","path":"/ModuleCheck/docs/0.11.2/rules/android/disable_viewbinding","sidebar":"Docs"},{"id":"rules/compiler/could_use_anvil_factory","path":"/ModuleCheck/docs/0.11.2/rules/compiler/could_use_anvil_factory","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/0.11.2/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/kapt/custom_kapt_matchers","path":"/ModuleCheck/docs/0.11.2/rules/kapt/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_plugin","path":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_processor","path":"/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/0.11.2/rules/must_be_api","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.11.2/rules/sorting/sort_plugins","sidebar":"Docs"},{"id":"rules/unused","path":"/ModuleCheck/docs/0.11.2/rules/unused","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/0.11.2/","label":"quickstart"}}}},{"name":"0.11.1","label":"0.11.1","isLast":false,"path":"/ModuleCheck/docs/0.11.1","mainDocId":"quickstart","docs":[{"id":"configuration","path":"/ModuleCheck/docs/0.11.1/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/0.11.1/","sidebar":"Docs"},{"id":"rules/android/disable_resources","path":"/ModuleCheck/docs/0.11.1/rules/android/disable_resources","sidebar":"Docs"},{"id":"rules/android/disable_viewbinding","path":"/ModuleCheck/docs/0.11.1/rules/android/disable_viewbinding","sidebar":"Docs"},{"id":"rules/compiler/could_use_anvil_factory","path":"/ModuleCheck/docs/0.11.1/rules/compiler/could_use_anvil_factory","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/0.11.1/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/kapt/custom_kapt_matchers","path":"/ModuleCheck/docs/0.11.1/rules/kapt/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_plugin","path":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_processor","path":"/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/0.11.1/rules/must_be_api","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.11.1/rules/sorting/sort_plugins","sidebar":"Docs"},{"id":"rules/unused","path":"/ModuleCheck/docs/0.11.1/rules/unused","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/0.11.1/","label":"quickstart"}}}},{"name":"0.11.0","label":"0.11.0","isLast":false,"path":"/ModuleCheck/docs/0.11.0","mainDocId":"quickstart","docs":[{"id":"configuration","path":"/ModuleCheck/docs/0.11.0/configuration","sidebar":"Docs"},{"id":"quickstart","path":"/ModuleCheck/docs/0.11.0/","sidebar":"Docs"},{"id":"rules/android/disable_resources","path":"/ModuleCheck/docs/0.11.0/rules/android/disable_resources","sidebar":"Docs"},{"id":"rules/android/disable_viewbinding","path":"/ModuleCheck/docs/0.11.0/rules/android/disable_viewbinding","sidebar":"Docs"},{"id":"rules/compiler/could_use_anvil_factory","path":"/ModuleCheck/docs/0.11.0/rules/compiler/could_use_anvil_factory","sidebar":"Docs"},{"id":"rules/inherited_dependency","path":"/ModuleCheck/docs/0.11.0/rules/inherited_dependency","sidebar":"Docs"},{"id":"rules/kapt/custom_kapt_matchers","path":"/ModuleCheck/docs/0.11.0/rules/kapt/custom_kapt_matchers","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_plugin","path":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_plugin","sidebar":"Docs"},{"id":"rules/kapt/unused_kapt_processor","path":"/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_processor","sidebar":"Docs"},{"id":"rules/must_be_api","path":"/ModuleCheck/docs/0.11.0/rules/must_be_api","sidebar":"Docs"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_dependencies","sidebar":"Docs"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.11.0/rules/sorting/sort_plugins","sidebar":"Docs"},{"id":"rules/unused","path":"/ModuleCheck/docs/0.11.0/rules/unused","sidebar":"Docs"}],"draftIds":[],"sidebars":{"Docs":{"link":{"path":"/ModuleCheck/docs/0.11.0/","label":"quickstart"}}}},{"name":"0.10.0","label":"0.10.0","isLast":false,"path":"/ModuleCheck/docs/0.10.0","mainDocId":"quickstart","docs":[{"id":"configuration","path":"/ModuleCheck/docs/0.10.0/configuration","sidebar":"Basics"},{"id":"mdx","path":"/ModuleCheck/docs/0.10.0/mdx"},{"id":"quickstart","path":"/ModuleCheck/docs/0.10.0/","sidebar":"Basics"},{"id":"rules/android/disable_resources","path":"/ModuleCheck/docs/0.10.0/rules/android/disable_resources","sidebar":"Rules"},{"id":"rules/android/disable_viewbinding","path":"/ModuleCheck/docs/0.10.0/rules/android/disable_viewbinding","sidebar":"Rules"},{"id":"rules/kapt/custom_kapt_matchers","path":"/ModuleCheck/docs/0.10.0/rules/kapt/custom_kapt_matchers","sidebar":"Rules"},{"id":"rules/kapt/unused_kapt_plugin","path":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_plugin","sidebar":"Rules"},{"id":"rules/kapt/unused_kapt_processor","path":"/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_processor","sidebar":"Rules"},{"id":"rules/overshot","path":"/ModuleCheck/docs/0.10.0/rules/overshot","sidebar":"Rules"},{"id":"rules/redundant","path":"/ModuleCheck/docs/0.10.0/rules/redundant","sidebar":"Rules"},{"id":"rules/sorting/sort_dependencies","path":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_dependencies","sidebar":"Rules"},{"id":"rules/sorting/sort_plugins","path":"/ModuleCheck/docs/0.10.0/rules/sorting/sort_plugins","sidebar":"Rules"},{"id":"rules/unused","path":"/ModuleCheck/docs/0.10.0/rules/unused","sidebar":"Rules"}],"draftIds":[],"sidebars":{"Basics":{"link":{"path":"/ModuleCheck/docs/0.10.0/","label":"quickstart"}},"Rules":{"link":{"path":"/ModuleCheck/docs/0.10.0/rules/unused","label":"rules/unused"}}}}],"breadcrumbs":true}}}'),s=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var i=n(22654);const c=JSON.parse('{"docusaurusVersion":"3.8.1","siteVersion":"0.13.0-SNAPSHOT","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.8.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.8.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.8.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.8.1"},"docusaurus-plugin-svgr":{"type":"package","name":"@docusaurus/plugin-svgr","version":"3.8.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.8.1"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.8.1"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.8.1"}}}');var l=n(23420);const u={siteConfig:o.default,siteMetadata:c,globalData:a,i18n:s,codeTranslations:i},d=r.createContext(u);function p({children:e}){return(0,l.jsx)(d.Provider,{value:u,children:e})}},99298:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})}},e=>{e.O(0,[1869],()=>{return t=17643,e(e.s=t);var t});e.O()}]); \ No newline at end of file diff --git a/assets/js/main.2ca436d8.js.LICENSE.txt b/assets/js/main.2ca436d8.js.LICENSE.txt new file mode 100644 index 0000000000..4c963e46c6 --- /dev/null +++ b/assets/js/main.2ca436d8.js.LICENSE.txt @@ -0,0 +1,61 @@ +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/assets/js/runtime~main.960e6753.js b/assets/js/runtime~main.960e6753.js new file mode 100644 index 0000000000..d272bb0da5 --- /dev/null +++ b/assets/js/runtime~main.960e6753.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,c,a,b,d,f={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={exports:{}};return f[e].call(a.exports,a,a.exports,r),a.exports}r.m=f,e=[],r.O=(c,a,b,d)=>{if(!a){var f=1/0;for(i=0;i<e.length;i++){a=e[i][0],b=e[i][1],d=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&d||f>=d)&&Object.keys(r.O).every(e=>r.O[e](a[o]))?a.splice(o--,1):(t=!1,d<f&&(f=d));if(t){e.splice(i--,1);var n=b();void 0!==n&&(c=n)}}return c}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[a,b,d]},r.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return r.d(c,{a:c}),c},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var f={};c=c||[null,a({}),a([]),a(a)];for(var t=2&b&&e;"object"==typeof t&&!~c.indexOf(t);t=a(t))Object.getOwnPropertyNames(t).forEach(c=>f[c]=()=>e[c]);return f.default=()=>e,r.d(d,f),d},r.d=(e,c)=>{for(var a in c)r.o(c,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:c[a]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((c,a)=>(r.f[a](e,c),c),[])),r.u=e=>"assets/js/"+({12:"4329fc3c",80:"ac2458d6",91:"411bcc8b",183:"d51efe31",228:"09b50579",247:"e819ef22",259:"91e5ca6b",286:"a559ab1c",314:"20c870cb",334:"4577221a",362:"bc7e3c4b",406:"a4e2bd41",463:"b00e7a90",575:"e7f8ca4b",610:"518ccc20",629:"eb10ccf4",646:"0f29fa4c",679:"89d14484",704:"b20814c1",744:"6e6115bc",750:"a35aa088",755:"228d1b45",763:"9ae4b911",825:"5f0d7ee4",832:"107eb4cc",957:"c141421f",998:"1050d62e",1007:"ede96f45",1084:"ca460041",1235:"a7456010",1270:"46d462fa",1273:"171ac7cc",1338:"e4f0c0bc",1349:"ff366317",1381:"cd6f4c97",1472:"400cc4b7",1536:"011d940f",1601:"ca3e6c65",1647:"e4d3d2e1",1658:"de297161",1686:"df248b36",1753:"24af6869",1792:"71174ce3",1815:"9478d12a",1895:"bc73dc9d",1900:"d2866892",1917:"be81e05d",1949:"1483dc01",2016:"7da24252",2090:"51d6008a",2132:"c10c208b",2133:"c5f63adb",2138:"1a4e3797",2271:"53b10fcd",2304:"e0a1aa17",2370:"044a6187",2376:"cd2aa5fe",2406:"c4025719",2410:"87c27ff4",2492:"724ecf1a",2520:"b3a16c5b",2581:"c4b5a5df",2610:"15a9c06b",2634:"c4f5d8e4",2771:"7bab4396",2817:"627bdb5d",2852:"ef46515e",2880:"e69e4b95",2946:"eadc19b4",3108:"e4603b0e",3127:"6e873df7",3149:"a8ed45e8",3263:"cb00cd0b",3361:"c7222430",3388:"99547feb",3508:"4359cab8",3623:"8dac98b9",3641:"c1600862",3715:"50cf1f78",3821:"1a3a5cbb",3832:"d4bc87de",3867:"ca8e7b55",3911:"30f6db9d",3914:"368eb302",3924:"021c8caa",4003:"46e9ac31",4025:"f9546978",4040:"29a2444a",4074:"cb4f58ba",4094:"051962a1",4151:"35179155",4167:"7136df27",4182:"0807349d",4193:"c846d7aa",4196:"23c216bb",4276:"485c5e01",4410:"d69a7b0b",4422:"25072094",4559:"ca873730",4590:"b28afb00",4661:"9469bd80",4663:"a5fc5a0e",4687:"c07a004a",4719:"fde89899",4738:"70335a48",4931:"0fc8e5d5",4955:"388f1aef",4996:"d1cdaf24",5050:"cc640607",5142:"109fab02",5143:"341f4c6e",5184:"c902409b",5235:"cbb899e4",5241:"3e68fbe7",5251:"a180cea5",5264:"b1c76d35",5296:"6bba662b",5326:"d968e4da",5397:"fb031341",5673:"d425c21a",5682:"7c1e7b42",5706:"41bca987",5734:"c5b979b0",5742:"aba21aa0",5802:"5b786e91",5817:"ffeead90",5859:"02359d8a",5939:"66e00e19",6040:"84fb41f0",6061:"1f391b9e",6087:"c0050a27",6150:"048b8cd8",6185:"54f055ef",6288:"99cbfc76",6313:"325152a5",6314:"47da9d80",6360:"7273998d",6364:"de406b5e",6446:"94dc3e5f",6494:"64018eb5",6505:"74876495",6545:"e8303188",6601:"b35da6ab",6644:"aad83134",6673:"f354998b",6678:"b7c223ee",6679:"171f1b26",6720:"10b686c7",6823:"ef09bccd",6884:"f399bb6f",6966:"3abc021e",7042:"5ad15a2f",7079:"2f675600",7098:"a7bd4aaa",7107:"e480558e",7141:"3325f0a2",7155:"05d123c0",7187:"bd7e05cf",7257:"5d2d37cd",7259:"1e828d0d",7286:"4c8a85bd",7399:"75878fc8",7432:"19d61b19",7454:"a5f1db42",7509:"f435945d",7559:"41b23040",7658:"5d624d4b",7671:"eb678835",7842:"71eb5ef4",7914:"2950f807",7930:"1ecac929",7950:"91ee770c",7978:"54b37c16",8020:"324fc7ff",8028:"8e56f135",8029:"1a3bb66a",8043:"c2414a18",8104:"19b95078",8141:"c83ce79b",8179:"50b1f033",8296:"dc7f0b30",8305:"14e1fcc3",8321:"0b199b14",8327:"444a5a58",8355:"3139ff2f",8374:"896d06c5",8401:"17896441",8439:"62cdf0e0",8463:"ba3d50d9",8510:"571f3672",8561:"12b0e932",8596:"3e41c308",8628:"a2d99d88",8705:"a06cff9c",8720:"487ca811",8783:"a4b1a9b8",8861:"e0474f93",8904:"6518a949",8945:"2192b561",9048:"a94703ab",9055:"4e8e2262",9063:"9e2bab8c",9065:"7cbf6be7",9082:"c989d589",9152:"b1002bca",9206:"1c291fdc",9230:"d05f0a7d",9254:"23284c9b",9290:"521dad97",9303:"ce0be35a",9335:"03459661",9369:"e12d7f74",9384:"150ef1cb",9440:"f963ac8e",9479:"341c85ac",9514:"4047c50f",9558:"6033e994",9568:"e5eedb42",9583:"92131bac",9603:"86c82c9a",9647:"5e95c892",9775:"5fd14b8b",9805:"3fb0a163",9961:"abdba85e",9991:"cbe609e8"}[e]||e)+"."+{12:"6bc2d8bb",80:"80ddf71a",91:"06632b9e",183:"8cb4c6e2",228:"52f3f328",247:"1f7644ac",259:"34aeb968",286:"eb18048e",314:"fc120f02",334:"09a7f265",362:"a8fbf2c4",406:"6d1296f7",463:"a49b6a39",570:"43010e8c",575:"e49f8895",610:"ee4eedd4",629:"83c5f603",646:"fc3b20a4",679:"675e28e5",686:"7b631913",704:"bdea7f12",744:"9c665f96",750:"66e7e35f",755:"82366616",763:"287c9823",772:"c108aa20",825:"d029c08e",832:"38fc2a4d",871:"5341b1ea",957:"484a90c2",998:"d5223cec",1007:"13e02b5b",1036:"33ed1cdb",1084:"6b486372",1235:"f7ae1996",1270:"286c2600",1273:"3780a727",1338:"660ed59a",1341:"9dd85c1f",1349:"3645d264",1381:"d2deb129",1472:"f8b9ca7c",1536:"ee325784",1601:"ecb85b48",1608:"b7fc7fa7",1647:"0520673c",1658:"ef4d0adf",1686:"3e0b0a95",1753:"9e5db2d3",1760:"3a07b760",1792:"4f3ede8c",1815:"78d0819f",1874:"e4531d36",1895:"81b9925e",1900:"4829f6b3",1917:"7a86ef3f",1949:"4a6793d2",2016:"97351c6c",2090:"50a9f7f0",2112:"2b03aa07",2132:"a6ca7316",2133:"a5f2c02f",2138:"af9b292e",2271:"34a45138",2304:"e9aa4f41",2342:"25912561",2370:"858142cb",2376:"11b87afe",2406:"ae817c79",2410:"6e6a9d5f",2462:"92c834f6",2492:"9bf4f373",2520:"d3c71a1c",2581:"f6e20324",2610:"fbed8bd4",2634:"3afd3b59",2771:"f58c23ab",2817:"ae8f63fd",2852:"198010c5",2880:"4f61ca79",2946:"06a401e4",3108:"eb25e36b",3127:"fec0e1cb",3149:"71f7c343",3263:"c5dbd77c",3332:"03236ca3",3361:"7a1609fd",3388:"0f4e43ef",3508:"86206a90",3566:"c9d98388",3623:"6fa92e78",3641:"f5c16495",3715:"f7d589c0",3819:"36313666",3821:"8ba00a30",3832:"eb870da7",3867:"318cc4bc",3911:"c745195e",3914:"357b41fd",3924:"5f295dcb",4003:"d214ee12",4025:"0ec94175",4040:"ca3c70d1",4074:"46f93e40",4094:"4cc7a7f7",4151:"c63741dd",4167:"1082e2aa",4182:"731308c1",4193:"eb80452a",4196:"d1f3edb7",4276:"604a9153",4326:"ada317d4",4343:"1d9bdd1e",4410:"901336c8",4422:"ba042603",4477:"2f461e97",4559:"a1e0ddd6",4576:"01fa1abc",4590:"b441d887",4661:"82882490",4663:"d705654f",4687:"f92899db",4719:"a1e49d64",4738:"f86179a4",4931:"38475e52",4955:"4435dd88",4996:"c592a7cf",5050:"57d48479",5142:"1304204c",5143:"7089d269",5163:"86d9e04c",5176:"eef51250",5184:"ea48d292",5235:"d2075ad6",5241:"9af0cab4",5251:"12b75376",5264:"8ff8d553",5296:"e636cc51",5314:"cbe680d3",5326:"5e728ea5",5381:"8b425fa2",5397:"984994de",5673:"2155e74e",5682:"398858f5",5706:"cbb68b80",5734:"ec745dfa",5742:"98fa788f",5802:"375d2adb",5817:"0bf02578",5859:"d06fea6b",5900:"7322453c",5939:"3dc8d15e",6040:"22512b68",6061:"8cf8f13b",6087:"1fdf8fd2",6144:"15fa81c8",6150:"15bd0619",6154:"bd2e6f39",6185:"80b62cae",6288:"bab4b49e",6313:"7841a58f",6314:"8ece4d5e",6360:"6460f2be",6364:"777d18f0",6377:"cb157b13",6446:"08386f01",6494:"14ae6d1d",6505:"62b60152",6538:"749844d5",6545:"d53d0160",6601:"0ba5b2bd",6644:"e45bf932",6673:"75ea0a3d",6678:"81ebafcd",6679:"5b2c51de",6710:"fc711c77",6720:"ac7f610a",6751:"ad5458e5",6823:"a990ad2c",6884:"cf5dbf41",6966:"f63cc35f",6993:"7a3e92a9",7042:"f4fecb23",7079:"bb74ddd9",7098:"2484d96d",7107:"6da81ca1",7141:"1e18f834",7155:"0e3e034d",7187:"d916accd",7257:"b28f062f",7259:"eae29f3f",7286:"a9c6182b",7399:"b7f50444",7432:"e67483c8",7454:"71bce1f9",7509:"f9006091",7559:"971baa32",7658:"a7c617c0",7671:"77a07c94",7798:"e38b8348",7842:"a76ebaef",7914:"da4a2425",7930:"4026d79c",7950:"5b0131e0",7978:"3d14365d",8020:"8b292941",8028:"7be2c54b",8029:"8ca073f7",8043:"a5185bc2",8065:"f8f3def9",8090:"2e2b6ff8",8104:"24dbad74",8134:"afb4adcb",8141:"05c17cb8",8179:"c59eb4a5",8296:"6d808dd0",8297:"828b60c2",8305:"79e08407",8321:"369b6927",8327:"da06fd79",8355:"c26a0908",8374:"7c4b3f7f",8401:"0a191866",8439:"2cdd70b2",8463:"6fdc1a92",8510:"aea1a8e4",8561:"46e840ec",8596:"24bd886f",8628:"bc6419f1",8705:"68c9ad11",8720:"0e457977",8783:"e83ba81c",8824:"a09ae4d0",8861:"a9c558dc",8886:"44c26cb4",8904:"2a328af4",8945:"ddda8f54",9048:"43b485b1",9055:"aa0f58c7",9063:"72214067",9065:"0fd7bef4",9082:"94d486a6",9111:"dd16d8c7",9152:"3d470549",9206:"c1d9c78d",9230:"ebcd5ef9",9254:"20730bf6",9290:"82033bc9",9303:"84e31a7d",9335:"a5ccd375",9369:"b33a1f87",9384:"34b3cc1d",9402:"3e4174f5",9440:"5450a01f",9479:"bf75e08d",9514:"c0b206fe",9538:"d2be03db",9558:"8a9089ba",9568:"302cbb8a",9583:"7edf15d9",9603:"704cb880",9647:"b9e9ae8d",9775:"6409dbe4",9805:"6b305344",9860:"dc06ad47",9961:"26e5806f",9991:"3d5c44f1",9998:"b3ef794d"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),b={},d="modulecheck:",r.l=(e,c,a,f)=>{if(b[e])b[e].push(c);else{var t,o;if(void 0!==a)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==d+a){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+a),t.src=e),b[e]=[c];var l=(c,a)=>{t.onerror=t.onload=null,clearTimeout(s);var d=b[e];if(delete b[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach(e=>e(a)),c)return c(a)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/ModuleCheck/",r.gca=function(e){return e={17896441:"8401",25072094:"4422",35179155:"4151",74876495:"6505","4329fc3c":"12",ac2458d6:"80","411bcc8b":"91",d51efe31:"183","09b50579":"228",e819ef22:"247","91e5ca6b":"259",a559ab1c:"286","20c870cb":"314","4577221a":"334",bc7e3c4b:"362",a4e2bd41:"406",b00e7a90:"463",e7f8ca4b:"575","518ccc20":"610",eb10ccf4:"629","0f29fa4c":"646","89d14484":"679",b20814c1:"704","6e6115bc":"744",a35aa088:"750","228d1b45":"755","9ae4b911":"763","5f0d7ee4":"825","107eb4cc":"832",c141421f:"957","1050d62e":"998",ede96f45:"1007",ca460041:"1084",a7456010:"1235","46d462fa":"1270","171ac7cc":"1273",e4f0c0bc:"1338",ff366317:"1349",cd6f4c97:"1381","400cc4b7":"1472","011d940f":"1536",ca3e6c65:"1601",e4d3d2e1:"1647",de297161:"1658",df248b36:"1686","24af6869":"1753","71174ce3":"1792","9478d12a":"1815",bc73dc9d:"1895",d2866892:"1900",be81e05d:"1917","1483dc01":"1949","7da24252":"2016","51d6008a":"2090",c10c208b:"2132",c5f63adb:"2133","1a4e3797":"2138","53b10fcd":"2271",e0a1aa17:"2304","044a6187":"2370",cd2aa5fe:"2376",c4025719:"2406","87c27ff4":"2410","724ecf1a":"2492",b3a16c5b:"2520",c4b5a5df:"2581","15a9c06b":"2610",c4f5d8e4:"2634","7bab4396":"2771","627bdb5d":"2817",ef46515e:"2852",e69e4b95:"2880",eadc19b4:"2946",e4603b0e:"3108","6e873df7":"3127",a8ed45e8:"3149",cb00cd0b:"3263",c7222430:"3361","99547feb":"3388","4359cab8":"3508","8dac98b9":"3623",c1600862:"3641","50cf1f78":"3715","1a3a5cbb":"3821",d4bc87de:"3832",ca8e7b55:"3867","30f6db9d":"3911","368eb302":"3914","021c8caa":"3924","46e9ac31":"4003",f9546978:"4025","29a2444a":"4040",cb4f58ba:"4074","051962a1":"4094","7136df27":"4167","0807349d":"4182",c846d7aa:"4193","23c216bb":"4196","485c5e01":"4276",d69a7b0b:"4410",ca873730:"4559",b28afb00:"4590","9469bd80":"4661",a5fc5a0e:"4663",c07a004a:"4687",fde89899:"4719","70335a48":"4738","0fc8e5d5":"4931","388f1aef":"4955",d1cdaf24:"4996",cc640607:"5050","109fab02":"5142","341f4c6e":"5143",c902409b:"5184",cbb899e4:"5235","3e68fbe7":"5241",a180cea5:"5251",b1c76d35:"5264","6bba662b":"5296",d968e4da:"5326",fb031341:"5397",d425c21a:"5673","7c1e7b42":"5682","41bca987":"5706",c5b979b0:"5734",aba21aa0:"5742","5b786e91":"5802",ffeead90:"5817","02359d8a":"5859","66e00e19":"5939","84fb41f0":"6040","1f391b9e":"6061",c0050a27:"6087","048b8cd8":"6150","54f055ef":"6185","99cbfc76":"6288","325152a5":"6313","47da9d80":"6314","7273998d":"6360",de406b5e:"6364","94dc3e5f":"6446","64018eb5":"6494",e8303188:"6545",b35da6ab:"6601",aad83134:"6644",f354998b:"6673",b7c223ee:"6678","171f1b26":"6679","10b686c7":"6720",ef09bccd:"6823",f399bb6f:"6884","3abc021e":"6966","5ad15a2f":"7042","2f675600":"7079",a7bd4aaa:"7098",e480558e:"7107","3325f0a2":"7141","05d123c0":"7155",bd7e05cf:"7187","5d2d37cd":"7257","1e828d0d":"7259","4c8a85bd":"7286","75878fc8":"7399","19d61b19":"7432",a5f1db42:"7454",f435945d:"7509","41b23040":"7559","5d624d4b":"7658",eb678835:"7671","71eb5ef4":"7842","2950f807":"7914","1ecac929":"7930","91ee770c":"7950","54b37c16":"7978","324fc7ff":"8020","8e56f135":"8028","1a3bb66a":"8029",c2414a18:"8043","19b95078":"8104",c83ce79b:"8141","50b1f033":"8179",dc7f0b30:"8296","14e1fcc3":"8305","0b199b14":"8321","444a5a58":"8327","3139ff2f":"8355","896d06c5":"8374","62cdf0e0":"8439",ba3d50d9:"8463","571f3672":"8510","12b0e932":"8561","3e41c308":"8596",a2d99d88:"8628",a06cff9c:"8705","487ca811":"8720",a4b1a9b8:"8783",e0474f93:"8861","6518a949":"8904","2192b561":"8945",a94703ab:"9048","4e8e2262":"9055","9e2bab8c":"9063","7cbf6be7":"9065",c989d589:"9082",b1002bca:"9152","1c291fdc":"9206",d05f0a7d:"9230","23284c9b":"9254","521dad97":"9290",ce0be35a:"9303","03459661":"9335",e12d7f74:"9369","150ef1cb":"9384",f963ac8e:"9440","341c85ac":"9479","4047c50f":"9514","6033e994":"9558",e5eedb42:"9568","92131bac":"9583","86c82c9a":"9603","5e95c892":"9647","5fd14b8b":"9775","3fb0a163":"9805",abdba85e:"9961",cbe609e8:"9991"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(c,a)=>{var b=r.o(e,c)?e[c]:void 0;if(0!==b)if(b)a.push(b[2]);else if(/^(1869|5354)$/.test(c))e[c]=0;else{var d=new Promise((a,d)=>b=e[c]=[a,d]);a.push(b[2]=d);var f=r.p+r.u(c),t=new Error;r.l(f,a=>{if(r.o(e,c)&&(0!==(b=e[c])&&(e[c]=void 0),b)){var d=a&&("load"===a.type?"missing":a.type),f=a&&a.target&&a.target.src;t.message="Loading chunk "+c+" failed.\n("+d+": "+f+")",t.name="ChunkLoadError",t.type=d,t.request=f,b[1](t)}},"chunk-"+c,c)}},r.O.j=c=>0===e[c];var c=(c,a)=>{var b,d,f=a[0],t=a[1],o=a[2],n=0;if(f.some(c=>0!==e[c])){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(c&&c(a);n<f.length;n++)d=f[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},a=self.webpackChunkmodulecheck=self.webpackChunkmodulecheck||[];a.forEach(c.bind(null,0)),a.push=c.bind(null,a.push.bind(a))})()})(); \ No newline at end of file diff --git a/changelog/index.html b/changelog/index.html new file mode 100644 index 0000000000..654ff5d784 --- /dev/null +++ b/changelog/index.html @@ -0,0 +1,409 @@ +<!doctype html> +<html lang="en" dir="ltr" class="mdx-wrapper mdx-page plugin-pages plugin-id-default" data-has-hydrated="false"> +<head> +<meta charset="UTF-8"> +<meta name="generator" content="Docusaurus v3.8.1"> +<title data-rh="true">ModuleCheck + + + + + + + +

0.12.5

+

This is a re-release of 0.12.4.

+

🐛 Bug Fixes

+ +

Other Changes

+ +

Full Changelog: https://github.com/RBusarow/ModuleCheck/compare/0.12.3...0.12.5

+

0.12.4

+

This version was published with stale artifacts. Use 0.12.5 instead.

+

0.12.3

+

🐛 Bug Fixes

+
    +
  • fix suppressing findings within the AGP +DSL (#712)
  • +
  • parse the declarations of named companion objects and their +members (#706)
  • +
  • treat annotation processor dependencies the same as runtime dependencies for McProject.uses() +and overshot behavior (#701)
  • +
  • fix false positive for 'unused-dependency' when consuming debug source +from testImplementation @tasomaniac (#685)
  • +
  • revert Kotlin to 1.6.10 to fix build issues in targets using +1.6.10 (#683)
  • +
+

🧰 Maintenance

+
    +
  • Update dependency com.vanniktech:gradle-maven-publish-plugin to +v0.20.0 (#707)
  • +
  • Update dependency com.autonomousapps.dependency-analysis to +v1.4.0 (#698)
  • +
  • Update dependency com.osacky.doctor to +v0.8.1 (#699)
  • +
  • Update docusaurus monorepo to +v2.0.0-beta.21 (#691)
  • +
  • Update kotlinx-coroutines to v1.6.2 (#695)
  • +
  • Update dependency com.autonomousapps.dependency-analysis to +v1.3.0 (#696)
  • +
  • Update dependency com.github.ben-manes.caffeine:caffeine to +v3.1.1 (#694)
  • +
  • remove CI's tests-windows need +for publish-maven-local @RBusarow (#693)
  • +
  • use Caffeine for caching, with LazyDeferred +loaders @RBusarow (#692)
  • +
  • Update dropbox-dependencyGuard to +v0.3.0 (#690)
  • +
  • don't sign -SNAPSHOT +builds @RBusarow (#686)
  • +
  • disable KtLint's broken experimental:type-parameter-list-spacing +rule @RBusarow (#681)
  • +
  • Update crazy-max/ghaction-github-pages action to +v3 (#679)
  • +
  • update changelog for 0.12.2 +release @RBusarow (#680)
  • +
  • Update dependency com.rickbusarow.module-check to +v0.12.2 (#678)
  • +
+

Contributors

+

@RBusarow and @tasomaniac

+

0.12.2

+

🐛 Bug Fixes

+
    +
  • false positives for unused kapt processors which are defined in +additionalKaptMatchers (8c55fd1)
  • +
+

0.12.1

+

🗑 Deprecations

+
    +
  • The names of all findings have been updated/standardized. Any declarations which were suppressing +a finding with the old ID (via @Suppress("someFinding") or //suppress=someFinding) will still +work, but they should be updated to use the new names. +See the migrations guide
  • +
  • The method for defining additionalKaptMatchers in the Gradle DSL has been deprecated, replaced +with the additionalCodeGenerators property and CodeGeneratorBinding. +See the migrations guide
  • +
+

💥 Breaking Changes

+
    +
  • The base :moduleCheck task will now automatically hook into the root project's :check task, if +one +exists. @RBusarow (#611)
  • +
+

🚀 Features

+ +

🐛 Bug Fixes

+
    +
  • don't find must-be-api if the project is already an api dependency +also @RBusarow (#666)
  • +
  • remove AGP and KGP from the plugin's runtime +classpath (079ab9d)
  • +
  • fix matching to custom +kaptMatchers @RBusarow (#658)
  • +
  • properly use settings to determine which kinds of depth output to +create @RBusarow (#647)
  • +
  • fix relative paths for custom graph report +directory @RBusarow (#612)
  • +
  • use type-safe accessor "path" when adding a dependency with type-safe +syntax @RBusarow (#608)
  • +
  • evaluate suppress/noinspection annotations +eagerly @RBusarow (#604)
  • +
  • fixes false negative for unused kapt plugin when there are no +processors @RBusarow (#603)
  • +
  • fix Dagger NoSuchMethodError for dagger.internal.Preconditions.checkNotNullFromProvides in +SNAPSHOT @RBusarow (#570)
  • +
+

🧰 Maintenance

+
    +
  • add a discrete job in CI for publishing to mavenLocal, then cache +it @RBusarow (#668)
  • +
  • update the build classpath baseline for the snapshot build's new +runt… @RBusarow (#664)
  • +
  • use the current SNAPSHOT for plugin +dogfooding @RBusarow (#663)
  • +
  • migrate TestKit tests away from the Specs +DSLs @RBusarow (#660)
  • +
  • hook dependencyGuard into the check +task @RBusarow (#661)
  • +
  • give Dokka explicit dependency upon KtLint tasks and more broadly +dis… @RBusarow (#659)
  • +
  • Update dropbox-dependencyGuard to +v0.2.0 @renovate (#657)
  • +
  • require comments for public APIs in Detekt, and add +baselines @RBusarow (#656)
  • +
  • add dependency-guard and +baselines @RBusarow (#654)
  • +
  • Update dependency prism-react-renderer to +v1.3.3 @renovate (#653)
  • +
  • Update dependency com.android.tools.build:gradle to +v7.2.0 @renovate (#620)
  • +
  • Update actions/setup-java action to +v3 @renovate (#652)
  • +
  • Update dependency com.autonomousapps.dependency-analysis to +v1.2.1 @renovate (#651)
  • +
  • Update actions/upload-artifact action to +v3 @renovate (#629)
  • +
  • Update dependency com.gradleup.auto.manifest to +v2 @renovate (#645)
  • +
  • Update react monorepo to v18 ( +major) @renovate (#646)
  • +
  • remove github actions +caching @RBusarow (#649)
  • +
  • remove +dependabot @RBusarow (#648)
  • +
  • create a shared .gradle cache for TestKit +tests @RBusarow (#640)
  • +
  • add the artifacts-check convention +plugin @RBusarow (#615)
  • +
  • fix incorrect/duplicate maven artifact +ids @RBusarow (#614)
  • +
  • revert KaptMatcher name +to modulecheck.api.KaptMatcher @RBusarow (#613)
  • +
  • +
+

delete ConfiguredModule @RBusarow (#609)

+ +

ℹ️ Website

+ +

Contributors

+

@RBusarow

+

0.12.0

+

💥 Breaking Changes

+
    +
  • The autoCorrect property in the Gradle settings DSL has been removed. Instead, to perform a +check with auto-correct, add the Auto suffix to the task name. +
    # perform all checks and fail if errors are found
    ./gradlew moduleCheck

    # perform all checks and auto-correct if possible
    ./gradlew moduleCheckAuto
    +
  • +
  • Tasks are no longer generated for most individual rules. Instead, rules should be toggled via +the Gradle DSL and can be +invoked +through ./gradlew modulecheck or ./gradlew moduleCheckAuto.
  • +
+

📐 New Rules

+ +

🚀 Features

+
    +
  • Add support for depths, dotviz dependency graph, checkstyle, and plaintext result +reporting @RBusarow (#243)
  • +
+

🐛 Bug Fixes

+
    +
  • Add a test case for false +positive @tasomaniac (#419)
  • +
  • Don't call a dependency overshot if it's already declared in that source +set @RBusarow (#521)
  • +
  • don't try to parse .pngs as +xml @RBusarow (#522)
  • +
  • fix parsing xml resource declarations when there's a dot in the +name @RBusarow (#512)
  • +
  • Fix false positive for unusedDependency when a resource from the dependency is used with R from +the dependent in a downstream +project @RBusarow (#510)
  • +
  • better modeling for generated databinding declarations and +references @RBusarow (#509)
  • +
  • count layout files and @+id/__ declarations as part of a module's +declarations @RBusarow (#499)
  • +
  • Support the alternative usage of kapt +plugin @tasomaniac (#481)
  • +
  • add new dependency declarations even if their transitive source can't be +found @RBusarow (#469)
  • +
  • don't generate BuildConfig if it's ignored in Android +settings @RBusarow (#470)
  • +
  • force single-threaded GroovyLangParser +access @RBusarow (#463)
  • +
  • fix false positive for disableViewBinding when used in debug source set of different +module @RBusarow (#446)
  • +
  • don't swallow a newline when replacing a dependency with a preceding blank +line @RBusarow (#444)
  • +
  • better handling for detecting complex precompiled configuration +names @RBusarow (#442)
  • +
  • support multiple android base +packages @RBusarow (#411)
  • +
  • support .java files without a package +declaration @RBusarow (#400)
  • +
  • strip illegal characters from XML before +parsing @RBusarow (#376)
  • +
  • fix auto-correct when using a non-standard config +name @RBusarow (#368)
  • +
  • fix false positive for kapt processors in non-kapt +configurations @RBusarow (#350)
  • +
  • don't allow projects to inherit +themselves @RBusarow (#343)
  • +
  • update configuration +docs @RBusarow (#335)
  • +
  • always create depth and graph reports when running their explicit +tasks @RBusarow (#332)
  • +
  • collect depth info after applying +changes @RBusarow (#331)
  • +
  • fix testFixtures handling in +OverShotDependencyFinding @RBusarow (#297)
  • +
  • treat testFixtures and the associated main sources like different +projects @RBusarow (#288)
  • +
  • correctly apply the testFixtures(...) wrapper for replaced/added +dependencies @RBusarow (#287)
  • +
+

ℹ️ Website

+ +

Contributors

+

@RBusarow, @diego-gomez-olvera and @tasomaniac

+

0.11.3

+

🚀 Features

+
    +
  • support suppressing findings (#235)
  • +
+

🐛 Bug Fixes

+
    +
  • support testFixtures (#232)
  • +
+

🧰 Maintenance

+
    +
  • Bump kotlinpoet from 1.10.1 to 1.10.2 (#233)
  • +
  • Bump gradle-plugin from 2.3.6 to 2.3.7 (#229)
  • +
+

ℹ️ Website

+
    +
  • use titles in docs code snippets (#237)
  • +
  • clarify CI workflow docs (#221)
  • +
  • add example CI workflow to docs (#220)
  • +
+

0.11.2

+

🐛 Bug Fixes

+
    +
  • support overshot dependencies (#217)
  • +
  • sorting fixes (#215)
  • +
+

0.11.1

+

🐛 Bug Fixes

+
    +
  • support constant or enum declarations in Java +classes (#209)
  • +
  • include generated data/viewbinding objects as +declarations (#208)
  • +
  • support closures in dependency +declarations (#205)
  • +
  • count resources as R references when used in +AndroidManifest.xml (#203)
  • +
+

0.11.0 - Groovy auto-correct support

+

🐛 Bug Fixes

+
    +
  • Support generated manifests (#197)
  • +
  • fix redundant "from: " output (#193)
  • +
  • support Groovy parsing (#190)
  • +
  • capture a finding's log string before it's +fixed (#184)
  • +
  • include class literal expressions when looking for type +references (#177)
  • +
  • check for Android kotlin sources (#173)
  • +
+

0.10.0

+

Initial release

+ + \ No newline at end of file diff --git a/docs/0.10.0/configuration/index.html b/docs/0.10.0/configuration/index.html new file mode 100644 index 0000000000..bb8dbfb0d0 --- /dev/null +++ b/docs/0.10.0/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.10.0

configuration

plugins {
id("com.rickbusarow.module-check") version "0.10.0"
}

moduleCheck {

checks {
redundant.set(false)
disableAndroidResources.set(false)
disableViewBinding.set(false)
}

alwaysIgnore.set(setOf(":test:core-jvm", ":test:core-android"))
ignoreAll.set(setOf(":app_ble"))

additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "Roomigrant",
processor = "com.github.RickBusarow.Roomigrant:RoomigrantCompiler",
annotationImports = listOf(
"dev\\.matrix\\.roomigrant\\.\\*",
"dev\\.matrix\\.roomigrant\\.GenerateRoomMigrations",
"dev\\.matrix\\.roomigrant\\.rules\\.\\*",
"dev\\.matrix\\.roomigrant\\.rules\\.FieldMigrationRule",
"dev\\.matrix\\.roomigrant\\.rules\\.OnMigrationEndRule",
"dev\\.matrix\\.roomigrant\\.rules\\.OnMigrationStartRule"
)
),
modulecheck.api.KaptMatcher(
name = "VMInject",
processor = "my-project.codegen.vminject:processor",
annotationImports = listOf(
"vminject\\.\\*",
"vminject\\.VMInject",
"vminject\\.VMInject\\.Source",
"vminject\\.VMInjectParam",
"vminject\\.VMInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.10.0/index.html b/docs/0.10.0/index.html new file mode 100644 index 0000000000..0556f925df --- /dev/null +++ b/docs/0.10.0/index.html @@ -0,0 +1,21 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.10.0

Quick Start

note

ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.

However, auto-correction of errors is only done by parsing Kotlin files via PSI. Groovy auto-correction is not supported.

+

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.10.0"
}
+

Configuration

+

See configuration for a full list of options.

+
// top-level build.gradle.kts

configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

// top-level build.gradle.kts

moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.10.0/mdx/index.html b/docs/0.10.0/mdx/index.html new file mode 100644 index 0000000000..82ad87b35b --- /dev/null +++ b/docs/0.10.0/mdx/index.html @@ -0,0 +1,16 @@ + + + + + +Powered by MDX | ModuleCheck + + + + + + + +
Version: 0.10.0

Powered by MDX

I can write Markdown alongside my JSX!

+ + \ No newline at end of file diff --git a/docs/0.10.0/rules/android/disable_resources/index.html b/docs/0.10.0/rules/android/disable_resources/index.html new file mode 100644 index 0000000000..1db0b65d64 --- /dev/null +++ b/docs/0.10.0/rules/android/disable_resources/index.html @@ -0,0 +1,16 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.10.0/rules/android/disable_viewbinding/index.html b/docs/0.10.0/rules/android/disable_viewbinding/index.html new file mode 100644 index 0000000000..84fe569f5f --- /dev/null +++ b/docs/0.10.0/rules/android/disable_viewbinding/index.html @@ -0,0 +1,16 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.10.0/rules/kapt/custom_kapt_matchers/index.html b/docs/0.10.0/rules/kapt/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..f60ce52f6a --- /dev/null +++ b/docs/0.10.0/rules/kapt/custom_kapt_matchers/index.html @@ -0,0 +1,16 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.10.0/rules/kapt/unused_kapt_plugin/index.html b/docs/0.10.0/rules/kapt/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..216ed71815 --- /dev/null +++ b/docs/0.10.0/rules/kapt/unused_kapt_plugin/index.html @@ -0,0 +1,16 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.10.0/rules/kapt/unused_kapt_processor/index.html b/docs/0.10.0/rules/kapt/unused_kapt_processor/index.html new file mode 100644 index 0000000000..1a4e60d4bd --- /dev/null +++ b/docs/0.10.0/rules/kapt/unused_kapt_processor/index.html @@ -0,0 +1,16 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.10.0/rules/overshot/index.html b/docs/0.10.0/rules/overshot/index.html new file mode 100644 index 0000000000..9d09a23a11 --- /dev/null +++ b/docs/0.10.0/rules/overshot/index.html @@ -0,0 +1,16 @@ + + + + + +Overshot Dependency | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.10.0/rules/redundant/index.html b/docs/0.10.0/rules/redundant/index.html new file mode 100644 index 0000000000..18996f70e9 --- /dev/null +++ b/docs/0.10.0/rules/redundant/index.html @@ -0,0 +1,16 @@ + + + + + +Redundant Dependency | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.10.0/rules/sorting/sort_dependencies/index.html b/docs/0.10.0/rules/sorting/sort_dependencies/index.html new file mode 100644 index 0000000000..aac1687116 --- /dev/null +++ b/docs/0.10.0/rules/sorting/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.10.0/rules/sorting/sort_plugins/index.html b/docs/0.10.0/rules/sorting/sort_plugins/index.html new file mode 100644 index 0000000000..e8dcfca1a8 --- /dev/null +++ b/docs/0.10.0/rules/sorting/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.10.0/rules/unused/index.html b/docs/0.10.0/rules/unused/index.html new file mode 100644 index 0000000000..82872f364f --- /dev/null +++ b/docs/0.10.0/rules/unused/index.html @@ -0,0 +1,16 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.11.0/configuration/index.html b/docs/0.11.0/configuration/index.html new file mode 100644 index 0000000000..5c745ec074 --- /dev/null +++ b/docs/0.11.0/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.11.0

configuration

plugins {
id("com.rickbusarow.module-check") version "0.11.0"
}

moduleCheck {

autoCorrect = true // default is true
deleteUnused = true // default is false

checks {
overshotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedImplementation = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
alwaysIgnore.set(setOf(":test:core-jvm", ":test:core-android"))

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
ignoreAll.set(setOf(":app"))

additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.11.0/index.html b/docs/0.11.0/index.html new file mode 100644 index 0000000000..e717a45056 --- /dev/null +++ b/docs/0.11.0/index.html @@ -0,0 +1,34 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.11.0

Quick Start

note

ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.

+

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.11.0"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

kapt checks

+
./gradlew moduleCheckKapt
+

sorts

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

unused

+
./gardlew moduleCheckUnused
+

redundant

+
./gradlew moduleCheckRedundant
+

overshot

+
./gradlew moduleCheckOvershot
+

Configuration

+

See configuration for a full list of options.

+
// top-level build.gradle.kts

configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

// top-level build.gradle.kts

moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.0/rules/android/disable_resources/index.html b/docs/0.11.0/rules/android/disable_resources/index.html new file mode 100644 index 0000000000..5f8bdf8ee8 --- /dev/null +++ b/docs/0.11.0/rules/android/disable_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: 0.11.0

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.0/rules/android/disable_viewbinding/index.html b/docs/0.11.0/rules/android/disable_viewbinding/index.html new file mode 100644 index 0000000000..068f73b8fc --- /dev/null +++ b/docs/0.11.0/rules/android/disable_viewbinding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: 0.11.0

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.0/rules/compiler/could_use_anvil_factory/index.html b/docs/0.11.0/rules/compiler/could_use_anvil_factory/index.html new file mode 100644 index 0000000000..7bbe41e1bb --- /dev/null +++ b/docs/0.11.0/rules/compiler/could_use_anvil_factory/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory | ModuleCheck + + + + + + + +
Version: 0.11.0

Could Use Anvil Factory

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or Subcomponents, +and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/0.11.0/rules/inherited_dependency/index.html b/docs/0.11.0/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..b3c1a17300 --- /dev/null +++ b/docs/0.11.0/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.11.0

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/0.11.0/rules/kapt/custom_kapt_matchers/index.html b/docs/0.11.0/rules/kapt/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..b7b23d0d38 --- /dev/null +++ b/docs/0.11.0/rules/kapt/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.11.0

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.11.0/rules/kapt/unused_kapt_plugin/index.html b/docs/0.11.0/rules/kapt/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..48e629a582 --- /dev/null +++ b/docs/0.11.0/rules/kapt/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + +
Version: 0.11.0

Unused Kapt Plugin

If there are no kapt/kaptTest/etc. processor dependencies in a module, there's no point in applying +the org.jetbrains.kotlin.kapt plugin.

+ + \ No newline at end of file diff --git a/docs/0.11.0/rules/kapt/unused_kapt_processor/index.html b/docs/0.11.0/rules/kapt/unused_kapt_processor/index.html new file mode 100644 index 0000000000..62e479c4af --- /dev/null +++ b/docs/0.11.0/rules/kapt/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.11.0

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/0.11.0/rules/must_be_api/index.html b/docs/0.11.0/rules/must_be_api/index.html new file mode 100644 index 0000000000..edbba25104 --- /dev/null +++ b/docs/0.11.0/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.11.0

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/0.11.0/rules/sorting/sort_dependencies/index.html b/docs/0.11.0/rules/sorting/sort_dependencies/index.html new file mode 100644 index 0000000000..871c25a2d0 --- /dev/null +++ b/docs/0.11.0/rules/sorting/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.11.0/rules/sorting/sort_plugins/index.html b/docs/0.11.0/rules/sorting/sort_plugins/index.html new file mode 100644 index 0000000000..e889ea568c --- /dev/null +++ b/docs/0.11.0/rules/sorting/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.11.0/rules/unused/index.html b/docs/0.11.0/rules/unused/index.html new file mode 100644 index 0000000000..07ed068b89 --- /dev/null +++ b/docs/0.11.0/rules/unused/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.11.0

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/0.11.1/configuration/index.html b/docs/0.11.1/configuration/index.html new file mode 100644 index 0000000000..1f62b4c31b --- /dev/null +++ b/docs/0.11.1/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.11.1

configuration

plugins {
id("com.rickbusarow.module-check") version "0.11.0"
}

moduleCheck {

autoCorrect = true // default is true
deleteUnused = true // default is false

checks {
overshotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedImplementation = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
alwaysIgnore.set(setOf(":test:core-jvm", ":test:core-android"))

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
ignoreAll.set(setOf(":app"))

additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.11.1/index.html b/docs/0.11.1/index.html new file mode 100644 index 0000000000..408969b566 --- /dev/null +++ b/docs/0.11.1/index.html @@ -0,0 +1,34 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.11.1

Quick Start

note

ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.

+

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.11.0"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

kapt checks

+
./gradlew moduleCheckKapt
+

sorts

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

unused

+
./gardlew moduleCheckUnused
+

redundant

+
./gradlew moduleCheckRedundant
+

overshot

+
./gradlew moduleCheckOvershot
+

Configuration

+

See configuration for a full list of options.

+
// top-level build.gradle.kts

configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

// top-level build.gradle.kts

moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.1/rules/android/disable_resources/index.html b/docs/0.11.1/rules/android/disable_resources/index.html new file mode 100644 index 0000000000..85d42344ee --- /dev/null +++ b/docs/0.11.1/rules/android/disable_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: 0.11.1

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.1/rules/android/disable_viewbinding/index.html b/docs/0.11.1/rules/android/disable_viewbinding/index.html new file mode 100644 index 0000000000..ac498660f8 --- /dev/null +++ b/docs/0.11.1/rules/android/disable_viewbinding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: 0.11.1

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.1/rules/compiler/could_use_anvil_factory/index.html b/docs/0.11.1/rules/compiler/could_use_anvil_factory/index.html new file mode 100644 index 0000000000..6e06a9d9ca --- /dev/null +++ b/docs/0.11.1/rules/compiler/could_use_anvil_factory/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory | ModuleCheck + + + + + + + +
Version: 0.11.1

Could Use Anvil Factory

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or Subcomponents, +and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/0.11.1/rules/inherited_dependency/index.html b/docs/0.11.1/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..8f39db2c6d --- /dev/null +++ b/docs/0.11.1/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.11.1

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/0.11.1/rules/kapt/custom_kapt_matchers/index.html b/docs/0.11.1/rules/kapt/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..109d3ed7b2 --- /dev/null +++ b/docs/0.11.1/rules/kapt/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.11.1

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.11.1/rules/kapt/unused_kapt_plugin/index.html b/docs/0.11.1/rules/kapt/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..79de5466dd --- /dev/null +++ b/docs/0.11.1/rules/kapt/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + +
Version: 0.11.1

Unused Kapt Plugin

If there are no kapt/kaptTest/etc. processor dependencies in a module, there's no point in applying +the org.jetbrains.kotlin.kapt plugin.

+ + \ No newline at end of file diff --git a/docs/0.11.1/rules/kapt/unused_kapt_processor/index.html b/docs/0.11.1/rules/kapt/unused_kapt_processor/index.html new file mode 100644 index 0000000000..8fc5be58a5 --- /dev/null +++ b/docs/0.11.1/rules/kapt/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.11.1

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/0.11.1/rules/must_be_api/index.html b/docs/0.11.1/rules/must_be_api/index.html new file mode 100644 index 0000000000..4ccaadb409 --- /dev/null +++ b/docs/0.11.1/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.11.1

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/0.11.1/rules/sorting/sort_dependencies/index.html b/docs/0.11.1/rules/sorting/sort_dependencies/index.html new file mode 100644 index 0000000000..aa6b4ad1c8 --- /dev/null +++ b/docs/0.11.1/rules/sorting/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.11.1/rules/sorting/sort_plugins/index.html b/docs/0.11.1/rules/sorting/sort_plugins/index.html new file mode 100644 index 0000000000..f40bb3f8a9 --- /dev/null +++ b/docs/0.11.1/rules/sorting/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.11.1/rules/unused/index.html b/docs/0.11.1/rules/unused/index.html new file mode 100644 index 0000000000..9d83fb2074 --- /dev/null +++ b/docs/0.11.1/rules/unused/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.11.1

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/0.11.2/ci-workflow/index.html b/docs/0.11.2/ci-workflow/index.html new file mode 100644 index 0000000000..bd086c40a4 --- /dev/null +++ b/docs/0.11.2/ci-workflow/index.html @@ -0,0 +1,40 @@ + + + + + +CI Workflow | ModuleCheck + + + + + + + +
Version: 0.11.2

CI Workflow

ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and +automatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to +apply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run. +This is similar to a git pre-commit hook, except the work is delegated to a build server.

+

Using CI over git hooks

+

The traditional method for applying changes automatically is with a git hook, such as pre-commit or +pre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor +developer experience. With a CI task, the execution is done automatically and asynchronously, while +the developer is already moving on to something else.

+

A git hook also technically doesn't guarantee that a task is executed before code is checked in to a +main branch, since there's no guarantee that a hook is enabled. With CI, the task will output a +status check. If a branch protection rule is enabled, that status check can be required. This will +then guarantee that the task has run (successfully) before any code is checked in to the protected +branch.

+

Example Flow chart

+

This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The +cancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an +"optimistic" workflow, in that it assumes that the modulecheck task will not generate changes +which would trigger a restart.

+ +

Example GitHub Action

+

Here's an Action which will run ModuleCheck, then commit any changes +using Stefanzweifel's auto-commit. This +requires a personal access token secret, or the commit step will fail.

+
name: ModuleCheck

on:
pull_request:

jobs:

cancel-stale-jobs:
name: Cancel stale jobs
runs-on: ubuntu-latest

steps:
# cancel previous jobs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

ModuleCheck:
name: ModuleCheck
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
# Must use a personal access token in order to commit changes
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

# performs tree-shaking on the Gradle dependency graph
- name: modulecheck
run: ./gradlew modulecheck --no-daemon

# If ModuleCheck generated changes, commit and push those changes.
# If there are no changes, then this is a no-op.
- name: commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply ModuleCheck changes
commit_options: '--no-verify --signoff'

tests:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

- name: all tests
run: ./gradlew test --no-daemon
+ + \ No newline at end of file diff --git a/docs/0.11.2/configuration/index.html b/docs/0.11.2/configuration/index.html new file mode 100644 index 0000000000..7868b644f2 --- /dev/null +++ b/docs/0.11.2/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.11.2

configuration

plugins {
id("com.rickbusarow.module-check") version "0.11.2"
}

moduleCheck {

autoCorrect = true // default is true
deleteUnused = true // default is false

checks {
overshotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedImplementation = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
alwaysIgnore.set(setOf(":test:core-jvm", ":test:core-android"))

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
ignoreAll.set(setOf(":app"))

additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.11.2/index.html b/docs/0.11.2/index.html new file mode 100644 index 0000000000..da32c096c2 --- /dev/null +++ b/docs/0.11.2/index.html @@ -0,0 +1,34 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.11.2

Quick Start

note

ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.

+

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.11.2"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

kapt checks

+
./gradlew moduleCheckKapt
+

sorts

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

unused

+
./gardlew moduleCheckUnused
+

redundant

+
./gradlew moduleCheckRedundant
+

overshot

+
./gradlew moduleCheckOvershot
+

Configuration

+

See configuration for a full list of options.

+
// top-level build.gradle.kts

configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

// top-level build.gradle.kts

moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.2/rules/android/disable_resources/index.html b/docs/0.11.2/rules/android/disable_resources/index.html new file mode 100644 index 0000000000..455f1e2644 --- /dev/null +++ b/docs/0.11.2/rules/android/disable_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: 0.11.2

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.2/rules/android/disable_viewbinding/index.html b/docs/0.11.2/rules/android/disable_viewbinding/index.html new file mode 100644 index 0000000000..661b7d5264 --- /dev/null +++ b/docs/0.11.2/rules/android/disable_viewbinding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: 0.11.2

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.2/rules/compiler/could_use_anvil_factory/index.html b/docs/0.11.2/rules/compiler/could_use_anvil_factory/index.html new file mode 100644 index 0000000000..9cae0abccf --- /dev/null +++ b/docs/0.11.2/rules/compiler/could_use_anvil_factory/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory | ModuleCheck + + + + + + + +
Version: 0.11.2

Could Use Anvil Factory

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or Subcomponents, +and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/0.11.2/rules/inherited_dependency/index.html b/docs/0.11.2/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..687b6d62d1 --- /dev/null +++ b/docs/0.11.2/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.11.2

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/0.11.2/rules/kapt/custom_kapt_matchers/index.html b/docs/0.11.2/rules/kapt/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..af089c5aab --- /dev/null +++ b/docs/0.11.2/rules/kapt/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.11.2

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.11.2/rules/kapt/unused_kapt_plugin/index.html b/docs/0.11.2/rules/kapt/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..bc0a5897d9 --- /dev/null +++ b/docs/0.11.2/rules/kapt/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + +
Version: 0.11.2

Unused Kapt Plugin

If there are no kapt/kaptTest/etc. processor dependencies in a module, there's no point in applying +the org.jetbrains.kotlin.kapt plugin.

+ + \ No newline at end of file diff --git a/docs/0.11.2/rules/kapt/unused_kapt_processor/index.html b/docs/0.11.2/rules/kapt/unused_kapt_processor/index.html new file mode 100644 index 0000000000..a39981e1dc --- /dev/null +++ b/docs/0.11.2/rules/kapt/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.11.2

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/0.11.2/rules/must_be_api/index.html b/docs/0.11.2/rules/must_be_api/index.html new file mode 100644 index 0000000000..6e9d6a927b --- /dev/null +++ b/docs/0.11.2/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.11.2

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/0.11.2/rules/sorting/sort_dependencies/index.html b/docs/0.11.2/rules/sorting/sort_dependencies/index.html new file mode 100644 index 0000000000..7d08e7a6dd --- /dev/null +++ b/docs/0.11.2/rules/sorting/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.11.2/rules/sorting/sort_plugins/index.html b/docs/0.11.2/rules/sorting/sort_plugins/index.html new file mode 100644 index 0000000000..d0716f3879 --- /dev/null +++ b/docs/0.11.2/rules/sorting/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.11.2/rules/unused/index.html b/docs/0.11.2/rules/unused/index.html new file mode 100644 index 0000000000..bd2dfbeacc --- /dev/null +++ b/docs/0.11.2/rules/unused/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.11.2

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/0.11.3/ci-workflow/index.html b/docs/0.11.3/ci-workflow/index.html new file mode 100644 index 0000000000..a97ebe67fa --- /dev/null +++ b/docs/0.11.3/ci-workflow/index.html @@ -0,0 +1,40 @@ + + + + + +CI Workflow | ModuleCheck + + + + + + + +
Version: 0.11.3

CI Workflow

ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and +automatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to +apply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run. +This is similar to a git pre-commit hook, except the work is delegated to a build server.

+

Using CI over git hooks

+

The traditional method for applying changes automatically is with a git hook, such as pre-commit or +pre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor +developer experience. With a CI task, the execution is done automatically and asynchronously, while +the developer is already moving on to something else.

+

A git hook also technically doesn't guarantee that a task is executed before code is checked in to a +main branch, since there's no guarantee that a hook is enabled. With CI, the task will output a +status check. If a branch protection rule is enabled, that status check can be required. This will +then guarantee that the task has run (successfully) before any code is checked in to the protected +branch.

+

Example Flow chart

+

This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The +cancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an +"optimistic" workflow, in that it assumes that the modulecheck task will not generate changes +which would trigger a restart.

+ +

Example GitHub Action

+

Here's an Action which will run ModuleCheck, then commit any changes +using Stefanzweifel's auto-commit. This +requires a personal access token secret, or the commit step will fail.

+
name: ModuleCheck

on:
pull_request:

jobs:

cancel-stale-jobs:
name: Cancel stale jobs
runs-on: ubuntu-latest

steps:
# cancel previous jobs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

ModuleCheck:
name: ModuleCheck
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
# Must use a personal access token in order to commit changes
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '11'

# performs tree-shaking on the Gradle dependency graph
- name: modulecheck
run: ./gradlew modulecheck --no-daemon

# If ModuleCheck generated changes, commit and push those changes.
# If there are no changes, then this is a no-op.
- name: commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply ModuleCheck changes
commit_options: '--no-verify --signoff'

tests:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

- name: all tests
run: ./gradlew test --no-daemon
+ + \ No newline at end of file diff --git a/docs/0.11.3/configuration/index.html b/docs/0.11.3/configuration/index.html new file mode 100644 index 0000000000..6b87388ea9 --- /dev/null +++ b/docs/0.11.3/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.11.3

configuration

root/build.gradle.kts
plugins {
id("com.rickbusarow.module-check") version "0.11.3"
}

moduleCheck {

deleteUnused = true // default is false

checks {
overShotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedDependency = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
doNotCheck = setOf(":app")

additionalKaptMatchers = listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)

reports {
checkstyle {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"
}
text {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/report.txt"
}
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.3/index.html b/docs/0.11.3/index.html new file mode 100644 index 0000000000..1db5c30bf2 --- /dev/null +++ b/docs/0.11.3/index.html @@ -0,0 +1,34 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.11.3

Quick Start

note

ModuleCheck leverages Gradle for parsing all build logic, so validation works regardless of whether that logic is expressed in Groovy or Kotlin.

+

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.11.2"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

kapt checks

+
./gradlew moduleCheckKapt
+

sorts

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

unused

+
./gardlew moduleCheckUnused
+

redundant

+
./gradlew moduleCheckRedundant
+

overshot

+
./gradlew moduleCheckOvershot
+

Configuration

+

See configuration for a full list of options.

+
root/build.gradle.kts
configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

root/build.gradle.kts
moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.3/rules/android/disable_resources/index.html b/docs/0.11.3/rules/android/disable_resources/index.html new file mode 100644 index 0000000000..712fde337c --- /dev/null +++ b/docs/0.11.3/rules/android/disable_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: 0.11.3

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.3/rules/android/disable_viewbinding/index.html b/docs/0.11.3/rules/android/disable_viewbinding/index.html new file mode 100644 index 0000000000..3ce94dac38 --- /dev/null +++ b/docs/0.11.3/rules/android/disable_viewbinding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: 0.11.3

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.11.3/rules/compiler/could_use_anvil_factory/index.html b/docs/0.11.3/rules/compiler/could_use_anvil_factory/index.html new file mode 100644 index 0000000000..32fc0e5da4 --- /dev/null +++ b/docs/0.11.3/rules/compiler/could_use_anvil_factory/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory | ModuleCheck + + + + + + + +
Version: 0.11.3

Could Use Anvil Factory

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or Subcomponents, +and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/0.11.3/rules/inherited_dependency/index.html b/docs/0.11.3/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..d74dbd0ef3 --- /dev/null +++ b/docs/0.11.3/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.11.3

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/0.11.3/rules/kapt/custom_kapt_matchers/index.html b/docs/0.11.3/rules/kapt/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..fa456702b7 --- /dev/null +++ b/docs/0.11.3/rules/kapt/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.11.3

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.11.3/rules/kapt/unused_kapt_plugin/index.html b/docs/0.11.3/rules/kapt/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..1608a14c7a --- /dev/null +++ b/docs/0.11.3/rules/kapt/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + +
Version: 0.11.3

Unused Kapt Plugin

If there are no kapt/kaptTest/etc. processor dependencies in a module, there's no point in applying +the org.jetbrains.kotlin.kapt plugin.

+ + \ No newline at end of file diff --git a/docs/0.11.3/rules/kapt/unused_kapt_processor/index.html b/docs/0.11.3/rules/kapt/unused_kapt_processor/index.html new file mode 100644 index 0000000000..35ac610246 --- /dev/null +++ b/docs/0.11.3/rules/kapt/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.11.3

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/0.11.3/rules/must_be_api/index.html b/docs/0.11.3/rules/must_be_api/index.html new file mode 100644 index 0000000000..08e84a8a6b --- /dev/null +++ b/docs/0.11.3/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.11.3

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/0.11.3/rules/sorting/sort_dependencies/index.html b/docs/0.11.3/rules/sorting/sort_dependencies/index.html new file mode 100644 index 0000000000..f39f677b8f --- /dev/null +++ b/docs/0.11.3/rules/sorting/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.11.3/rules/sorting/sort_plugins/index.html b/docs/0.11.3/rules/sorting/sort_plugins/index.html new file mode 100644 index 0000000000..43965f4567 --- /dev/null +++ b/docs/0.11.3/rules/sorting/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.11.3/rules/unused/index.html b/docs/0.11.3/rules/unused/index.html new file mode 100644 index 0000000000..67aa1e00d9 --- /dev/null +++ b/docs/0.11.3/rules/unused/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.11.3

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/0.11.3/suppressing-findings/index.html b/docs/0.11.3/suppressing-findings/index.html new file mode 100644 index 0000000000..4838262bd8 --- /dev/null +++ b/docs/0.11.3/suppressing-findings/index.html @@ -0,0 +1,19 @@ + + + + + +Suppressing Findings | ModuleCheck + + + + + + + +
Version: 0.11.3

Suppressing Findings

You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.

+

The name of the check to disable can be found in the name column of console output:

+
> Task :moduleCheck
ModuleCheck found 3 issues in 6.157 seconds

:app
dependency name build file
:fat-and-leaky inheritedDependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:fat-and-leaky mustBeApi /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:unused-lib unusedDependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):

+
build.gradle.kts
@Suppress("mustBeApi") // don't switch anything to an api config
dependencies {

@Suppress("unusedDependency") // don't comment out or delete this dependency
implementation(project(":unused-lib"))

@Suppress("inheritedDependency") // don't add dependencies which are inherited from this fat jar
implementation(project(":fat-and-leaky"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.0/ci-workflow/index.html b/docs/0.12.0/ci-workflow/index.html new file mode 100644 index 0000000000..eea8c23d6c --- /dev/null +++ b/docs/0.12.0/ci-workflow/index.html @@ -0,0 +1,40 @@ + + + + + +CI Workflow | ModuleCheck + + + + + + + +
Version: 0.12.0

CI Workflow

ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and +automatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to +apply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run. +This is similar to a git pre-commit hook, except the work is delegated to a build server.

+

Using CI over git hooks

+

The traditional method for applying changes automatically is with a git hook, such as pre-commit or +pre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor +developer experience. With a CI task, the execution is done automatically and asynchronously, while +the developer is already moving on to something else.

+

A git hook also technically doesn't guarantee that a task is executed before code is checked in to a +main branch, since there's no guarantee that a hook is enabled. With CI, the task will output a +status check. If a branch protection rule is enabled, that status check can be required. This will +then guarantee that the task has run (successfully) before any code is checked in to the protected +branch.

+

Example Flow chart

+

This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The +cancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an +"optimistic" workflow, in that it assumes that the modulecheck task will not generate changes +which would trigger a restart.

+ +

Example GitHub Action

+

Here's an Action which will run ModuleCheck, then commit any changes +using Stefanzweifel's auto-commit. This +requires a personal access token secret, or the commit step will fail.

+
name: ModuleCheck

on:
pull_request:

jobs:

cancel-stale-jobs:
name: Cancel stale jobs
runs-on: ubuntu-latest

steps:
# cancel previous jobs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

ModuleCheck:
name: ModuleCheck
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
# Must use a personal access token in order to commit changes
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '11'

# performs tree-shaking on the Gradle dependency graph
- name: modulecheck
run: ./gradlew moduleCheckAuto --no-daemon

# If ModuleCheck generated changes, commit and push those changes.
# If there are no changes, then this is a no-op.
- name: commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply ModuleCheck changes
commit_options: '--no-verify --signoff'

tests:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

- name: all tests
run: ./gradlew test --no-daemon
+ + \ No newline at end of file diff --git a/docs/0.12.0/configuration/index.html b/docs/0.12.0/configuration/index.html new file mode 100644 index 0000000000..d0115ac1cb --- /dev/null +++ b/docs/0.12.0/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.12.0

configuration

root/build.gradle.kts
plugins {
id("com.rickbusarow.module-check") version "0.12.0"
}

moduleCheck {

deleteUnused = true // default is false

checks {
overShotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedDependency = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
unusedKotlinAndroidExtensions = false // default is false
depths = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
doNotCheck = setOf(":app")

additionalKaptMatchers = listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)

reports {
checkstyle {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"
}
depths {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"
}
graphs {
enabled = true // default is false
// The root directory of all generated graphs. If set, directories will be created
// for each module, mirroring the structure of the project. If this property is null,
// graphs will be created in the `build/reports/modulecheck/graphs/` relative
// directory of each project.
outputDir = "${project.buildDir}/reports/modulecheck/graphs"
}
text {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/report.txt"
}
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.0/index.html b/docs/0.12.0/index.html new file mode 100644 index 0000000000..e845943c65 --- /dev/null +++ b/docs/0.12.0/index.html @@ -0,0 +1,33 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.12.0

Quick Start

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
// used for Android Gradle Plugin internally
google()
// Add for SNAPSHOT builds
maven("https://oss.sonatype.org/content/repositories/snapshots/")
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.12.0"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

all checks with auto-correct

+
./gradlew moduleCheckAuto
+

check sorting

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

apply sorting

+
./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto
+

report depths of each module

+
./gradlew moduleCheckDepths
+

generate (module-only) dependency graphs

+
./gradlew moduleCheckGraphs
+

Configuration

+

See configuration for a full list of options.

+
root/build.gradle.kts
configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

root/build.gradle.kts
moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/android/disable_resources/index.html b/docs/0.12.0/rules/android/disable_resources/index.html new file mode 100644 index 0000000000..a9adf58d46 --- /dev/null +++ b/docs/0.12.0/rules/android/disable_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: 0.12.0

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/android/disable_viewbinding/index.html b/docs/0.12.0/rules/android/disable_viewbinding/index.html new file mode 100644 index 0000000000..2f4c199794 --- /dev/null +++ b/docs/0.12.0/rules/android/disable_viewbinding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: 0.12.0

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/android/unused_kotlin_android_extensions/index.html b/docs/0.12.0/rules/android/unused_kotlin_android_extensions/index.html new file mode 100644 index 0000000000..6cf9a984e4 --- /dev/null +++ b/docs/0.12.0/rules/android/unused_kotlin_android_extensions/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kotlin Android Extensions | ModuleCheck + + + + + + + +
Version: 0.12.0

Unused Kotlin Android Extensions

Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any +synthetic imports or deprecated @Parcelize annotation

+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/compiler/could_use_anvil_factory/index.html b/docs/0.12.0/rules/compiler/could_use_anvil_factory/index.html new file mode 100644 index 0000000000..ef5f741eb2 --- /dev/null +++ b/docs/0.12.0/rules/compiler/could_use_anvil_factory/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory | ModuleCheck + + + + + + + +
Version: 0.12.0

Could Use Anvil Factory

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or +Subcomponents, and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/depths/index.html b/docs/0.12.0/rules/depths/index.html new file mode 100644 index 0000000000..1d9361ba0f --- /dev/null +++ b/docs/0.12.0/rules/depths/index.html @@ -0,0 +1,54 @@ + + + + + +Depths | ModuleCheck + + + + + + + +
Version: 0.12.0

Depths

TL;DR - Low depth values mean faster builds and better all-around scalability.

+
+

It's often useful to think of module dependencies as a directed tree +or directed acyclic graph. If a module is a +node, then each module dependency is a child node, and the dependencies of those dependencies are +grand-child nodes.

+

This is especially useful when thinking about build performance, because the parent-child +relationship is clear: child nodes must build before parent nodes.

+ +

In the above example,

+
    +
  • :lib-1 and :lib-2 must be built before :screen-1.
  • +
  • :lib-2 must be build before :screen-2.
  • +
  • :screen-1 and :screen-2 must be built before :app.
  • +
+

It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build +before their parents.

+

Dependencies and Build Concurrency

+

Individual module builds are always done single-threaded, but multiple modules may build in parallel +so long as no module in the set depends upon another module in that set. In the above graph,

+
    +
  • :lib-1 and :lib-2 may build in parallel
  • +
  • :lib-1 and :screen-2 may build in parallel
  • +
  • :scren-1 and :screen-2 may build in parallel
  • +
+

The maximum number of parallel module builds is determined by the structure of the dependency graph +and the number of available processor cores on the machine which is performing the build.

+

Depth

+

Depth refers to the maximum number of edges between a module and each of its leaf nodes in the +project dependency graph.

+

Low depth values indicate a shallow or flat project structure with loose (or no) coupling between +modules. In a full build, these projects scale well with hardware upgrades because they're able to +build all those independent modules in parallel.

+ +

On the other hand, "deep" projects do not offer many opportunities for parallelization. They have +project dependencies which must be built sequentially. They also perform poorly in incremental +builds, because a single change to even a mid-level module invalidates cached builds for half of the +project.

+
+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/inherited_dependency/index.html b/docs/0.12.0/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..fcad07cc90 --- /dev/null +++ b/docs/0.12.0/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.12.0

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/kapt/custom_kapt_matchers/index.html b/docs/0.12.0/rules/kapt/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..ef8e8e740e --- /dev/null +++ b/docs/0.12.0/rules/kapt/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.12.0

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/kapt/unused_kapt_plugin/index.html b/docs/0.12.0/rules/kapt/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..cdea98d2a4 --- /dev/null +++ b/docs/0.12.0/rules/kapt/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.0/rules/kapt/unused_kapt_processor/index.html b/docs/0.12.0/rules/kapt/unused_kapt_processor/index.html new file mode 100644 index 0000000000..e9b69f450d --- /dev/null +++ b/docs/0.12.0/rules/kapt/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.12.0

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/must_be_api/index.html b/docs/0.12.0/rules/must_be_api/index.html new file mode 100644 index 0000000000..a9d0efe76c --- /dev/null +++ b/docs/0.12.0/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.12.0

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/overshot_dependency/index.html b/docs/0.12.0/rules/overshot_dependency/index.html new file mode 100644 index 0000000000..d46901d772 --- /dev/null +++ b/docs/0.12.0/rules/overshot_dependency/index.html @@ -0,0 +1,23 @@ + + + + + +Overshot Dependency | ModuleCheck + + + + + + + +
Version: 0.12.0

Overshot Dependency

Finds project dependencies which aren't used by the declaring configuration, but are used by a +dependent, downstream configuration.

+

For instance, assume that :moduleB declares an implementation dependency upon :moduleA.

+
moduleB/build.gradle.kts
dependencies {
implementation(project(":moduleA"))
}
+

If :moduleB doesn't actually use :moduleA in its main source, but it does use it in test +source, it's an overshot dependency. The declaration should be changed to +use testImplementation:

+
moduleB/build.gradle.kts
dependencies {
testImplementation(project(":moduleA"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/redundant_dependency/index.html b/docs/0.12.0/rules/redundant_dependency/index.html new file mode 100644 index 0000000000..d23bbd0c12 --- /dev/null +++ b/docs/0.12.0/rules/redundant_dependency/index.html @@ -0,0 +1,26 @@ + + + + + +Redundant Dependency | ModuleCheck + + + + + + + +
Version: 0.12.0

Redundant Dependency

caution

This rule creates a brittle dependency graph, because some necessary dependencies are only provided +transitively by other dependencies. Any manual changes to dependencies can have unexpected +consequences downstream.

This rule is not recommended and disabled by default, but it's still available for those who +want to keep their build files as small as possible.

+

Finds project dependencies which are declared as api in other dependency projects, but also +declared in the current project. These dependencies can be removed without actually breaking the +build, since they're still provided by an upstream dependency through the api configuration.

+ +

This is the opposite of the inherited dependency rule, which ensures a stable graph by explicitly +declaring each dependency. Inherited dependency is enabled by default, and is the recommended +approach. Both rules may not be enabled at the same time.

+ + \ No newline at end of file diff --git a/docs/0.12.0/rules/sorting/sort_dependencies/index.html b/docs/0.12.0/rules/sorting/sort_dependencies/index.html new file mode 100644 index 0000000000..333d774455 --- /dev/null +++ b/docs/0.12.0/rules/sorting/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.0/rules/sorting/sort_plugins/index.html b/docs/0.12.0/rules/sorting/sort_plugins/index.html new file mode 100644 index 0000000000..7a9f17651a --- /dev/null +++ b/docs/0.12.0/rules/sorting/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.0/rules/unused/index.html b/docs/0.12.0/rules/unused/index.html new file mode 100644 index 0000000000..e96791a246 --- /dev/null +++ b/docs/0.12.0/rules/unused/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.12.0

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/0.12.0/suppressing-findings/index.html b/docs/0.12.0/suppressing-findings/index.html new file mode 100644 index 0000000000..110ca0d4f7 --- /dev/null +++ b/docs/0.12.0/suppressing-findings/index.html @@ -0,0 +1,19 @@ + + + + + +Suppressing Findings | ModuleCheck + + + + + + + +
Version: 0.12.0

Suppressing Findings

You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.

+

The name of the check to disable can be found in the name column of console output:

+
> Task :moduleCheck
ModuleCheck found 3 issues in 6.157 seconds

:app
dependency name build file
:fat-and-leaky inheritedDependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:fat-and-leaky mustBeApi /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:unused-lib unusedDependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):

+
build.gradle.kts
@Suppress("mustBeApi") // don't switch anything to an api config
dependencies {

@Suppress("unusedDependency") // don't comment out or delete this dependency
implementation(project(":unused-lib"))

@Suppress("inheritedDependency") // don't add dependencies which are inherited from this fat jar
implementation(project(":fat-and-leaky"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.1/ci-workflow/index.html b/docs/0.12.1/ci-workflow/index.html new file mode 100644 index 0000000000..a9e276f47b --- /dev/null +++ b/docs/0.12.1/ci-workflow/index.html @@ -0,0 +1,40 @@ + + + + + +CI Workflow | ModuleCheck + + + + + + + +
Version: 0.12.1

CI Workflow

ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and +automatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to +apply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run. +This is similar to a git pre-commit hook, except the work is delegated to a build server.

+

Using CI over git hooks

+

The traditional method for applying changes automatically is with a git hook, such as pre-commit or +pre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor +developer experience. With a CI task, the execution is done automatically and asynchronously, while +the developer is already moving on to something else.

+

A git hook also technically doesn't guarantee that a task is executed before code is checked in to a +main branch, since there's no guarantee that a hook is enabled. With CI, the task will output a +status check. If a branch protection rule is enabled, that status check can be required. This will +then guarantee that the task has run (successfully) before any code is checked in to the protected +branch.

+

Example Flow chart

+

This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The +cancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an +"optimistic" workflow, in that it assumes that the modulecheck task will not generate changes +which would trigger a restart.

+ +

Example GitHub Action

+

Here's an Action which will run ModuleCheck, then commit any changes +using Stefanzweifel's auto-commit. This +requires a personal access token secret, or the commit step will fail.

+
name: ModuleCheck

on:
pull_request:

jobs:

cancel-stale-jobs:
name: Cancel stale jobs
runs-on: ubuntu-latest

steps:
# cancel previous jobs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

ModuleCheck:
name: ModuleCheck
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
# Must use a personal access token in order to commit changes
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '11'

# performs tree-shaking on the Gradle dependency graph
- name: modulecheck
run: ./gradlew moduleCheckAuto --no-daemon

# If ModuleCheck generated changes, commit and push those changes.
# If there are no changes, then this is a no-op.
- name: commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply ModuleCheck changes
commit_options: '--no-verify --signoff'

tests:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

- name: all tests
run: ./gradlew test --no-daemon
+ + \ No newline at end of file diff --git a/docs/0.12.1/configuration/index.html b/docs/0.12.1/configuration/index.html new file mode 100644 index 0000000000..2a9da9c509 --- /dev/null +++ b/docs/0.12.1/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.12.1

configuration

root/build.gradle.kts
plugins {
id("com.rickbusarow.module-check") version "0.12.1"
}

moduleCheck {

deleteUnused = true // default is false

checks {
overShotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedDependency = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
unusedKotlinAndroidExtensions = false // default is false
depths = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
doNotCheck = setOf(":app")

additionalCodeGenerators = listOf(
modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(
name = "My Processor",
generatorMavenCoordinates = "my-project.codegen:processor",
annotationNames = listOf(
"myproject.MyInject",
"myproject.MyInject.Factory",
"myproject.MyInjectParam",
"myproject.MyInjectModule"
)
)
)

reports {
checkstyle {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"
}
sarif {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"
}
depths {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"
}
graphs {
enabled = true // default is false
// The root directory of all generated graphs. If set, directories will be created
// for each module, mirroring the structure of the project. If this property is null,
// graphs will be created in the `build/reports/modulecheck/graphs/` relative
// directory of each project.
outputDir = "${project.buildDir}/reports/modulecheck/graphs"
}
text {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/report.txt"
}
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.1/index.html b/docs/0.12.1/index.html new file mode 100644 index 0000000000..2c27856e7b --- /dev/null +++ b/docs/0.12.1/index.html @@ -0,0 +1,33 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.12.1

Quick Start

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
// Add for SNAPSHOT builds
maven("https://oss.sonatype.org/content/repositories/snapshots/")
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.12.1"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

all checks with auto-correct

+
./gradlew moduleCheckAuto
+

check sorting

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

apply sorting

+
./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto
+

report depths of each module

+
./gradlew moduleCheckDepths
+

generate (module-only) dependency graphs

+
./gradlew moduleCheckGraphs
+

Configuration

+

See configuration for a full list of options.

+
root/build.gradle.kts
configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

root/build.gradle.kts
moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/custom_kapt_matchers/index.html b/docs/0.12.1/rules/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..6401ed28e9 --- /dev/null +++ b/docs/0.12.1/rules/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.12.1

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/disable_android_resources/index.html b/docs/0.12.1/rules/disable_android_resources/index.html new file mode 100644 index 0000000000..0c273fdff0 --- /dev/null +++ b/docs/0.12.1/rules/disable_android_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: 0.12.1

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/disable_view_binding/index.html b/docs/0.12.1/rules/disable_view_binding/index.html new file mode 100644 index 0000000000..7b655e0006 --- /dev/null +++ b/docs/0.12.1/rules/disable_view_binding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: 0.12.1

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/inherited_dependency/index.html b/docs/0.12.1/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..87a04cfc95 --- /dev/null +++ b/docs/0.12.1/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.12.1

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/must_be_api/index.html b/docs/0.12.1/rules/must_be_api/index.html new file mode 100644 index 0000000000..50695a95b2 --- /dev/null +++ b/docs/0.12.1/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.12.1

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/overshot_dependency/index.html b/docs/0.12.1/rules/overshot_dependency/index.html new file mode 100644 index 0000000000..00429d056f --- /dev/null +++ b/docs/0.12.1/rules/overshot_dependency/index.html @@ -0,0 +1,23 @@ + + + + + +Overshot Dependency | ModuleCheck + + + + + + + +
Version: 0.12.1

Overshot Dependency

Finds project dependencies which aren't used by the declaring configuration, but are used by a +dependent, downstream configuration.

+

For instance, assume that :moduleB declares an implementation dependency upon :moduleA.

+
moduleB/build.gradle.kts
dependencies {
implementation(project(":moduleA"))
}
+

If :moduleB doesn't actually use :moduleA in its main source, but it does use it in test +source, it's an overshot dependency. The declaration should be changed to +use testImplementation:

+
moduleB/build.gradle.kts
dependencies {
testImplementation(project(":moduleA"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/project_depth/index.html b/docs/0.12.1/rules/project_depth/index.html new file mode 100644 index 0000000000..9161ed2737 --- /dev/null +++ b/docs/0.12.1/rules/project_depth/index.html @@ -0,0 +1,54 @@ + + + + + +Project Depth | ModuleCheck + + + + + + + +
Version: 0.12.1

Project Depth

TL;DR - Low depth values mean faster builds and better all-around scalability.

+
+

It's often useful to think of module dependencies as a directed tree +or directed acyclic graph. If a module is a +node, then each module dependency is a child node, and the dependencies of those dependencies are +grand-child nodes.

+

This is especially useful when thinking about build performance, because the parent-child +relationship is clear: child nodes must build before parent nodes.

+ +

In the above example,

+
    +
  • :lib-1 and :lib-2 must be built before :screen-1.
  • +
  • :lib-2 must be build before :screen-2.
  • +
  • :screen-1 and :screen-2 must be built before :app.
  • +
+

It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build +before their parents.

+

Dependencies and Build Concurrency

+

Individual module builds are always done single-threaded, but multiple modules may build in parallel +so long as no module in the set depends upon another module in that set. In the above graph,

+
    +
  • :lib-1 and :lib-2 may build in parallel
  • +
  • :lib-1 and :screen-2 may build in parallel
  • +
  • :scren-1 and :screen-2 may build in parallel
  • +
+

The maximum number of parallel module builds is determined by the structure of the dependency graph +and the number of available processor cores on the machine which is performing the build.

+

Depth

+

Depth refers to the maximum number of edges between a module and each of its leaf nodes in the +project dependency graph.

+

Low depth values indicate a shallow or flat project structure with loose (or no) coupling between +modules. In a full build, these projects scale well with hardware upgrades because they're able to +build all those independent modules in parallel.

+ +

On the other hand, "deep" projects do not offer many opportunities for parallelization. They have +project dependencies which must be built sequentially. They also perform poorly in incremental +builds, because a single change to even a mid-level module invalidates cached builds for half of the +project.

+
+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/redundant_dependency/index.html b/docs/0.12.1/rules/redundant_dependency/index.html new file mode 100644 index 0000000000..0bc859a4b9 --- /dev/null +++ b/docs/0.12.1/rules/redundant_dependency/index.html @@ -0,0 +1,26 @@ + + + + + +Redundant Dependency | ModuleCheck + + + + + + + +
Version: 0.12.1

Redundant Dependency

caution

This rule creates a brittle dependency graph, because some necessary dependencies are only provided +transitively by other dependencies. Any manual changes to dependencies can have unexpected +consequences downstream.

This rule is not recommended and disabled by default, but it's still available for those who +want to keep their build files as small as possible.

+

Finds project dependencies which are declared as api in other dependency projects, but also +declared in the current project. These dependencies can be removed without actually breaking the +build, since they're still provided by an upstream dependency through the api configuration.

+ +

This is the opposite of the inherited dependency rule, which ensures a stable graph by explicitly +declaring each dependency. Inherited dependency is enabled by default, and is the recommended +approach. Both rules may not be enabled at the same time.

+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/sort_dependencies/index.html b/docs/0.12.1/rules/sort_dependencies/index.html new file mode 100644 index 0000000000..9c981710bf --- /dev/null +++ b/docs/0.12.1/rules/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.1/rules/sort_plugins/index.html b/docs/0.12.1/rules/sort_plugins/index.html new file mode 100644 index 0000000000..7788a0f0db --- /dev/null +++ b/docs/0.12.1/rules/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.1/rules/unused_dependency/index.html b/docs/0.12.1/rules/unused_dependency/index.html new file mode 100644 index 0000000000..b494e93e73 --- /dev/null +++ b/docs/0.12.1/rules/unused_dependency/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.12.1

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/unused_kapt_plugin/index.html b/docs/0.12.1/rules/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..bd5bc66890 --- /dev/null +++ b/docs/0.12.1/rules/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.1/rules/unused_kapt_processor/index.html b/docs/0.12.1/rules/unused_kapt_processor/index.html new file mode 100644 index 0000000000..cd0b809459 --- /dev/null +++ b/docs/0.12.1/rules/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.12.1

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/unused_kotlin_android_extensions/index.html b/docs/0.12.1/rules/unused_kotlin_android_extensions/index.html new file mode 100644 index 0000000000..5d7d335ede --- /dev/null +++ b/docs/0.12.1/rules/unused_kotlin_android_extensions/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kotlin Android Extensions | ModuleCheck + + + + + + + +
Version: 0.12.1

Unused Kotlin Android Extensions

Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any +synthetic imports or deprecated @Parcelize annotation

+ + \ No newline at end of file diff --git a/docs/0.12.1/rules/use_anvil_factory_generation/index.html b/docs/0.12.1/rules/use_anvil_factory_generation/index.html new file mode 100644 index 0000000000..13d90afdf0 --- /dev/null +++ b/docs/0.12.1/rules/use_anvil_factory_generation/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory Generation | ModuleCheck + + + + + + + +
Version: 0.12.1

Could Use Anvil Factory Generation

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or +Subcomponents, and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/0.12.1/suppressing-findings/index.html b/docs/0.12.1/suppressing-findings/index.html new file mode 100644 index 0000000000..a1716792c7 --- /dev/null +++ b/docs/0.12.1/suppressing-findings/index.html @@ -0,0 +1,19 @@ + + + + + +Suppressing Findings | ModuleCheck + + + + + + + +
Version: 0.12.1

Suppressing Findings

You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.

+

The name of the check to disable can be found in the name column of console output:

+
> Task :moduleCheck
ModuleCheck found 3 issues in 6.157 seconds

:app
dependency name build file
:fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):

+
build.gradle.kts
@Suppress("must-be-api") // don't switch anything to an api config
dependencies {

@Suppress("unused-dependency") // don't comment out or delete this dependency
implementation(project(":unused-lib"))

@Suppress("inherited-dependency") // don't add dependencies which are inherited from this library
implementation(project(":leaky"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.2/ci-workflow/index.html b/docs/0.12.2/ci-workflow/index.html new file mode 100644 index 0000000000..209584600e --- /dev/null +++ b/docs/0.12.2/ci-workflow/index.html @@ -0,0 +1,40 @@ + + + + + +CI Workflow | ModuleCheck + + + + + + + +
Version: 0.12.2

CI Workflow

ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and +automatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to +apply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run. +This is similar to a git pre-commit hook, except the work is delegated to a build server.

+

Using CI over git hooks

+

The traditional method for applying changes automatically is with a git hook, such as pre-commit or +pre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor +developer experience. With a CI task, the execution is done automatically and asynchronously, while +the developer is already moving on to something else.

+

A git hook also technically doesn't guarantee that a task is executed before code is checked in to a +main branch, since there's no guarantee that a hook is enabled. With CI, the task will output a +status check. If a branch protection rule is enabled, that status check can be required. This will +then guarantee that the task has run (successfully) before any code is checked in to the protected +branch.

+

Example Flow chart

+

This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The +cancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an +"optimistic" workflow, in that it assumes that the modulecheck task will not generate changes +which would trigger a restart.

+ +

Example GitHub Action

+

Here's an Action which will run ModuleCheck, then commit any changes +using Stefanzweifel's auto-commit. This +requires a personal access token secret, or the commit step will fail.

+
name: ModuleCheck

on:
pull_request:

jobs:

cancel-stale-jobs:
name: Cancel stale jobs
runs-on: ubuntu-latest

steps:
# cancel previous jobs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

ModuleCheck:
name: ModuleCheck
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
# Must use a personal access token in order to commit changes
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '11'

# performs tree-shaking on the Gradle dependency graph
- name: modulecheck
run: ./gradlew moduleCheckAuto --no-daemon

# If ModuleCheck generated changes, commit and push those changes.
# If there are no changes, then this is a no-op.
- name: commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply ModuleCheck changes
commit_options: '--no-verify --signoff'

tests:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

- name: all tests
run: ./gradlew test --no-daemon
+ + \ No newline at end of file diff --git a/docs/0.12.2/configuration/index.html b/docs/0.12.2/configuration/index.html new file mode 100644 index 0000000000..aa3dac669e --- /dev/null +++ b/docs/0.12.2/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.12.2

configuration

root/build.gradle.kts
plugins {
id("com.rickbusarow.module-check") version "0.12.2"
}

moduleCheck {

deleteUnused = true // default is false

checks {
overShotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedDependency = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
unusedKotlinAndroidExtensions = false // default is false
depths = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
doNotCheck = setOf(":app")

additionalCodeGenerators = listOf(
modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(
name = "My Processor",
generatorMavenCoordinates = "my-project.codegen:processor",
annotationNames = listOf(
"myproject.MyInject",
"myproject.MyInject.Factory",
"myproject.MyInjectParam",
"myproject.MyInjectModule"
)
)
)

reports {
checkstyle {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"
}
sarif {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"
}
depths {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"
}
graphs {
enabled = true // default is false
// The root directory of all generated graphs. If set, directories will be created
// for each module, mirroring the structure of the project. If this property is null,
// graphs will be created in the `build/reports/modulecheck/graphs/` relative
// directory of each project.
outputDir = "${project.buildDir}/reports/modulecheck/graphs"
}
text {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/report.txt"
}
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.2/index.html b/docs/0.12.2/index.html new file mode 100644 index 0000000000..8318fbd559 --- /dev/null +++ b/docs/0.12.2/index.html @@ -0,0 +1,33 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.12.2

Quick Start

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
// Add for SNAPSHOT builds
maven("https://oss.sonatype.org/content/repositories/snapshots/")
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.12.2"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

all checks with auto-correct

+
./gradlew moduleCheckAuto
+

check sorting

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

apply sorting

+
./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto
+

report depths of each module

+
./gradlew moduleCheckDepths
+

generate (module-only) dependency graphs

+
./gradlew moduleCheckGraphs
+

Configuration

+

See configuration for a full list of options.

+
root/build.gradle.kts
configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

root/build.gradle.kts
moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/custom_kapt_matchers/index.html b/docs/0.12.2/rules/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..ff984a2689 --- /dev/null +++ b/docs/0.12.2/rules/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.12.2

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/disable_android_resources/index.html b/docs/0.12.2/rules/disable_android_resources/index.html new file mode 100644 index 0000000000..db9d422403 --- /dev/null +++ b/docs/0.12.2/rules/disable_android_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: 0.12.2

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/disable_view_binding/index.html b/docs/0.12.2/rules/disable_view_binding/index.html new file mode 100644 index 0000000000..ee376bc95e --- /dev/null +++ b/docs/0.12.2/rules/disable_view_binding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: 0.12.2

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/inherited_dependency/index.html b/docs/0.12.2/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..b96ac0a96c --- /dev/null +++ b/docs/0.12.2/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.12.2

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/must_be_api/index.html b/docs/0.12.2/rules/must_be_api/index.html new file mode 100644 index 0000000000..dea13ffc8e --- /dev/null +++ b/docs/0.12.2/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.12.2

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/overshot_dependency/index.html b/docs/0.12.2/rules/overshot_dependency/index.html new file mode 100644 index 0000000000..c1d02e8d54 --- /dev/null +++ b/docs/0.12.2/rules/overshot_dependency/index.html @@ -0,0 +1,23 @@ + + + + + +Overshot Dependency | ModuleCheck + + + + + + + +
Version: 0.12.2

Overshot Dependency

Finds project dependencies which aren't used by the declaring configuration, but are used by a +dependent, downstream configuration.

+

For instance, assume that :moduleB declares an implementation dependency upon :moduleA.

+
moduleB/build.gradle.kts
dependencies {
implementation(project(":moduleA"))
}
+

If :moduleB doesn't actually use :moduleA in its main source, but it does use it in test +source, it's an overshot dependency. The declaration should be changed to +use testImplementation:

+
moduleB/build.gradle.kts
dependencies {
testImplementation(project(":moduleA"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/project_depth/index.html b/docs/0.12.2/rules/project_depth/index.html new file mode 100644 index 0000000000..31eacad90d --- /dev/null +++ b/docs/0.12.2/rules/project_depth/index.html @@ -0,0 +1,54 @@ + + + + + +Project Depth | ModuleCheck + + + + + + + +
Version: 0.12.2

Project Depth

TL;DR - Low depth values mean faster builds and better all-around scalability.

+
+

It's often useful to think of module dependencies as a directed tree +or directed acyclic graph. If a module is a +node, then each module dependency is a child node, and the dependencies of those dependencies are +grand-child nodes.

+

This is especially useful when thinking about build performance, because the parent-child +relationship is clear: child nodes must build before parent nodes.

+ +

In the above example,

+
    +
  • :lib-1 and :lib-2 must be built before :screen-1.
  • +
  • :lib-2 must be build before :screen-2.
  • +
  • :screen-1 and :screen-2 must be built before :app.
  • +
+

It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build +before their parents.

+

Dependencies and Build Concurrency

+

Individual module builds are always done single-threaded, but multiple modules may build in parallel +so long as no module in the set depends upon another module in that set. In the above graph,

+
    +
  • :lib-1 and :lib-2 may build in parallel
  • +
  • :lib-1 and :screen-2 may build in parallel
  • +
  • :scren-1 and :screen-2 may build in parallel
  • +
+

The maximum number of parallel module builds is determined by the structure of the dependency graph +and the number of available processor cores on the machine which is performing the build.

+

Depth

+

Depth refers to the maximum number of edges between a module and each of its leaf nodes in the +project dependency graph.

+

Low depth values indicate a shallow or flat project structure with loose (or no) coupling between +modules. In a full build, these projects scale well with hardware upgrades because they're able to +build all those independent modules in parallel.

+ +

On the other hand, "deep" projects do not offer many opportunities for parallelization. They have +project dependencies which must be built sequentially. They also perform poorly in incremental +builds, because a single change to even a mid-level module invalidates cached builds for half of the +project.

+
+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/redundant_dependency/index.html b/docs/0.12.2/rules/redundant_dependency/index.html new file mode 100644 index 0000000000..d71af065b6 --- /dev/null +++ b/docs/0.12.2/rules/redundant_dependency/index.html @@ -0,0 +1,26 @@ + + + + + +Redundant Dependency | ModuleCheck + + + + + + + +
Version: 0.12.2

Redundant Dependency

caution

This rule creates a brittle dependency graph, because some necessary dependencies are only provided +transitively by other dependencies. Any manual changes to dependencies can have unexpected +consequences downstream.

This rule is not recommended and disabled by default, but it's still available for those who +want to keep their build files as small as possible.

+

Finds project dependencies which are declared as api in other dependency projects, but also +declared in the current project. These dependencies can be removed without actually breaking the +build, since they're still provided by an upstream dependency through the api configuration.

+ +

This is the opposite of the inherited dependency rule, which ensures a stable graph by explicitly +declaring each dependency. Inherited dependency is enabled by default, and is the recommended +approach. Both rules may not be enabled at the same time.

+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/sort_dependencies/index.html b/docs/0.12.2/rules/sort_dependencies/index.html new file mode 100644 index 0000000000..900e0c8ad9 --- /dev/null +++ b/docs/0.12.2/rules/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.2/rules/sort_plugins/index.html b/docs/0.12.2/rules/sort_plugins/index.html new file mode 100644 index 0000000000..f6b00bb0ea --- /dev/null +++ b/docs/0.12.2/rules/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.2/rules/unused_dependency/index.html b/docs/0.12.2/rules/unused_dependency/index.html new file mode 100644 index 0000000000..34955c36ba --- /dev/null +++ b/docs/0.12.2/rules/unused_dependency/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.12.2

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/unused_kapt_plugin/index.html b/docs/0.12.2/rules/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..204d891036 --- /dev/null +++ b/docs/0.12.2/rules/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.2/rules/unused_kapt_processor/index.html b/docs/0.12.2/rules/unused_kapt_processor/index.html new file mode 100644 index 0000000000..a86b3ded94 --- /dev/null +++ b/docs/0.12.2/rules/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.12.2

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/unused_kotlin_android_extensions/index.html b/docs/0.12.2/rules/unused_kotlin_android_extensions/index.html new file mode 100644 index 0000000000..b9744f7ffe --- /dev/null +++ b/docs/0.12.2/rules/unused_kotlin_android_extensions/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kotlin Android Extensions | ModuleCheck + + + + + + + +
Version: 0.12.2

Unused Kotlin Android Extensions

Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any +synthetic imports or deprecated @Parcelize annotation

+ + \ No newline at end of file diff --git a/docs/0.12.2/rules/use_anvil_factory_generation/index.html b/docs/0.12.2/rules/use_anvil_factory_generation/index.html new file mode 100644 index 0000000000..700435d928 --- /dev/null +++ b/docs/0.12.2/rules/use_anvil_factory_generation/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory Generation | ModuleCheck + + + + + + + +
Version: 0.12.2

Could Use Anvil Factory Generation

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or +Subcomponents, and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/0.12.2/suppressing-findings/index.html b/docs/0.12.2/suppressing-findings/index.html new file mode 100644 index 0000000000..4f18aca485 --- /dev/null +++ b/docs/0.12.2/suppressing-findings/index.html @@ -0,0 +1,19 @@ + + + + + +Suppressing Findings | ModuleCheck + + + + + + + +
Version: 0.12.2

Suppressing Findings

You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.

+

The name of the check to disable can be found in the name column of console output:

+
> Task :moduleCheck
ModuleCheck found 3 issues in 6.157 seconds

:app
dependency name build file
:fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):

+
build.gradle.kts
@Suppress("must-be-api") // don't switch anything to an api config
dependencies {

@Suppress("unused-dependency") // don't comment out or delete this dependency
implementation(project(":unused-lib"))

@Suppress("inherited-dependency") // don't add dependencies which are inherited from this library
implementation(project(":leaky"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.3/ci-workflow/index.html b/docs/0.12.3/ci-workflow/index.html new file mode 100644 index 0000000000..c7029b1a1d --- /dev/null +++ b/docs/0.12.3/ci-workflow/index.html @@ -0,0 +1,40 @@ + + + + + +CI Workflow | ModuleCheck + + + + + + + +
Version: 0.12.3

CI Workflow

ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and +automatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to +apply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run. +This is similar to a git pre-commit hook, except the work is delegated to a build server.

+

Using CI over git hooks

+

The traditional method for applying changes automatically is with a git hook, such as pre-commit or +pre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor +developer experience. With a CI task, the execution is done automatically and asynchronously, while +the developer is already moving on to something else.

+

A git hook also technically doesn't guarantee that a task is executed before code is checked in to a +main branch, since there's no guarantee that a hook is enabled. With CI, the task will output a +status check. If a branch protection rule is enabled, that status check can be required. This will +then guarantee that the task has run (successfully) before any code is checked in to the protected +branch.

+

Example Flow chart

+

This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The +cancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an +"optimistic" workflow, in that it assumes that the modulecheck task will not generate changes +which would trigger a restart.

+ +

Example GitHub Action

+

Here's an Action which will run ModuleCheck, then commit any changes +using Stefanzweifel's auto-commit. This +requires a personal access token secret, or the commit step will fail.

+
name: ModuleCheck

on:
pull_request:

jobs:

cancel-stale-jobs:
name: Cancel stale jobs
runs-on: ubuntu-latest

steps:
# cancel previous jobs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

ModuleCheck:
name: ModuleCheck
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
# Must use a personal access token in order to commit changes
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '11'

# performs tree-shaking on the Gradle dependency graph
- name: modulecheck
run: ./gradlew moduleCheckAuto --no-daemon

# If ModuleCheck generated changes, commit and push those changes.
# If there are no changes, then this is a no-op.
- name: commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply ModuleCheck changes
commit_options: '--no-verify --signoff'

tests:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

- name: all tests
run: ./gradlew test --no-daemon
+ + \ No newline at end of file diff --git a/docs/0.12.3/configuration/index.html b/docs/0.12.3/configuration/index.html new file mode 100644 index 0000000000..e1c0fc589d --- /dev/null +++ b/docs/0.12.3/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.12.3

configuration

root/build.gradle.kts
plugins {
id("com.rickbusarow.module-check") version "0.12.3"
}

moduleCheck {

deleteUnused = true // default is false

checks {
overShotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedDependency = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
unusedKotlinAndroidExtensions = false // default is false
depths = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
doNotCheck = setOf(":app")

additionalCodeGenerators = listOf(
modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(
name = "My Processor",
generatorMavenCoordinates = "my-project.codegen:processor",
annotationNames = listOf(
"myproject.MyInject",
"myproject.MyInject.Factory",
"myproject.MyInjectParam",
"myproject.MyInjectModule"
)
)
)

reports {
checkstyle {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"
}
sarif {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"
}
depths {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"
}
graphs {
enabled = true // default is false
// The root directory of all generated graphs. If set, directories will be created
// for each module, mirroring the structure of the project. If this property is null,
// graphs will be created in the `build/reports/modulecheck/graphs/` relative
// directory of each project.
outputDir = "${project.buildDir}/reports/modulecheck/graphs"
}
text {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/report.txt"
}
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.3/index.html b/docs/0.12.3/index.html new file mode 100644 index 0000000000..3c8de67066 --- /dev/null +++ b/docs/0.12.3/index.html @@ -0,0 +1,33 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.12.3

Quick Start

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
// Add for SNAPSHOT builds
maven("https://oss.sonatype.org/content/repositories/snapshots/")
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.12.3"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

all checks with auto-correct

+
./gradlew moduleCheckAuto
+

check sorting

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

apply sorting

+
./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto
+

report depths of each module

+
./gradlew moduleCheckDepths
+

generate (module-only) dependency graphs

+
./gradlew moduleCheckGraphs
+

Configuration

+

See configuration for a full list of options.

+
root/build.gradle.kts
configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

root/build.gradle.kts
moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/custom_kapt_matchers/index.html b/docs/0.12.3/rules/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..ba16e64352 --- /dev/null +++ b/docs/0.12.3/rules/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.12.3

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/disable_android_resources/index.html b/docs/0.12.3/rules/disable_android_resources/index.html new file mode 100644 index 0000000000..0f6683a3ff --- /dev/null +++ b/docs/0.12.3/rules/disable_android_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: 0.12.3

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/disable_view_binding/index.html b/docs/0.12.3/rules/disable_view_binding/index.html new file mode 100644 index 0000000000..1b86316e2f --- /dev/null +++ b/docs/0.12.3/rules/disable_view_binding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: 0.12.3

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/inherited_dependency/index.html b/docs/0.12.3/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..78aff6e95c --- /dev/null +++ b/docs/0.12.3/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.12.3

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/must_be_api/index.html b/docs/0.12.3/rules/must_be_api/index.html new file mode 100644 index 0000000000..67b0a5e89e --- /dev/null +++ b/docs/0.12.3/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.12.3

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/overshot_dependency/index.html b/docs/0.12.3/rules/overshot_dependency/index.html new file mode 100644 index 0000000000..856db59b4e --- /dev/null +++ b/docs/0.12.3/rules/overshot_dependency/index.html @@ -0,0 +1,23 @@ + + + + + +Overshot Dependency | ModuleCheck + + + + + + + +
Version: 0.12.3

Overshot Dependency

Finds project dependencies which aren't used by the declaring configuration, but are used by a +dependent, downstream configuration.

+

For instance, assume that :moduleB declares an implementation dependency upon :moduleA.

+
moduleB/build.gradle.kts
dependencies {
implementation(project(":moduleA"))
}
+

If :moduleB doesn't actually use :moduleA in its main source, but it does use it in test +source, it's an overshot dependency. The declaration should be changed to +use testImplementation:

+
moduleB/build.gradle.kts
dependencies {
testImplementation(project(":moduleA"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/project_depth/index.html b/docs/0.12.3/rules/project_depth/index.html new file mode 100644 index 0000000000..e3da0be06b --- /dev/null +++ b/docs/0.12.3/rules/project_depth/index.html @@ -0,0 +1,54 @@ + + + + + +Project Depth | ModuleCheck + + + + + + + +
Version: 0.12.3

Project Depth

TL;DR - Low depth values mean faster builds and better all-around scalability.

+
+

It's often useful to think of module dependencies as a directed tree +or directed acyclic graph. If a module is a +node, then each module dependency is a child node, and the dependencies of those dependencies are +grand-child nodes.

+

This is especially useful when thinking about build performance, because the parent-child +relationship is clear: child nodes must build before parent nodes.

+ +

In the above example,

+
    +
  • :lib-1 and :lib-2 must be built before :screen-1.
  • +
  • :lib-2 must be build before :screen-2.
  • +
  • :screen-1 and :screen-2 must be built before :app.
  • +
+

It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build +before their parents.

+

Dependencies and Build Concurrency

+

Individual module builds are always done single-threaded, but multiple modules may build in parallel +so long as no module in the set depends upon another module in that set. In the above graph,

+
    +
  • :lib-1 and :lib-2 may build in parallel
  • +
  • :lib-1 and :screen-2 may build in parallel
  • +
  • :scren-1 and :screen-2 may build in parallel
  • +
+

The maximum number of parallel module builds is determined by the structure of the dependency graph +and the number of available processor cores on the machine which is performing the build.

+

Depth

+

Depth refers to the maximum number of edges between a module and each of its leaf nodes in the +project dependency graph.

+

Low depth values indicate a shallow or flat project structure with loose (or no) coupling between +modules. In a full build, these projects scale well with hardware upgrades because they're able to +build all those independent modules in parallel.

+ +

On the other hand, "deep" projects do not offer many opportunities for parallelization. They have +project dependencies which must be built sequentially. They also perform poorly in incremental +builds, because a single change to even a mid-level module invalidates cached builds for half of the +project.

+
+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/redundant_dependency/index.html b/docs/0.12.3/rules/redundant_dependency/index.html new file mode 100644 index 0000000000..9f9a00f4ff --- /dev/null +++ b/docs/0.12.3/rules/redundant_dependency/index.html @@ -0,0 +1,26 @@ + + + + + +Redundant Dependency | ModuleCheck + + + + + + + +
Version: 0.12.3

Redundant Dependency

caution

This rule creates a brittle dependency graph, because some necessary dependencies are only provided +transitively by other dependencies. Any manual changes to dependencies can have unexpected +consequences downstream.

This rule is not recommended and disabled by default, but it's still available for those who +want to keep their build files as small as possible.

+

Finds project dependencies which are declared as api in other dependency projects, but also +declared in the current project. These dependencies can be removed without actually breaking the +build, since they're still provided by an upstream dependency through the api configuration.

+ +

This is the opposite of the inherited dependency rule, which ensures a stable graph by explicitly +declaring each dependency. Inherited dependency is enabled by default, and is the recommended +approach. Both rules may not be enabled at the same time.

+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/sort_dependencies/index.html b/docs/0.12.3/rules/sort_dependencies/index.html new file mode 100644 index 0000000000..468a3b725e --- /dev/null +++ b/docs/0.12.3/rules/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.3/rules/sort_plugins/index.html b/docs/0.12.3/rules/sort_plugins/index.html new file mode 100644 index 0000000000..833785fbad --- /dev/null +++ b/docs/0.12.3/rules/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.3/rules/unused_dependency/index.html b/docs/0.12.3/rules/unused_dependency/index.html new file mode 100644 index 0000000000..2812df48cd --- /dev/null +++ b/docs/0.12.3/rules/unused_dependency/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.12.3

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/unused_kapt_plugin/index.html b/docs/0.12.3/rules/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..8757bdc411 --- /dev/null +++ b/docs/0.12.3/rules/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.3/rules/unused_kapt_processor/index.html b/docs/0.12.3/rules/unused_kapt_processor/index.html new file mode 100644 index 0000000000..25802f9c11 --- /dev/null +++ b/docs/0.12.3/rules/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.12.3

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/unused_kotlin_android_extensions/index.html b/docs/0.12.3/rules/unused_kotlin_android_extensions/index.html new file mode 100644 index 0000000000..f23713e485 --- /dev/null +++ b/docs/0.12.3/rules/unused_kotlin_android_extensions/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kotlin Android Extensions | ModuleCheck + + + + + + + +
Version: 0.12.3

Unused Kotlin Android Extensions

Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any +synthetic imports or deprecated @Parcelize annotation

+ + \ No newline at end of file diff --git a/docs/0.12.3/rules/use_anvil_factory_generation/index.html b/docs/0.12.3/rules/use_anvil_factory_generation/index.html new file mode 100644 index 0000000000..e80e8d4142 --- /dev/null +++ b/docs/0.12.3/rules/use_anvil_factory_generation/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory Generation | ModuleCheck + + + + + + + +
Version: 0.12.3

Could Use Anvil Factory Generation

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or +Subcomponents, and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/0.12.3/suppressing-findings/index.html b/docs/0.12.3/suppressing-findings/index.html new file mode 100644 index 0000000000..cc636277b5 --- /dev/null +++ b/docs/0.12.3/suppressing-findings/index.html @@ -0,0 +1,19 @@ + + + + + +Suppressing Findings | ModuleCheck + + + + + + + +
Version: 0.12.3

Suppressing Findings

You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.

+

The name of the check to disable can be found in the name column of console output:

+
> Task :moduleCheck
ModuleCheck found 3 issues in 6.157 seconds

:app
dependency name build file
:fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):

+
build.gradle.kts
@Suppress("must-be-api") // don't switch anything to an api config
dependencies {

@Suppress("unused-dependency") // don't comment out or delete this dependency
implementation(project(":unused-lib"))

@Suppress("inherited-dependency") // don't add dependencies which are inherited from this library
implementation(project(":leaky"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.4/ci-workflow/index.html b/docs/0.12.4/ci-workflow/index.html new file mode 100644 index 0000000000..97ecd780f0 --- /dev/null +++ b/docs/0.12.4/ci-workflow/index.html @@ -0,0 +1,40 @@ + + + + + +CI Workflow | ModuleCheck + + + + + + + +
Version: 0.12.4

CI Workflow

ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and +automatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to +apply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run. +This is similar to a git pre-commit hook, except the work is delegated to a build server.

+

Using CI over git hooks

+

The traditional method for applying changes automatically is with a git hook, such as pre-commit or +pre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor +developer experience. With a CI task, the execution is done automatically and asynchronously, while +the developer is already moving on to something else.

+

A git hook also technically doesn't guarantee that a task is executed before code is checked in to a +main branch, since there's no guarantee that a hook is enabled. With CI, the task will output a +status check. If a branch protection rule is enabled, that status check can be required. This will +then guarantee that the task has run (successfully) before any code is checked in to the protected +branch.

+

Example Flow chart

+

This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The +cancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an +"optimistic" workflow, in that it assumes that the modulecheck task will not generate changes +which would trigger a restart.

+ +

Example GitHub Action

+

Here's an Action which will run ModuleCheck, then commit any changes +using Stefanzweifel's auto-commit. This +requires a personal access token secret, or the commit step will fail.

+
name: ModuleCheck

on:
pull_request:

jobs:

cancel-stale-jobs:
name: Cancel stale jobs
runs-on: ubuntu-latest

steps:
# cancel previous jobs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

ModuleCheck:
name: ModuleCheck
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
# Must use a personal access token in order to commit changes
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '11'

# performs tree-shaking on the Gradle dependency graph
- name: modulecheck
run: ./gradlew moduleCheckAuto --no-daemon

# If ModuleCheck generated changes, commit and push those changes.
# If there are no changes, then this is a no-op.
- name: commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply ModuleCheck changes
commit_options: '--no-verify --signoff'

tests:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

- name: all tests
run: ./gradlew test --no-daemon
+ + \ No newline at end of file diff --git a/docs/0.12.4/configuration/index.html b/docs/0.12.4/configuration/index.html new file mode 100644 index 0000000000..1f47245a18 --- /dev/null +++ b/docs/0.12.4/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.12.4

configuration

root/build.gradle.kts
plugins {
id("com.rickbusarow.module-check") version "0.12.4"
}

moduleCheck {

deleteUnused = true // default is false
trace = true // default is false

checks {
overShotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedDependency = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
unusedKotlinAndroidExtensions = false // default is false
depths = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
doNotCheck = setOf(":app")

additionalCodeGenerators = listOf(
modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(
name = "My Processor",
generatorMavenCoordinates = "my-project.codegen:processor",
annotationNames = listOf(
"myproject.MyInject",
"myproject.MyInject.Factory",
"myproject.MyInjectParam",
"myproject.MyInjectModule"
)
)
)

reports {
checkstyle {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"
}
sarif {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"
}
depths {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"
}
graphs {
enabled = true // default is false
// The root directory of all generated graphs. If set, directories will be created
// for each module, mirroring the structure of the project. If this property is null,
// graphs will be created in the `build/reports/modulecheck/graphs/` relative
// directory of each project.
outputDir = "${project.buildDir}/reports/modulecheck/graphs"
}
text {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/report.txt"
}
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.4/index.html b/docs/0.12.4/index.html new file mode 100644 index 0000000000..549e39a8e8 --- /dev/null +++ b/docs/0.12.4/index.html @@ -0,0 +1,33 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.12.4

Quick Start

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
// Add for SNAPSHOT builds
maven("https://oss.sonatype.org/content/repositories/snapshots/")
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.12.4"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

all checks with auto-correct

+
./gradlew moduleCheckAuto
+

check sorting

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

apply sorting

+
./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto
+

report depths of each module

+
./gradlew moduleCheckDepths
+

generate (module-only) dependency graphs

+
./gradlew moduleCheckGraphs
+

Configuration

+

See configuration for a full list of options.

+
root/build.gradle.kts
configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

root/build.gradle.kts
moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/custom_kapt_matchers/index.html b/docs/0.12.4/rules/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..49287c9b8c --- /dev/null +++ b/docs/0.12.4/rules/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.12.4

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/disable_android_resources/index.html b/docs/0.12.4/rules/disable_android_resources/index.html new file mode 100644 index 0000000000..749b5f2f49 --- /dev/null +++ b/docs/0.12.4/rules/disable_android_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: 0.12.4

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/disable_view_binding/index.html b/docs/0.12.4/rules/disable_view_binding/index.html new file mode 100644 index 0000000000..74a0bef30d --- /dev/null +++ b/docs/0.12.4/rules/disable_view_binding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: 0.12.4

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/inherited_dependency/index.html b/docs/0.12.4/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..c2d336f11f --- /dev/null +++ b/docs/0.12.4/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.12.4

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/must_be_api/index.html b/docs/0.12.4/rules/must_be_api/index.html new file mode 100644 index 0000000000..381c7dbd01 --- /dev/null +++ b/docs/0.12.4/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.12.4

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/overshot_dependency/index.html b/docs/0.12.4/rules/overshot_dependency/index.html new file mode 100644 index 0000000000..d43703c954 --- /dev/null +++ b/docs/0.12.4/rules/overshot_dependency/index.html @@ -0,0 +1,23 @@ + + + + + +Overshot Dependency | ModuleCheck + + + + + + + +
Version: 0.12.4

Overshot Dependency

Finds project dependencies which aren't used by the declaring configuration, but are used by a +dependent, downstream configuration.

+

For instance, assume that :moduleB declares an implementation dependency upon :moduleA.

+
moduleB/build.gradle.kts
dependencies {
implementation(project(":moduleA"))
}
+

If :moduleB doesn't actually use :moduleA in its main source, but it does use it in test +source, it's an overshot dependency. The declaration should be changed to +use testImplementation:

+
moduleB/build.gradle.kts
dependencies {
testImplementation(project(":moduleA"))
}
+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/project_depth/index.html b/docs/0.12.4/rules/project_depth/index.html new file mode 100644 index 0000000000..3610360888 --- /dev/null +++ b/docs/0.12.4/rules/project_depth/index.html @@ -0,0 +1,54 @@ + + + + + +Project Depth | ModuleCheck + + + + + + + +
Version: 0.12.4

Project Depth

TL;DR - Low depth values mean faster builds and better all-around scalability.

+
+

It's often useful to think of module dependencies as a directed tree +or directed acyclic graph. If a module is a +node, then each module dependency is a child node, and the dependencies of those dependencies are +grand-child nodes.

+

This is especially useful when thinking about build performance, because the parent-child +relationship is clear: child nodes must build before parent nodes.

+ +

In the above example,

+
    +
  • :lib-1 and :lib-2 must be built before :screen-1.
  • +
  • :lib-2 must be build before :screen-2.
  • +
  • :screen-1 and :screen-2 must be built before :app.
  • +
+

It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build +before their parents.

+

Dependencies and Build Concurrency

+

Individual module builds are always done single-threaded, but multiple modules may build in parallel +so long as no module in the set depends upon another module in that set. In the above graph,

+
    +
  • :lib-1 and :lib-2 may build in parallel
  • +
  • :lib-1 and :screen-2 may build in parallel
  • +
  • :scren-1 and :screen-2 may build in parallel
  • +
+

The maximum number of parallel module builds is determined by the structure of the dependency graph +and the number of available processor cores on the machine which is performing the build.

+

Depth

+

Depth refers to the maximum number of edges between a module and each of its leaf nodes in the +project dependency graph.

+

Low depth values indicate a shallow or flat project structure with loose (or no) coupling between +modules. In a full build, these projects scale well with hardware upgrades because they're able to +build all those independent modules in parallel.

+ +

On the other hand, "deep" projects do not offer many opportunities for parallelization. They have +project dependencies which must be built sequentially. They also perform poorly in incremental +builds, because a single change to even a mid-level module invalidates cached builds for half of the +project.

+
+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/redundant_dependency/index.html b/docs/0.12.4/rules/redundant_dependency/index.html new file mode 100644 index 0000000000..04a46a5506 --- /dev/null +++ b/docs/0.12.4/rules/redundant_dependency/index.html @@ -0,0 +1,26 @@ + + + + + +Redundant Dependency | ModuleCheck + + + + + + + +
Version: 0.12.4

Redundant Dependency

caution

This rule creates a brittle dependency graph, because some necessary dependencies are only provided +transitively by other dependencies. Any manual changes to dependencies can have unexpected +consequences downstream.

This rule is not recommended and disabled by default, but it's still available for those who +want to keep their build files as small as possible.

+

Finds project dependencies which are declared as api in other dependency projects, but also +declared in the current project. These dependencies can be removed without actually breaking the +build, since they're still provided by an upstream dependency through the api configuration.

+ +

This is the opposite of the inherited dependency rule, which ensures a stable graph by explicitly +declaring each dependency. Inherited dependency is enabled by default, and is the recommended +approach. Both rules may not be enabled at the same time.

+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/sort_dependencies/index.html b/docs/0.12.4/rules/sort_dependencies/index.html new file mode 100644 index 0000000000..c80084115c --- /dev/null +++ b/docs/0.12.4/rules/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.4/rules/sort_plugins/index.html b/docs/0.12.4/rules/sort_plugins/index.html new file mode 100644 index 0000000000..2458be3636 --- /dev/null +++ b/docs/0.12.4/rules/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.4/rules/unused_dependency/index.html b/docs/0.12.4/rules/unused_dependency/index.html new file mode 100644 index 0000000000..c20cdffa2c --- /dev/null +++ b/docs/0.12.4/rules/unused_dependency/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.12.4

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/unused_kapt_plugin/index.html b/docs/0.12.4/rules/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..0bbbe59e21 --- /dev/null +++ b/docs/0.12.4/rules/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/0.12.4/rules/unused_kapt_processor/index.html b/docs/0.12.4/rules/unused_kapt_processor/index.html new file mode 100644 index 0000000000..9dfc5b9cc2 --- /dev/null +++ b/docs/0.12.4/rules/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.12.4

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/unused_kotlin_android_extensions/index.html b/docs/0.12.4/rules/unused_kotlin_android_extensions/index.html new file mode 100644 index 0000000000..3f3e00c64e --- /dev/null +++ b/docs/0.12.4/rules/unused_kotlin_android_extensions/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kotlin Android Extensions | ModuleCheck + + + + + + + +
Version: 0.12.4

Unused Kotlin Android Extensions

Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any +synthetic imports or deprecated @Parcelize annotation

+ + \ No newline at end of file diff --git a/docs/0.12.4/rules/use_anvil_factory_generation/index.html b/docs/0.12.4/rules/use_anvil_factory_generation/index.html new file mode 100644 index 0000000000..befb0191ba --- /dev/null +++ b/docs/0.12.4/rules/use_anvil_factory_generation/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory Generation | ModuleCheck + + + + + + + +
Version: 0.12.4

Could Use Anvil Factory Generation

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or +Subcomponents, and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/0.12.4/suppressing-findings/index.html b/docs/0.12.4/suppressing-findings/index.html new file mode 100644 index 0000000000..91fbf45404 --- /dev/null +++ b/docs/0.12.4/suppressing-findings/index.html @@ -0,0 +1,19 @@ + + + + + +Suppressing Findings | ModuleCheck + + + + + + + +
Version: 0.12.4

Suppressing Findings

You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.

+

The name of the check to disable can be found in the name column of console output:

+
> Task :moduleCheck
ModuleCheck found 3 issues in 6.157 seconds

:app
dependency name build file
:fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):

+
build.gradle.kts
@Suppress("must-be-api") // don't switch anything to an api config
dependencies {

@Suppress("unused-dependency") // don't comment out or delete this dependency
implementation(project(":unused-lib"))

@Suppress("inherited-dependency") // don't add dependencies which are inherited from this library
implementation(project(":leaky"))
}
+ + \ No newline at end of file diff --git a/docs/ci-workflow/index.html b/docs/ci-workflow/index.html new file mode 100644 index 0000000000..f9e3cb5b6a --- /dev/null +++ b/docs/ci-workflow/index.html @@ -0,0 +1,40 @@ + + + + + +CI Workflow | ModuleCheck + + + + + + + +
Version: 0.12.5

CI Workflow

ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and +automatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to +apply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run. +This is similar to a git pre-commit hook, except the work is delegated to a build server.

+

Using CI over git hooks

+

The traditional method for applying changes automatically is with a git hook, such as pre-commit or +pre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor +developer experience. With a CI task, the execution is done automatically and asynchronously, while +the developer is already moving on to something else.

+

A git hook also technically doesn't guarantee that a task is executed before code is checked in to a +main branch, since there's no guarantee that a hook is enabled. With CI, the task will output a +status check. If a branch protection rule is enabled, that status check can be required. This will +then guarantee that the task has run (successfully) before any code is checked in to the protected +branch.

+

Example Flow chart

+

This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The +cancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an +"optimistic" workflow, in that it assumes that the modulecheck task will not generate changes +which would trigger a restart.

+ +

Example GitHub Action

+

Here's an Action which will run ModuleCheck, then commit any changes +using Stefanzweifel's auto-commit. This +requires a personal access token secret, or the commit step will fail.

+
name: ModuleCheck

on:
pull_request:

jobs:

cancel-stale-jobs:
name: Cancel stale jobs
runs-on: ubuntu-latest

steps:
# cancel previous jobs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

ModuleCheck:
name: ModuleCheck
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
# Must use a personal access token in order to commit changes
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '11'

# performs tree-shaking on the Gradle dependency graph
- name: modulecheck
run: ./gradlew moduleCheckAuto --no-daemon

# If ModuleCheck generated changes, commit and push those changes.
# If there are no changes, then this is a no-op.
- name: commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply ModuleCheck changes
commit_options: '--no-verify --signoff'

tests:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

- name: all tests
run: ./gradlew test --no-daemon
+ + \ No newline at end of file diff --git a/docs/configuration/index.html b/docs/configuration/index.html new file mode 100644 index 0000000000..f568c66b30 --- /dev/null +++ b/docs/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: 0.12.5

configuration

root/build.gradle.kts
plugins {
id("com.rickbusarow.module-check") version "0.13.0-SNAPSHOT"
}

moduleCheck {

deleteUnused = true // default is false

checks {
overShotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedDependency = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
unusedKotlinAndroidExtensions = false // default is false
depths = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
doNotCheck = setOf(":app")

additionalCodeGenerators = listOf(
modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(
name = "My Processor",
generatorMavenCoordinates = "my-project.codegen:processor",
annotationNames = listOf(
"myproject.MyInject",
"myproject.MyInject.Factory",
"myproject.MyInjectParam",
"myproject.MyInjectModule"
)
)
)

reports {
checkstyle {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"
}
sarif {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"
}
depths {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"
}
graphs {
enabled = true // default is false
// The root directory of all generated graphs. If set, directories will be created
// for each module, mirroring the structure of the project. If this property is null,
// graphs will be created in the `build/reports/modulecheck/graphs/` relative
// directory of each project.
outputDir = "${project.buildDir}/reports/modulecheck/graphs"
}
text {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/report.txt"
}
}
}
+ + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000000..fc3092c3aa --- /dev/null +++ b/docs/index.html @@ -0,0 +1,33 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: 0.12.5

Quick Start

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
// Add for SNAPSHOT builds
maven("https://oss.sonatype.org/content/repositories/snapshots/")
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.13.0-SNAPSHOT"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

all checks with auto-correct

+
./gradlew moduleCheckAuto
+

check sorting

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

apply sorting

+
./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto
+

report depths of each module

+
./gradlew moduleCheckDepths
+

generate (module-only) dependency graphs

+
./gradlew moduleCheckGraphs
+

Configuration

+

See configuration for a full list of options.

+
root/build.gradle.kts
configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

root/build.gradle.kts
moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/next/ci-workflow/index.html b/docs/next/ci-workflow/index.html new file mode 100644 index 0000000000..fc22335af5 --- /dev/null +++ b/docs/next/ci-workflow/index.html @@ -0,0 +1,40 @@ + + + + + +CI Workflow | ModuleCheck + + + + + + + +
Version: Next

CI Workflow

ModuleCheck will automatically fix most issues. Most CI platforms are able to commit changes, and +automatically cancel out-of-date jobs when the branch has been updated. This tooling can be used to +apply ModuleCheck's automatic fixes (if any) as part of a CI run, then cancel and start a new run. +This is similar to a git pre-commit hook, except the work is delegated to a build server.

+

Using CI over git hooks

+

The traditional method for applying changes automatically is with a git hook, such as pre-commit or +pre-push. But if the task-to-be-automated has a runtime of more than a few seconds, this is a poor +developer experience. With a CI task, the execution is done automatically and asynchronously, while +the developer is already moving on to something else.

+

A git hook also technically doesn't guarantee that a task is executed before code is checked in to a +main branch, since there's no guarantee that a hook is enabled. With CI, the task will output a +status check. If a branch protection rule is enabled, that status check can be required. This will +then guarantee that the task has run (successfully) before any code is checked in to the protected +branch.

+

Example Flow chart

+

This is a simplified flowchart of how I would run ModuleCheck with unit tests in CI. The +cancellation, test, and ModuleCheck jobs run in parallel on three different runners. This is an +"optimistic" workflow, in that it assumes that the modulecheck task will not generate changes +which would trigger a restart.

+ +

Example GitHub Action

+

Here's an Action which will run ModuleCheck, then commit any changes +using Stefanzweifel's auto-commit. This +requires a personal access token secret, or the commit step will fail.

+
name: ModuleCheck

on:
pull_request:

jobs:

cancel-stale-jobs:
name: Cancel stale jobs
runs-on: ubuntu-latest

steps:
# cancel previous jobs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

ModuleCheck:
name: ModuleCheck
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
# Must use a personal access token in order to commit changes
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '11'

# performs tree-shaking on the Gradle dependency graph
- name: modulecheck
run: ./gradlew moduleCheckAuto --no-daemon

# If ModuleCheck generated changes, commit and push those changes.
# If there are no changes, then this is a no-op.
- name: commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply ModuleCheck changes
commit_options: '--no-verify --signoff'

tests:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0

- name: Set up JDK
uses : actions/setup-java@v2
with :
distribution : 'temurin'
java-version : '14'

- name: all tests
run: ./gradlew test --no-daemon
+ + \ No newline at end of file diff --git a/docs/next/configuration/index.html b/docs/next/configuration/index.html new file mode 100644 index 0000000000..fcbf72343a --- /dev/null +++ b/docs/next/configuration/index.html @@ -0,0 +1,16 @@ + + + + + +configuration | ModuleCheck + + + + + + + +
Version: Next

configuration

plugins {
id("com.rickbusarow.module-check")
}

moduleCheck {

deleteUnused = true // default is false
trace = true // default is false

checks {
overShotDependency = true // default is true
redundantDependency = false // default is false
unusedDependency = true // default is true
mustBeApi = true // default is true
inheritedDependency = true // default is true
sortDependencies = false // default is false
sortPlugins = false // default is false
unusedKapt = true // default is true
anvilFactoryGeneration = true // default is true
disableAndroidResources = false // default is false
disableViewBinding = false // default is false
unusedKotlinAndroidExtensions = false // default is false
depths = false // default is false
}

// allow these modules to be declared as dependency anywhere,
// regardless of whether they're used
ignoreUnusedFinding = setOf(":test:core-jvm", ":test:core-android")

// do not check the dependencies of these modules.
// in this case, :app could declare any module it wants without issue
doNotCheck = setOf(":app")

additionalCodeGenerators = listOf(
modulecheck.config.CodeGeneratorBinding.AnnotationProcessor(
name = "My Processor",
generatorMavenCoordinates = "my-project.codegen:processor",
annotationNames = listOf(
"myproject.MyInject",
"myproject.MyInject.Factory",
"myproject.MyInjectParam",
"myproject.MyInjectModule"
)
)
)

reports {
checkstyle {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/checkstyle.xml"
}
sarif {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/modulecheck.sarif"
}
depths {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/depths.txt"
}
graphs {
enabled = true // default is false
// The root directory of all generated graphs. If set, directories will be created
// for each module, mirroring the structure of the project. If this property is null,
// graphs will be created in the `build/reports/modulecheck/graphs/` relative
// directory of each project.
outputDir = "${project.buildDir}/reports/modulecheck/graphs"
}
text {
enabled = true // default is false
outputPath = "${project.buildDir}/reports/modulecheck/report.txt"
}
}
}
+ + \ No newline at end of file diff --git a/docs/next/index.html b/docs/next/index.html new file mode 100644 index 0000000000..66a3de36f3 --- /dev/null +++ b/docs/next/index.html @@ -0,0 +1,33 @@ + + + + + +Quick Start | ModuleCheck + + + + + + + +
Version: Next

Quick Start

Dependencies

+
// settings.gradle.kts

pluginManagement {
repositories {
gradlePluginPortal()
// Add for SNAPSHOT builds
maven("https://oss.sonatype.org/content/repositories/snapshots/")
}
}
// top-level build.gradle.kts

plugins {
id("com.rickbusarow.module-check") version "0.13.0-SNAPSHOT"
}
+

Tasks

+

all checks

+
./gradlew moduleCheck
+

all checks with auto-correct

+
./gradlew moduleCheckAuto
+

check sorting

+
./gradlew moduleCheckSortPlugins moduleCheckSortDependencies
+

apply sorting

+
./gradlew moduleCheckSortPluginsAuto moduleCheckSortDependenciesAuto
+

report depths of each module

+
./gradlew moduleCheckDepths
+

generate (module-only) dependency graphs

+
./gradlew moduleCheckGraphs
+

Configuration

+

See configuration for a full list of options.

+
root/build.gradle.kts
configure<com.rickbusarow.modulecheck.ModuleCheckExtension> {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}

--or--

root/build.gradle.kts
moduleCheck {

alwaysIgnore.set(setOf(":app"))

checks {
redundant.set(false)
}
}
+ + \ No newline at end of file diff --git a/docs/next/rules/custom_kapt_matchers/index.html b/docs/next/rules/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..147ef686fb --- /dev/null +++ b/docs/next/rules/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: Next

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/next/rules/disable_android_resources/index.html b/docs/next/rules/disable_android_resources/index.html new file mode 100644 index 0000000000..52394be1d2 --- /dev/null +++ b/docs/next/rules/disable_android_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + +
Version: Next

Disable Android Resources

If an Android module doesn't actually have any resources in the src/__/res directory, +then android.buildFeatures.androidResources can be disabled.

+
android {
buildFeatures {
androidResource = false
}
}
+ + \ No newline at end of file diff --git a/docs/next/rules/disable_view_binding/index.html b/docs/next/rules/disable_view_binding/index.html new file mode 100644 index 0000000000..a6b0b82d73 --- /dev/null +++ b/docs/next/rules/disable_view_binding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + +
Version: Next

Disable ViewBinding

If an Android module has viewBinding enabled, but doesn't contribute any generated ____Binding +objects from layout files which are actually used, then viewBinding can be disabled.

+
android {
buildFeatures {
viewBinding = false
}
}
+ + \ No newline at end of file diff --git a/docs/next/rules/inherited_dependency/index.html b/docs/next/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..4ec0e91ad3 --- /dev/null +++ b/docs/next/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: Next

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/next/rules/must_be_api/index.html b/docs/next/rules/must_be_api/index.html new file mode 100644 index 0000000000..8b261df17d --- /dev/null +++ b/docs/next/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: Next

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/next/rules/overshot_dependency/index.html b/docs/next/rules/overshot_dependency/index.html new file mode 100644 index 0000000000..bb1f2a012f --- /dev/null +++ b/docs/next/rules/overshot_dependency/index.html @@ -0,0 +1,23 @@ + + + + + +Overshot Dependency | ModuleCheck + + + + + + + +
Version: Next

Overshot Dependency

Finds project dependencies which aren't used by the declaring configuration, but are used by a +dependent, downstream configuration.

+

For instance, assume that :moduleB declares an implementation dependency upon :moduleA.

+
moduleB/build.gradle.kts
dependencies {
implementation(project(":moduleA"))
}
+

If :moduleB doesn't actually use :moduleA in its main source, but it does use it in test +source, it's an overshot dependency. The declaration should be changed to +use testImplementation:

+
moduleB/build.gradle.kts
dependencies {
testImplementation(project(":moduleA"))
}
+ + \ No newline at end of file diff --git a/docs/next/rules/project_depth/index.html b/docs/next/rules/project_depth/index.html new file mode 100644 index 0000000000..57e355f974 --- /dev/null +++ b/docs/next/rules/project_depth/index.html @@ -0,0 +1,54 @@ + + + + + +Project Depth | ModuleCheck + + + + + + + +
Version: Next

Project Depth

TL;DR - Low depth values mean faster builds and better all-around scalability.

+
+

It's often useful to think of module dependencies as a directed tree +or directed acyclic graph. If a module is a +node, then each module dependency is a child node, and the dependencies of those dependencies are +grand-child nodes.

+

This is especially useful when thinking about build performance, because the parent-child +relationship is clear: child nodes must build before parent nodes.

+ +

In the above example,

+
    +
  • :lib-1 and :lib-2 must be built before :screen-1.
  • +
  • :lib-2 must be build before :screen-2.
  • +
  • :screen-1 and :screen-2 must be built before :app.
  • +
+

It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build +before their parents.

+

Dependencies and Build Concurrency

+

Individual module builds are always done single-threaded, but multiple modules may build in parallel +so long as no module in the set depends upon another module in that set. In the above graph,

+
    +
  • :lib-1 and :lib-2 may build in parallel
  • +
  • :lib-1 and :screen-2 may build in parallel
  • +
  • :scren-1 and :screen-2 may build in parallel
  • +
+

The maximum number of parallel module builds is determined by the structure of the dependency graph +and the number of available processor cores on the machine which is performing the build.

+

Depth

+

Depth refers to the maximum number of edges between a module and each of its leaf nodes in the +project dependency graph.

+

Low depth values indicate a shallow or flat project structure with loose (or no) coupling between +modules. In a full build, these projects scale well with hardware upgrades because they're able to +build all those independent modules in parallel.

+ +

On the other hand, "deep" projects do not offer many opportunities for parallelization. They have +project dependencies which must be built sequentially. They also perform poorly in incremental +builds, because a single change to even a mid-level module invalidates cached builds for half of the +project.

+
+ + \ No newline at end of file diff --git a/docs/next/rules/redundant_dependency/index.html b/docs/next/rules/redundant_dependency/index.html new file mode 100644 index 0000000000..a0962b9c3f --- /dev/null +++ b/docs/next/rules/redundant_dependency/index.html @@ -0,0 +1,26 @@ + + + + + +Redundant Dependency | ModuleCheck + + + + + + + +
Version: Next

Redundant Dependency

caution

This rule creates a brittle dependency graph, because some necessary dependencies are only provided +transitively by other dependencies. Any manual changes to dependencies can have unexpected +consequences downstream.

This rule is not recommended and disabled by default, but it's still available for those who +want to keep their build files as small as possible.

+

Finds project dependencies which are declared as api in other dependency projects, but also +declared in the current project. These dependencies can be removed without actually breaking the +build, since they're still provided by an upstream dependency through the api configuration.

+ +

This is the opposite of the inherited dependency rule, which ensures a stable graph by explicitly +declaring each dependency. Inherited dependency is enabled by default, and is the recommended +approach. Both rules may not be enabled at the same time.

+ + \ No newline at end of file diff --git a/docs/next/rules/sort_dependencies/index.html b/docs/next/rules/sort_dependencies/index.html new file mode 100644 index 0000000000..50352f9f06 --- /dev/null +++ b/docs/next/rules/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/next/rules/sort_plugins/index.html b/docs/next/rules/sort_plugins/index.html new file mode 100644 index 0000000000..d6aa29b8fc --- /dev/null +++ b/docs/next/rules/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/next/rules/unused_dependency/index.html b/docs/next/rules/unused_dependency/index.html new file mode 100644 index 0000000000..06c51bf982 --- /dev/null +++ b/docs/next/rules/unused_dependency/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: Next

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/next/rules/unused_kapt_plugin/index.html b/docs/next/rules/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..9966219bf8 --- /dev/null +++ b/docs/next/rules/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/next/rules/unused_kapt_processor/index.html b/docs/next/rules/unused_kapt_processor/index.html new file mode 100644 index 0000000000..8ac7ce53f8 --- /dev/null +++ b/docs/next/rules/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: Next

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/next/rules/unused_kotlin_android_extensions/index.html b/docs/next/rules/unused_kotlin_android_extensions/index.html new file mode 100644 index 0000000000..88dd38bb01 --- /dev/null +++ b/docs/next/rules/unused_kotlin_android_extensions/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kotlin Android Extensions | ModuleCheck + + + + + + + +
Version: Next

Unused Kotlin Android Extensions

Finds modules which have deprecated Kotlin Android Extensions enabled, but don't actually use any +synthetic imports or deprecated @Parcelize annotation

+ + \ No newline at end of file diff --git a/docs/next/rules/use_anvil_factory_generation/index.html b/docs/next/rules/use_anvil_factory_generation/index.html new file mode 100644 index 0000000000..55351f257f --- /dev/null +++ b/docs/next/rules/use_anvil_factory_generation/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory Generation | ModuleCheck + + + + + + + +
Version: Next

Could Use Anvil Factory Generation

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or +Subcomponents, and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/next/suppressing-findings/index.html b/docs/next/suppressing-findings/index.html new file mode 100644 index 0000000000..fe096430c2 --- /dev/null +++ b/docs/next/suppressing-findings/index.html @@ -0,0 +1,19 @@ + + + + + +Suppressing Findings | ModuleCheck + + + + + + + +
Version: Next

Suppressing Findings

You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.

+

The name of the check to disable can be found in the name column of console output:

+
> Task :moduleCheck
ModuleCheck found 3 issues in 6.157 seconds

:app
dependency name build file
:fat-and-leaky inherited-dependency /Users/<you>/projects/sample/app/build.gradle.kts: (15, 3):
:fat-and-leaky must-be-api /Users/<you>/projects/sample/app/build.gradle.kts: (15, 3):
:unused-lib unused-dependency /Users/<you>/projects/sample/app/build.gradle.kts: (49, 3):

+
build.gradle.kts
@Suppress("must-be-api") // don't switch anything to an api config
dependencies {

@Suppress("unused-dependency") // don't comment out or delete this dependency
implementation(project(":unused-lib"))

@Suppress("inherited-dependency") // don't add dependencies which are inherited from this library
implementation(project(":leaky"))
}
+ + \ No newline at end of file diff --git a/docs/rules/custom_kapt_matchers/index.html b/docs/rules/custom_kapt_matchers/index.html new file mode 100644 index 0000000000..4ddc31a886 --- /dev/null +++ b/docs/rules/custom_kapt_matchers/index.html @@ -0,0 +1,18 @@ + + + + + +Custom Kapt Matchers | ModuleCheck + + + + + + + +
Version: 0.12.5

Custom Kapt Matchers

It's simple to add a custom matcher for an internal-use annotation processor.

+

Just define a list of regex strings for all of the fully qualified names of its annotations.

+
moduleCheck {
additionalKaptMatchers.set(
listOf(
modulecheck.api.KaptMatcher(
name = "MyProcessor",
processor = "my-project.codegen:processor",
annotationImports = listOf(
"myproject\\.\\*",
"myproject\\.MyInject",
"myproject\\.MyInject\\.Factory",
"myproject\\.MyInjectParam",
"myproject\\.MyInjectModule"
)
)
)
)
}
+ + \ No newline at end of file diff --git a/docs/rules/disable_android_resources/index.html b/docs/rules/disable_android_resources/index.html new file mode 100644 index 0000000000..bba7aa58c7 --- /dev/null +++ b/docs/rules/disable_android_resources/index.html @@ -0,0 +1,18 @@ + + + + + +Disable Android Resources | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/rules/disable_view_binding/index.html b/docs/rules/disable_view_binding/index.html new file mode 100644 index 0000000000..e5d27beeff --- /dev/null +++ b/docs/rules/disable_view_binding/index.html @@ -0,0 +1,18 @@ + + + + + +Disable ViewBinding | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/rules/inherited_dependency/index.html b/docs/rules/inherited_dependency/index.html new file mode 100644 index 0000000000..77f199a7d5 --- /dev/null +++ b/docs/rules/inherited_dependency/index.html @@ -0,0 +1,19 @@ + + + + + +Inherited Dependency | ModuleCheck + + + + + + + +
Version: 0.12.5

Inherited Dependency

Assume that :moduleA depends upon :moduleB, and :moduleB depends upon :moduleC via +an api configuration. Also assume that :moduleA uses something from :moduleC, but doesn't +have an explicit dependency for it. It just inherits that dependency from :moduleB.

+

ModuleCheck will recommend adding a direct, explicit dependency for :moduleA -> :moduleC.

+ + \ No newline at end of file diff --git a/docs/rules/must_be_api/index.html b/docs/rules/must_be_api/index.html new file mode 100644 index 0000000000..dd955fa0a0 --- /dev/null +++ b/docs/rules/must_be_api/index.html @@ -0,0 +1,21 @@ + + + + + +Must Be Api | ModuleCheck + + + + + + + +
Version: 0.12.5

Must Be Api

Dependencies are considered to be part of a module's public "ABI" if that module exposes some aspect +of the dependency in its own API.

+

For instance, if a :moduleA extends a class/interface from :moduleB, or takes a type +from :moduleB as a function parameter, then any consumer of :moduleA's API must also have a +dependency upon :moduleB. In scenarios like this, the dependency module(s) should be declared +using Gradle's api configuration.

+ + \ No newline at end of file diff --git a/docs/rules/overshot_dependency/index.html b/docs/rules/overshot_dependency/index.html new file mode 100644 index 0000000000..36293b5aec --- /dev/null +++ b/docs/rules/overshot_dependency/index.html @@ -0,0 +1,23 @@ + + + + + +Overshot Dependency | ModuleCheck + + + + + + + +
Version: 0.12.5

Overshot Dependency

Finds project dependencies which aren't used by the declaring configuration, but are used by a +dependent, downstream configuration.

+

For instance, assume that :moduleB declares an implementation dependency upon :moduleA.

+
moduleB/build.gradle.kts
dependencies {
implementation(project(":moduleA"))
}
+

If :moduleB doesn't actually use :moduleA in its main source, but it does use it in test +source, it's an overshot dependency. The declaration should be changed to +use testImplementation:

+
moduleB/build.gradle.kts
dependencies {
testImplementation(project(":moduleA"))
}
+ + \ No newline at end of file diff --git a/docs/rules/project_depth/index.html b/docs/rules/project_depth/index.html new file mode 100644 index 0000000000..a04c12a382 --- /dev/null +++ b/docs/rules/project_depth/index.html @@ -0,0 +1,54 @@ + + + + + +Project Depth | ModuleCheck + + + + + + + +
Version: 0.12.5

Project Depth

TL;DR - Low depth values mean faster builds and better all-around scalability.

+
+

It's often useful to think of module dependencies as a directed tree +or directed acyclic graph. If a module is a +node, then each module dependency is a child node, and the dependencies of those dependencies are +grand-child nodes.

+

This is especially useful when thinking about build performance, because the parent-child +relationship is clear: child nodes must build before parent nodes.

+ +

In the above example,

+
    +
  • :lib-1 and :lib-2 must be built before :screen-1.
  • +
  • :lib-2 must be build before :screen-2.
  • +
  • :screen-1 and :screen-2 must be built before :app.
  • +
+

It's worth pointing out that this relationship is recursive, as well. Grand-child nodes must build +before their parents.

+

Dependencies and Build Concurrency

+

Individual module builds are always done single-threaded, but multiple modules may build in parallel +so long as no module in the set depends upon another module in that set. In the above graph,

+
    +
  • :lib-1 and :lib-2 may build in parallel
  • +
  • :lib-1 and :screen-2 may build in parallel
  • +
  • :scren-1 and :screen-2 may build in parallel
  • +
+

The maximum number of parallel module builds is determined by the structure of the dependency graph +and the number of available processor cores on the machine which is performing the build.

+

Depth

+

Depth refers to the maximum number of edges between a module and each of its leaf nodes in the +project dependency graph.

+

Low depth values indicate a shallow or flat project structure with loose (or no) coupling between +modules. In a full build, these projects scale well with hardware upgrades because they're able to +build all those independent modules in parallel.

+ +

On the other hand, "deep" projects do not offer many opportunities for parallelization. They have +project dependencies which must be built sequentially. They also perform poorly in incremental +builds, because a single change to even a mid-level module invalidates cached builds for half of the +project.

+
+ + \ No newline at end of file diff --git a/docs/rules/redundant_dependency/index.html b/docs/rules/redundant_dependency/index.html new file mode 100644 index 0000000000..8b6d91bbb6 --- /dev/null +++ b/docs/rules/redundant_dependency/index.html @@ -0,0 +1,26 @@ + + + + + +Redundant Dependency | ModuleCheck + + + + + + + +
Version: 0.12.5

Redundant Dependency

caution

This rule creates a brittle dependency graph, because some necessary dependencies are only provided +transitively by other dependencies. Any manual changes to dependencies can have unexpected +consequences downstream.

This rule is not recommended and disabled by default, but it's still available for those who +want to keep their build files as small as possible.

+

Finds project dependencies which are declared as api in other dependency projects, but also +declared in the current project. These dependencies can be removed without actually breaking the +build, since they're still provided by an upstream dependency through the api configuration.

+ +

This is the opposite of the inherited dependency rule, which ensures a stable graph by explicitly +declaring each dependency. Inherited dependency is enabled by default, and is the recommended +approach. Both rules may not be enabled at the same time.

+ + \ No newline at end of file diff --git a/docs/rules/sort_dependencies/index.html b/docs/rules/sort_dependencies/index.html new file mode 100644 index 0000000000..7606c4394b --- /dev/null +++ b/docs/rules/sort_dependencies/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Dependencies | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/rules/sort_plugins/index.html b/docs/rules/sort_plugins/index.html new file mode 100644 index 0000000000..7ec11446fd --- /dev/null +++ b/docs/rules/sort_plugins/index.html @@ -0,0 +1,16 @@ + + + + + +Sort Plugins | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/rules/unused_dependency/index.html b/docs/rules/unused_dependency/index.html new file mode 100644 index 0000000000..9d8b653017 --- /dev/null +++ b/docs/rules/unused_dependency/index.html @@ -0,0 +1,21 @@ + + + + + +Unused Dependency | ModuleCheck + + + + + + + +
Version: 0.12.5

Unused Dependency

Unused module dependencies which are unused create unnecessary bottlenecks in a build task. Instead +of building modules concurrently, Gradle must wait until the dependency module is built before +beginning to build the dependent one.

+

ModuleCheck determines whether a dependency is unused by looking for all fully qualified names +declared in its API, then searching the dependent module's code for references to any of those +names. If there are no references, the dependency module is considered to be unused.

+ + \ No newline at end of file diff --git a/docs/rules/unused_kapt_plugin/index.html b/docs/rules/unused_kapt_plugin/index.html new file mode 100644 index 0000000000..43e58981c6 --- /dev/null +++ b/docs/rules/unused_kapt_plugin/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kapt Plugin | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/rules/unused_kapt_processor/index.html b/docs/rules/unused_kapt_processor/index.html new file mode 100644 index 0000000000..be93113b56 --- /dev/null +++ b/docs/rules/unused_kapt_processor/index.html @@ -0,0 +1,38 @@ + + + + + +Unused Kapt Processor | ModuleCheck + + + + + + + +
Version: 0.12.5

Unused Kapt Processor

Annotation processors act upon a defined set of annotations. If an annotation processor is +sufficiently popular and its api is stable, then it's relatively simple to define a list of +annotations to search for. For instance, Dagger looks for the following annotations:

+
    +
  • javax.inject.Inject
  • +
  • dagger.Binds
  • +
  • dagger.Module
  • +
  • dagger.multibindings.IntoMap
  • +
  • dagger.multibindings.IntoSet
  • +
  • dagger.BindsInstance
  • +
  • dagger.Component
  • +
  • dagger.assisted.Assisted
  • +
  • dagger.assisted.AssistedInject
  • +
  • dagger.assisted.AssistedFactory
  • +
  • com.squareup.anvil.annotations.ContributesTo
  • +
  • com.squareup.anvil.annotations.MergeComponent
  • +
  • com.squareup.anvil.annotations.MergeSubomponent
  • +
+

If a module has the Dagger kapt dependency, and that module does not have one of the above +annotations somewhere, then Dagger isn't actually doing anything and can be removed.

+

This is simply a best-effort approach, and it isn't maintenance-free. Over time, the list of +annotations for any processor may change. If this rule gives a false-positive finding because of a +new annotation, please open an issue and/or pull request.

+ + \ No newline at end of file diff --git a/docs/rules/unused_kotlin_android_extensions/index.html b/docs/rules/unused_kotlin_android_extensions/index.html new file mode 100644 index 0000000000..0e8b135e51 --- /dev/null +++ b/docs/rules/unused_kotlin_android_extensions/index.html @@ -0,0 +1,17 @@ + + + + + +Unused Kotlin Android Extensions | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/docs/rules/use_anvil_factory_generation/index.html b/docs/rules/use_anvil_factory_generation/index.html new file mode 100644 index 0000000000..bbbb9b62f6 --- /dev/null +++ b/docs/rules/use_anvil_factory_generation/index.html @@ -0,0 +1,26 @@ + + + + + +Could Use Anvil Factory Generation | ModuleCheck + + + + + + + +
Version: 0.12.5

Could Use Anvil Factory Generation

Anvil's factory generation is faster +than Dagger's generation using Kapt. However, it doesn't support generating Components or +Subcomponents, and it doesn't work in Java code.

+

This rule detects whether a module could switch from Dagger's kapt to Anvil factory generation.

+

Criteria:

+
    +
  • Anvil plugin applied with a version greater than 2.0.11
  • +
  • Anvil's factory generation isn't already enabled (nothing to do in this case)
  • +
  • No @MergeComponent, @MergeSubcomponent, @Component or @Subcomponent annotations
  • +
  • No Dagger annotations in .java files
  • +
+ + \ No newline at end of file diff --git a/docs/suppressing-findings/index.html b/docs/suppressing-findings/index.html new file mode 100644 index 0000000000..01729a246c --- /dev/null +++ b/docs/suppressing-findings/index.html @@ -0,0 +1,19 @@ + + + + + +Suppressing Findings | ModuleCheck + + + + + + + +
Version: 0.12.5

Suppressing Findings

You can disable individual ModuleCheck findings via annotation, just like with any other lint tool.

+

The name of the check to disable can be found in the name column of console output:

+
> Task :moduleCheck
ModuleCheck found 3 issues in 6.157 seconds

:app
dependency name build file
:fat-and-leaky inherited-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:fat-and-leaky must-be-api /Users/rbusarow/projects/sample/app/build.gradle.kts: (15, 3):
:unused-lib unused-dependency /Users/rbusarow/projects/sample/app/build.gradle.kts: (49, 3):

+
build.gradle.kts
@Suppress("must-be-api") // don't switch anything to an api config
dependencies {

@Suppress("unused-dependency") // don't comment out or delete this dependency
implementation(project(":unused-lib"))

@Suppress("inherited-dependency") // don't add dependencies which are inherited from this library
implementation(project(":leaky"))
}
+ + \ No newline at end of file diff --git a/img/coffee-solid.svg b/img/coffee-solid.svg new file mode 100644 index 0000000000..134e7f974e --- /dev/null +++ b/img/coffee-solid.svg @@ -0,0 +1,21 @@ + + + diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f4cf3dda08a96cfabf6a15a5699d0c1a8736f9ad GIT binary patch literal 15406 zcmeHNX>3hf6h4Y))*>}TP{dObA*mpOJdrlxj|36J3ok+pcqLPUfh#!X)g{hxyHHc}9xMI5n-*y2aI7&!zY z`d17VF{lN!@wP3e<(6)bt%u{fjOV_aONoX=1&)nuw6AoZqRd$)(U?e?Et!hyJJoln z->ZJ~#r#E4?n$QBQcI&#Mw9SLpi>p6JZU1~V9YCXR?fI#{ zmmOwwFI8Qlh0ax+b5uoF3|A=Z zRT$-&@*LKq@ZPt3RM1-Bu)fXOMv*Czv@~ledAc9$JGyDS$>!l`*-`r{kMf|qrEm+| z52wDUTTeNGmhKiZTg~z!w`V|(Y?toM8Dwo83I!E~kTX$Y_)83sPtHK(J4_76#ZYTE z1}(Fo1)89JLQ6t!`UdS9H#k~W2a>jy^{)nUzOdjHXsxnu(?6=F-MYG<{qPXlhmw0L_Hx_JU^kd$~P`9nyWzz&h0>d4k z8$h^MeFeDZ+}$UJ4g<;O>Z;+YugH7U&#I5Bq;$64X@4}L!AvTbiG%{^u|&zxRlY9xW5!LJ819>%4PBb*5>z-qJ7 z+Pt;WSi!@ix<`!En%p%~`Qy6BT99XNH9l^!k?4RXuZzu&mCAjYz&rO@{WH33 zxJ+3sS&FVLJr)|9I+pPO-uN3;futg%=1tAJJyLc=nu8t1J9x3`c=xB>>`lD$za}w z$N8=K>>UpJVY)ENY*y-R98b%5UEVrrAIyF`+x|_jC27`oNm~ii5BYiATDVnnn)U>s zOL6*$&sUzeN6|Eo_t?UWg$f=LsuDD%Y2W$xuJ5!yf4y`jF%QSfp>p^aOx-3X4{=Yq zdr$e7v!J0CNF4~Y1Fe4sRR4Bn7x-PuVJ8tyw8B4PaAhYEs|9hdgp1*CF}xQ;hZuqt zz#Di3ui-M@Z;E-}Da&GK8UuI*&zScuVhAPPMRpm0XYh{o2vrF7{qAmFgZZqw+KT9<-|#P2L9zvmY?*> z2K2D@A%!Q0(~E`|-m>CVJN_5R^)>uuVIQaglhs61)2Fg|*j%t#P19cEZYtO$=~zQv z4TV*~OJK9(ydz$exrjP?g8$0AUvpn!YvE&n9XPEi&7Vu4nig#J6ZI1n z^UnE)9D{uq>l%yzc_Wv*oNsv?n-fd*UFyz~KgJ4q0~NVlvYzvb_(16a<_jV(+h4k0Ro_}8*H~(3=9`()9CKdr_Gq=X(uK+kit{`w zc@$x<1p`!fR@1T%%YNZ~eCl}0G3788^^N*p?t&Y}8v$n@f3x@-fL!5oju?9!|EBoA z0bmUlXD(LYz>bT1B9M^Ylui@$6BK;me*u0??bdb$YuAj|6nNM}PyTzN!0~qm_i|xt zA?^CKi|rx2x8FBAHU~6!H?wyrUnktnXcr3iF`rk+9nL@EY3b9bti6m^YZ9w@bGl>T zqv@mKj~i=nw(_jIW?t2&G^SAWn`rju2tT^q)?BapkvGB~vj3|dlQKq=`*=ad0%@%= zPkT%D_Ij`4yuinESkf@5Z|tM^(s-Z0i6-eMDQI}3f63>br|T?r%r{4V4nWJ^mzCpt z8{@xrWb#P*L-z-}d*F+tRu6DS8+wdfH$WPGQFeZk&YF8vj{6TfDQm%LB5Z0Cg7)nKiXgioTUdf4-|JY z_=mo5sO*qxTTLLw3%{ui`5P2_2xEYJg@1i00DJ=B>uA4^kiYfy7GaFR4v_sZ88N?% z0e+0o_to0{{5@X0v0yL89U#}0v6qnd)`#EU;{ZMA4e(=o+3=E}w|(vSs>*H|2%h_B xhV%>szd_ac^n!QC3aj%r!Bhj@L*0J>J`f@6zajHM2}%DM@ZSf0GvMtE{13)Np_%{y literal 0 HcmV?d00001 diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..af57147fff5d0805b869d596963dd5befd59ed3f GIT binary patch literal 19659 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 R-yCKD0#8>zmvv4FO#o`NofrTB literal 0 HcmV?d00001 diff --git a/img/modulecheck_diagram.png b/img/modulecheck_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..0c0403f652e330d662a09a1be541257807243e18 GIT binary patch literal 1596171 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

cthOPlAB*gc~#>$ke7m-)A4nT73#9*u~Yc8-% z3v0l-(FV2|NCSGT>pDkBp*KRVvMdIm=bucD73(Uv3S+y@>g)}c7}S)RFl%#-6+{~A z$SGAx)?;*9TX7kI-n5rwQ|UhTXs!DN41x&NfvqjwU&@;jsEAyGD9Axc%bnobRjn&_ zGpfL3rFqMQD$dsmSttLL^;VWxv-3n&v^!2jdtp1RZVo`Fj3Gp@g%h-QJg$pJdx6dwEHH1W6Y^KfEz{n<$>-RuXDl!+Pb`)^CBj zR#G=ROMfqb(CY zml!DM&)F)O5J-8T&2)?A{W&?$8s>oau;!TQ-B0tCbWdQJl+s~+`jqgs)8|jpw8YfG zu&yRFaHYso2A2x1H#lB;Jb?yaA@BHR-LD1&ybr%)iKMiHshu7=!ILbyX@Bb=1?Yq_ zVDPN<@|P8~$9TSvZmF__2%UivjPJXPYF>0iv>-15UcE$=rJ6Tiau)$^r9dR{xVpBx zcqw1bjRE~7ufg5dMUk?*j{NHDfJLmJ4C3}BL|zCnWm$xkge%}kSw6oo@KiM9WZCyD@C=>d83uL`aDG;+is9irp7p0k9GN1? zB%@p~k>-TW z9;I9explQ><`TeE9Ik9b{O~gzwGJE}_DrmY#k<40%Cc(p#ms&T;-f-7B6svod&5^f z!Lnq~>%cCd!|tD(ZVe9@9--coeS03yEHXejd=lNzoe^?6!mnB6$KMAlJ^7ze=ifGO z9iJ{;Ilv**i~Kn9>vG{X-1cD{4F!D+nKeTnMT6;tBuyRvV0GWs4^ZbSU!j}xC1}0) z9l1R@sk1w6f(=ufuU0M$+LZ*)`;lQB997awq?RaS>ZeYTUs>R4=d@P#DfWr<9lafq zLbZ&y@P>vxU*d2$JR2O=dSQy5AUPX!0@O&0pRnpi%s;e&eE6P)HiAScB6g^qinEoZ zb6{eLf7zUXiS6DoAgTEvJ!+#Ov0Q2h8W0_VLNnGJcpDjX^4IWw529K0=PEpi8u~}i zknE88LX-mP6ZFuVWITk;x`d&FdjMtp}vYi%4 z2*wAGaTj0`>aj!px6lW=fu@SD`wNGYPd5ZxCV%?KeX!N-)Oa8DY~YH<*|i6cR@e}N zUWatz#*k;D2F(6fRa^^X=#at%Bzh zvBG0mwB_kAW;mR$q)_ZWZD-NvU2%L99E70GmE)O2TZalfG-`yq; zY{w{Rc50;ir}!FqR`H$n%w21;m@O+L&Mg>v3_8t~c8J!@xv#iwr&Wo|-+g1K6Mt^l z23Hcu7ir#KqxS#)OkGA3>7lMLUJVQ0WPc~(?4+KDCa>V7@LcI?Lc+l@#E-ne;W4Wf3+#$EO-Ze8$=GSM7K`b*u#pq_dqjwT z9})Z}>9G@fyvN$Cm8~>%u;gcBJ;BNmh5Je4R>ZcxW$r*5-x@6yT8+-{@(y>I{G9&d z^-gpBT|(M6-d$Q7WDx1$?kCpYd3WvAybFYDn4nFUI*>gfmM6X$u@p^DMe`g5xkV>_ zM!F*PE1qFGC8Vf#)>*VQ#qMqMBif?w27KE>exlY&eWJE8EL>|R_kG#jP?U&a9JCKo zURotE5g4F0=+-IfSxb$PuIizEj?Ye9k;&KHtPZ-lyrz^vIhxbkhc2|W4@!i56zYDa z*mT@1ayOjfvYIIMxn<_FLDpKelVPWYhwL}^ZJ6B(FOBaK(=~IzOq>n${m(Z)gx-0T ztGDcOXkkY#oU59m5NrU{PinkKYov5o^$47_O|}ah^{J{`sL#_{{47LbtfUWAuML$=p!F7tm_0k;2xSM?AtT_nM#0}cHLcYsXiPwN zoU7ce8;9@}tvyYHOSA;hxcKD<%3DM}T&y@l|3&}n3s>^sVfS~QB{0QI;V^v5~~t}4PH{7$d--FtAU=VuFHYQJ^Nc;tP)dcgD*_8cjs zk{2;o%9})mT?J2d$Uf-|J#d=`0*qW^I1P!2A8S)epngR_G4F-y0h%dl1eF0McS`Lc$_RxaW}uA#>T%ifGPq9{v_z zTxIymN7<7zva_m8#I40VHTFe|*Wwmtr`-ql11;5WMgk^`$wy1dJ zfJUEn{60ZA>&OIYz2n}L?d}!ai%vB^u}}R^zIv~c5Z$tboAPo-vHaW=h*MU` z$b{v~pFp^}t6~I>x+N)(`dQRa@pMj)EiCt44RECvHR{WX^2fc$A3V{K=#|vGpM(y8 z_bWoksxCQ?yjIL5^P>y}HE%5C;D9M*eNzRi#W|j%+o(@bw;AyO4z%`f2m(PiNLhtD z&av6Z>t9(EDQoH5_3Z>4o2`a`;;Oa;LZd00t>kxcqi78VX1`nvBI$Hmh<8^}o51m4 zaHy(6YgGT-rqx{H*HHWOy^-U=->Cs=Cg~P)e3}njTLJP2P*KR718`M`J4D#U*FnV( zVP?-=&KL%2yn37HGM=0S@5H&{x|ykTyfF;;Ko3id)7653DUL&EDhaXreCu zHbGoAkxHnBJq{V|^U}B@{A@jxzQ&%|YiTWdf>Us=;6%kzjlQZ=_cv9qll6maf8J`e zH$mGUUQ)`b%6PC%ncr(mj}HpX$=G2B;VnE0A&U|RxA2}_&tbbg#UD$}B!80z@3B7% z>s;y7UfCz_iq4=j^6GTe!RCj{FJb}S{+IqyKh*CR%M9$aa5^Zq1lJZag)iR|?V?%E zobacazf`%qaMs9WvNu+{H@7#g>2gy@clE%F*@*Y@unbd{{3oXq=t~GFfSrxtOwbV! z2ZQgPpbLvg`p@SR8}8pa`Tp?sfy`1UTW!@fLMO;fWegC)r-tixor!81>G;QCIH@&t0!cgI z66du&wnjW{qghjjWR$!he^?;YoVRCPZS%wF+oj>1+IR4A>}2%x%@sX9?Bi^;NMTrn~Q04aDbd3^hDrDtJfz^gcx zyqIC%v1Zsw;DNF@sFemd?=pDPr0?5a-}g7ueudLW^Kb*Pn{e^$vx{g?nKoGWAjhCd zKKv1*kWHS@cl_t;69rW@i6n@n|FEk%DyGId?`x8mkFb5)@0A!3llK)qnbN&W70LZnvFpeJ}?F;j}*ity0(WN zF^-U*m=bA7`t9sx0HLP)PbwXBSQscc?ldy;@TE7O{lyx9>pHC#UI-hGup5<=1dt4# z1o0)w(X!~x5Wf&WXVdO;vAMV-hA%l)I!GJ zQ`t-s9b2V(?(bS2%~Dys3U}KLJ`GL?9lm4GEB;~=vSYF8$(VMyUjARVV}q_?LVvg*;zXUtgzd=eerpIgL;a%hq z$bd_YD+VSx*2)*z?D!@(Ykf;p@q)VVYbOX{m-@h2{>^`|LtLKOP%z znH_$lq|IsWUu@p$U#y_%pJl7F{6;hx#U`WVJ%Q%oLJR!jmUqSEZ%^Z3N^Zl-8t&=m zxW8ra+hV@ZxAkxzzvp4yw=Lsspd8gYwJrtio;4~LAJ;w~$j|$`VioSEcc6tDuN?1p ztD^CQAXmPFD{2Hcxr4h7)e}2Z{LZWcFQX{@$SrBV8u(p+`})Dj^WR?E9y`>sJ&mh8S7xJm7zZVE zcBLmpgx^)$y#0+nJQUd+0rDd)u_2JZG-E3J#5m3daI#r_3L{a1)bJ(ptv~LC?)EmVnI((8<9^rg{`W4}MwwrGCns}})xUrC{5z|I`V!~LFzZdl5B6`DZ`<%9^i)*s)`FCa zrWc;i6`t#hxcE`;smdcqz;y9a;QJl`8YL-0^Ef_<{KZpC&dF(D=5cQ=MFgFc<33hh zQ#ao{c72S$;GeouN6{vCc!rgSP+mXTDZ*2VGS~mFzZJFRt&-mR!&j5G9pc{E>UZF( zV#3>){X-Vv`I{2%MDK9=vlY8X4<3-=zaIUcX9$1YIX<@`701h=rxAF@?Djl_Ex14f zu^DFq&$nS0X+TLR^CKAn=0P{Ym=?fC8{cky<@`~7u`qExl?wuC_}9Grhvo422c3mguGxRv{7HTnI;^$srTi(~YyRX*zSEy^ zLJRGTQ04YcmTJe9A?)(mdGXnOks>f&k`A}wxTbShyq3hzB*{xdtIhL>LtRRDgq8dp z%maxfw&YM~To#Y4hxp`rS}0PTJ6CRcjEfT~*BJ=;;P)fSrjr@x*wEQTxN@yPD_TS{ zz&f*)8OePVJhm94q3Z-0iuQ%Q>GYc350`0(VG1?w2GLwkOR3IozGiqWOAk(jE$(#W zj)*(Z2&~Sl58D!_yUww2zW3swGw(UmFXOP&?wr353v%w%A;-2LNFA<>_40SrP|Kb(loJmZifq zuQqYra%K)JMyuWZenV&RA(S05Ner{aiUnC%;%;SI)>{fcn|JeI7${RYo3DNRMHyT^ zk-S1$dev(X8Grl_co4}G$e`D(O@48@!s^hwbb%jARXxaBr>M21%qQ*r<&Q5&Z^AQx z9#eJb=SymKb}VMAbDzY~X7oR%z#F`zCP-^1y6DY4`>?#Mf4IlyW%93=bs}ak8Gu(i zv-?Zp%?UGEQvCjdo^{h-l$F9W=i#wFX&jbU+WsBfAj+2 z6wpC5I79FBuP=8eVP#TU!K(C^g9>k;!b$$*ehSWa^ON)o+Cj7%QUt*?;?4hQ8cS)X z(oJ3R=K$ZG0-lVeXQs`Mf6u&c?~?73|NhsNWuY_qHo$);H%Nvm5S-|GRr=UcG;URo zU5Miqmbnn5HZNlLpL{|TmaN&U<}L?|F;EsVDI+aU3np>fa%0nrj4)rWNKS!1JTbO-0yCK4|l|>E}i0o%>t*V#efVxh>0`;1-$(-7GKk;8+c<=Ps^b3&Q$9&)&g`gYQuqHybdKQr@w3LG zYeJ@hH}wMY5+q~B|1RkZ8ziDt^N`8IwCZf$QnSu=a1IH+6WGYi_~Sv8?7|EDp1MDZ z_G;VRA6lR*;OKZVF>IdL=7!>aS2AyK6LA>)JL)aXV#)%5wJ61+g~yA=Atx!cGbU3_ zn@Wnh3x+Z@fB75&>?XG`;zVfwkA9)u+s1A?3Ok(f`5iU40o=7;q7KkOH5$P6yJ)bn z>92z&M|xXCn(hf2sw3d;Ce-+1VTMA(cOp8NR&N2mDIqBVi^9MS*23ts2z{(Nk=FUK z>Hf`ao-^cBlpX9tp%aLNlqxLw`t1g+TeJT@xhLqq{+R{Jf^2JVemV1ISj3HB{$8R& z(Xrk=6gR@JN(GW{;q| zwg8yKw!NO!Z#bnd_FwmAHHb7F|9fId#Y_V!xdW>8QXXafpT*(>Pn9_zMzs$aZhB6+ zQK26`TfE+%$;$9vw0{K$Id(mt$Ek3kK^Sq*mgc*%F*r5~4{te)`Q8Vpve}otUat)@ zFKX=ilQvRQ9y0BsV;;t~fIS}md{r`&O59ZVG|A)PgGFWV#~p88y-G95D*GUeS7aF) zOs*1^Jf-*eHdUmVh7(>qltq8tDT1*)`%58%$D_Zu=YMgDj%qJVJ(UzX-fg%^(D(~3 z_LveOsG<*tV%5oO)}hRod;a(h(?!noI$zkLW9SWz2hnVQu8~}M`!;pgqPHzzf=-Au z90@aEha-65^wRjyia8SSS{r%Z1uwzvyt*H&erlk0yx23;njK48MKaI5v#xYcTka73 zN|Vky!-s!InnI&xSH!IZCHuC0adgLR{c5-=pr#YfdEnc&tssc7)(k2wKl>xXXeBzb zu$7HQBbLWn<4&vGSu{PkoiXd!aT)uv9A>3J$HpPrrLtUf3^^e_ZEH7T^QUvxP5vs! z5be$Dh}jd8GRgbK9Q)L;R%1b5Us-X#08#bke_6h*n!O%<_;*jQv(C|?e+j{XVI^QS z67pnska!*5#8j-g)80!O*?ls?H)B&W{6RKZJZyo|rVRd6PPT@FRMgT$i7kDz^(PA6 z-OAh7cf@Y473L}vK?Ed|?^h(4hR1JDcxfT)cAegsQD5;u0H%BMZm|}%7?wShbTg4F zi@zxPjhDUD@o?_@QGSRbU9vKESftBK`DoDXwZAb+(OhJ@#HrO|g4`8p2_Y53kc($N ze-1PiOd@mTuob`@-;Sy-=V9TDj%jJgG;nIhWp-FIP=@<+nyc)IWjE1LVH3C{)G99Q zjr(wA=+#Mf6r5fYoF%|g+A%tfzlFm{cFOO5>FG?5<+IUpCQtwRvgyO!+$R4oQ#soo zoN5!hIoZ5`SY<$0%0&tkhG|0kxqt?Ug{un&5chbUo{&l4Y+9bv=jk;W>b?hO0=D1g zbGDF2X<-(8;$g(%L(!yS>#Bi2-bb7$3{xb&$Af4VZbd``(`!+~EB?eM@PG(cw{#{e=vmG!_@ zVfyLX8xx`|J|#iMpzT*U3*vRsQXsY(IswJ1;D2SN@8_?Z@2dHXQk#E~cL&hR%IBkD zToDt*JO$P#)O4Sd(~cF3+$z9}U|l%8`2`!snC*;R8`l&q2?z7}q`CUP26OfOj@TIM z_CD}hYhd$MrF-i`ghNbXTKjbJW7qAv?UR@7NB%e(WxC7KFZRd&^?JAQ z6uQARMnj|ZrDK>_$DuFl)cWM$kIxIaskrwhqm+@n*+6WQ#T)TXpBbM8AM~g9*p<3# zd9$Hd45~t9inyJrJd5hXme{H++#qDF*wVzW%5;EIV^um4>Y`rYGZNH51Mc0O zd@3KniQE3ZdzH5h?%Z|gtJYJ7OQ*i!lcJqgCm!@Sf#ovu2sCd}wg=8^NFL)&A=*(D zJY&UpK7*#A{#|GZt~Nvxz+_Yb;1Jk#PB>?$!u{6y4=*Y<2_KJ0YS+_(N{jUQ(Ht?R z#ryESjqi8=tz;OzJNu^z)1rgDC)RIq1d^Q>i{9fVZVCU(irl8PO@?xcf`8k!%!$oRM z-kNDt);T2U)v#@*IcxddAY=~_RNobw?4aG5;Q0Vq!1AWUPbz#GEBuOGyWHNbS&6f9 ze0?ry*C;-2so36n{mw1yo{MW+6x=s`jkq>?KLgT2f}&WdhqyBW#+xkK*w2gMEIr)QBSMtx`% z%_r;~Oto3hKGO9w2C7BkvgaN~c)-82XbSk)zXelr<3;foh=Zw_BlzmCoH#*GvNVjzK z`LUe6Oyad`_n$Doo-0%lzFv^^0;3oPAz-25t=ZFa;wF!U)(a*t7DoGwG7xQZyMMpW z6tEuO*YUwF(aiKI%FR@ACYtOp6%-%hmVh2O-5=4oDY6B??ab@?js)#)Kf=koltTm zwFk`~((HwuVl&2&l;*gXSm^j;Jr)VT`SO-z--V0noGG@cQRzghyDjmG54|ywu5aX& zC+YDesPQH{{?KwcI=U^>?M3t&vjnIG$Usc+EH|zvMp&JlKHZ@4*2fLsX8h;N-|GOT z=<4xmr7JU~R$m=u7i`>AVZQyQ(-gS;}@zJe^oNAk*!%Ra`){{e9sM|bL<)DSN7UTXMgpUAU zElgXI^HaB16&RObO9Zfmpwrj&?+^E^ezfKBy?A^-9zW3bje{!cVapp2$)W~@TFMQ^A=kR&yd#QETM_FE*E0(X-Kyc>qL-?=B-qOjn=ZJ3yQvF#0L=o znUu8%fYU9jb3!r^cjIT*Hxc9DxynfXHi>1wfg!~yl*u;b%9K61_I&Nd0n!QsRK|}|Tn*=R68m?<>8n5~^y!)y7deL$tX2z)9Z!d) z^Wj@wnOvFHJ$@TNSf;2aL`H#5 zbhcUAox{OS%1X$5R?zCVUQ+|<XaDk#J`TRfJ;xuCU_Hh z=9$jwnx@eAgZ913ax95vPNBrhi zk`Ic9=|K+y)h!L+UP}BKpn?63_;{8nyb*p5+d;)vuZf+#Pt$u>3EcV_}}j#49NJ+c9F& z?H`@r`xlvee-&(|8mwR4;=GRrbbQvkY!4b?arootGf^=dzBFUQ*UI zRl71yoqHI=wopkc-%2GQ3p6~v?d-w+!;_x;NA_qhw^QdDIf?J4wFgi|h_Rlx;N~|Uf7#Iflbl-qMQN;)LvgdqKHiX$~!rr%4u4= z;}-j#T1|8czaP8qP!p!LjeSSG_)D6lfX`^jfj?d<`rKM0KC=TmH&%*V^XBt2=F;m0$ef?G!R9jVZz@AD6t3NvWp0IZ@ ziQebs1Oj0XjlaLTtC?j1KntGG5nI3h{uvKXD7)hBd@W}qy}c8&F4@d3MXTH@kYoNOB0vKuJpOb!F+OxPiOexg;?)YvlO0ZTuATFv8D(fB( zt>7H74vN#~=e^qX7 z8^Y*$thvt5DaSeRwRX=J<$!ZRjoS=z^R&qFigAI5hKg2RRfjy|N4~H>{+k8oMyKDq zdri8B=x${~t_TnX{OvS{_%wBnxLRYSCZUO~b0+GM>ALTq&enNM?P5A3p5AX#q?A&7)g96g*hH38?MCFe zSqDJ~{tPk?PC-z%g(8W0epF(=T6ueE-Jg@f#kgfTY+WHT;Hy}Vf?b%N#&TEcB(#0f zZXz8uys@}fa|~kTRw0lH=9P_FXorfRXyomcC2XFUO7dx1uX`g=ih(pU?WxS{ z#9@H>xC-Zvk2AAwB_?S8vJ2VohjHG_6+64YxR3U!wmr}6yf1={&GIvUAwzziX7Xag zMh+javkS#%sGi>YH6n_DIQ$oL=!O>L>f@|w3rz@_;MT+1NoRRJmMIN8AV41^Fu9cr zZw~I~gX-j(Bb^fcy4A1@T;6UE-a49eJ6kyE=dsWl0l}kNVUvccJd3oGgPVN7Bj3h! zIhLgwQ&`X`v3K(=vHzma)R|?X@PQoW47f1l;63 zo_8TIZd!txhP+tvS}rZs4ty%p`^+xnVo*!C^i_RV)4Uj;NS9N)>&{CDYHjcByG^Z?5sGdRzPp3f>tPnuLb4CPj^!rTs&K zSQs5m!{da@hfpFLVN5!2?(7yS`AT9F({P>e&TFQ!H1JA%dQf4hCjS3RM5V* zTcBYxfa!PQ-1v~?r~Fjp;j88+)Skj$CmT*nb&9C$;3Dyt(fcmhWnSYQ)TPZ|6nwGgHMq0uwk(CQbTUq z%fKj}+@AKu1JZ<(hmH8WpN-Di_aK9sH?QDZ1-ijS5b&6BiH6P5E-tTyhX$&6<r z=lN#TS(j%D{vJIcy7ASL$rnf@9Zll_;3hPZlHp^*2}i7ctMK}!9eBX;)|lLTo7WYDm7NOL-%+%oz?sJr$cu<2 zF~pk?QEckcJf+OeCODgR%6qkKSQLF?w1U!pzlV+!ebQIxU0u#R8442KG310IK zU?WdKB8o{Ih%Jf>^52vbQJ(h3_`|x%@8Wqj2|(+&)Azyhl^lM+Q1uF7Iylyb8vq^l zJOK^!5{67^ci#>!zxwCPb^Fj760`ff#By?E(y^beim#tE0bv{9@hITJZ zw3&U&tIY@ zrq`6ji~)MJ;r)Ac@8}+-gOFl;N&;<5O~ucS!7o#!s}h0x>p@<`_IWqkk-~)@GhEFX z!h@orjM&Zylhb6YDl^iB^NL0n9m7wAnQ-DVp#t z$Kg(Cfv4F#_q{aYt((C)fzMtVo`J9jsqb0)2O!>;gTK+zCANYN&?M0L5@;O1_4Xw~ z+_fd%fhR1Lwoh0Qb=cDGSuLlVlbAW?3rZ!*$ZrRXgmWovk{$;HG>C(MN_DDT-ui5)3c^qanMr& zw8REJt@5CLOxP*g`)sF~*i_t!P)0h*-K|D@{QqO`z2ll{zI|bP0TnEWihx)EK|n-6 zX+Z>05dlFuM4EJwE_I8FGy#z&H7X(~CG<{W0YMO=^d?atL~4YPgtWcy4m{7}@0|DE z&w1}Xzw^1j_dU-)%HESbvu4ejnKf(H`YxAE+`;rk!jzUwpn=lNXSr_JUUcT5(M|<{ z8AKmY2nAJwsqSq^aoK>@{Fwa0*Pnhqfxs@+tZcVYKT@vHm*!0Wp`fL>otDK0G_qAw(JhX zp?C)QZa$(MQdi)Nbo&Xk1<0Xmrss zXtq>4uopfinG~5Px23*LDQL=byuiKJpjK3?$XCG=MClk@z1s23e%%qs+pyqs?WxAw zy02ia!e~w)e7fbd#IXoTY592hHGy&&X$K?Oc~=hBisr$m`%-8!YUNNg;e68S@TwUn z{7Prs8Q}9x(amEl1JO9k#BMQ;@U-rRrH|H59~ZzcUkLm#gG51Jz{QGN-;|C|S?0LJ z;xt2bsG&`xQ_JJ=dfGysnvCb0A${u)iQH$VA-9`ecfFOl&@*)dc z(wqvhra(7Ylz41f?~+FSD}EE$vdS@|DpFBtf(js5ee7o0-H-J1e!R1%MnBT=i?SR( z>T$%EkBDZ@vnX>Ofbz;=b4*A2ay1@I4jz(0I`tJ_OYFJi42Mij0w%1srF49VZs5=J zLJ}_qAUg;h)IYJwI1lI3ge#ijnNpqytKG6SiNcVHEpQZEHG}7QBKlxF4*N+I{Y`;+l z$DkdX!iItnm>K)!b5^HmqZ_`wo32>{&y>9eK1bC47NNf<*MFyF$20@0GS;Sukjx)jWM@W_o0T`;7eJ>$+tEp z^gLUV`)ZN+C?Q)GxpPh7cEv*ppSfEu;+~?ntnu5|yXE&&-$Q}N7bnB*UOIj@*|0|W zk;?OD(@P2Bz{b!j?^3LB+ zz7;zo?XAyT2>ckVwWeger0pM`;A%Bb$s9bQYKJ+zX28?b;rElNp!PN}%WxM1iCD+{*jJST`_fzlJ z3x|GpDDH#Af6MNv`+o~CsbfXAcTbaz^OP~3+JZ(x5d@i(R-AeCj(!Y+Y6shyq_1oi zT#|g2sfD^gU6F>Og}c8;ZotOq$nPgpfm`aoM{f4yo1MR({`aMKRhC^pY`^$>W?(uuOK2_W{1J$B-J?GZ=;+~w0&T=Xl8d-PQc^gkk-O>E7 zTs;~3Nv5^7tn?|tLs0d|;%lFgg_d0G9a{Z#s$DzN)kAi4ZZl#+Wa`20IK37@f6KsM z_l2KKsqp*V?MGUpI+wY6B%k|*Nmg0PLgQ?lx5y+`I(z_ldFt7G`_ zpIoUvI+%zP-<<3-mi}oKDzgSxQ)Op~8jdBkK0N053YI=l;re zJa*GR*7#ZW)-hJ1_g9x&9hW)IcL7`DiN6irMpda4hvz z%p(7VVECThcr;7}EE`!e+bozQUAz3Gf`mb&fB4DWSE;X^!$L`N;V)eh~ zCGwa_hf?0&&poE44;Lyv7cceVctoWVVPdVg4B#FuPp{=MKFzj*i?vVPZcdTpcy_7q zzW{$;i)0*0UYqvvly^oiRU`BNF}A(`@z@TPPUEcn@ma-nW6?gN0mM9X2-|i3SXV(2D{M1p zS+~^H-W3lmL%ZP%^>}Gm2Fl#@j}KT>1sH-FQH%YbTAye}Fe}!bDD*JK6xf;t1ZMGE z+CR9(ERKGhm^Vco8HUSFRJYnSEe~sg?ZTf>l%f7t?Tf-~cyHW8CE@Ad0>hlo35(WJ zI`#8)hXvVfIb_9~sB~)Z!1-?(XURJpb%%es`8n6$fp0`OuD=3*IeWc+KxvDJIs;Vg z22@RTQN@poZS(kU*wkvB?Ow6)ulR5N;Zt`8s34zHlWwBBPLcZs{YMh4X?6X1lEruI z%&Tu@Axy99QG2cY29F5_&B{(ybYI0GF^n5|F=P{tQ{jFh?hNpeF4u|j1Rs$dGZC(v z##n+VgqLhS<(XPtR%mFuu;{Cmrd6O=9CF1p-AqI;v-nV0*jOD5*2y4%ZwnNUm))Ib zRM}v!NnWggVjtO^og1R|q?hZ2!xASKJq2)RrL+BQU^nFjF?|G94zyl{Vnjc@&9)tt=NDKhxujbnW1i;h_#e&DV?)o=7S(}XGWN%{IW zQE>0ELQX`qLqHc1plY?B6Wmy*KDj0-_XyoU zv=H)1zj06eM;LcO&f6F<6>(YV!pkE1@7MDiYlrdc-O;zTG)>lc_F%JgVca^I>|f8C zYDy%+|Dp9LPn+vpVY`HCN|d-7?!3RhYyAD2J?oCC+_v%Eb7$ef=3^hjuOHuV`Of$E z)8fCzw(?wl#9eT0OVY2m;k^dmn|BK(?c+Dj<^7w0e^Cy+Evg<(zsmlG*YyaPu^{g* z{mfTqwYW_RPZr*Q@FHoyijl#bR)y%eSfcP*ZNk~7)=w_`25|=aC*eNNu~C0hzQ3jC zZw~zHaA3aSRA0Ix`jQx0>39fx#(%=enTTH0JMPy8>;ndLcIY~0hujQY$`KylaOyKG07P|bsCjQNV{{jx|TV71XW?n^%KU$icDK0=ZnIE3Viz))RMk?$$U2~{$ zq8ZjYELs7}i%7|YmM8!afIwUz3@Ut|1|6!Fvj|-s$ViF7j6qRyTq*e-j9>@g2D4z2Wi}c zQf@eLu9jx{_}Tz)xm6n!DNMX9~_ zXPK`M!Gd%1zCh2Ditp@^*KmFHK#-q8TWbcS+FWg73X_0fko0EqTCtH{QO-(;f(j5z z#K|4|kX4!f(Gzwq0R@<(&(moy?4ag6c6wBB3{kkX^$gOoD3)O%_uXq3$7^}G6(ldj z11B0;1oTCK4Z{@h`>?;6XO|KNt<%caY!>vbxkgL-%7OIb5=MG8j6bmeTAE>pYFtPOG!jhiaPGY%mg|q5v2wSq;)_O@ z;>t@->H&=I?p`d7=?t-Hu60uTGuq)+d!T$s*@caq#Ol8nMW`X3W!eos)_`>Gn2ML{ zy)KmVfs1?{Bs}#;<%gS8a`OygMM**WV~zWL2+F zEv}PS(Pr{+Q77JEYJsUDZS@$tKs<}3AB^f%rWEU+Lr2n64GpP%=^`l6Hs>(7J{`Ee zH*t-xX(**5twoVSho<&O2rzx!gyIVy6F&pli}+BftjtxMhZB*lk|&qy$c^L7MJAX?{~*IY30Fp`kBZWgB~4x#0<<0$_mk_+&Cz@uk1yg`ebJT_={L8y_{jhh6b(Y4)%AG+LGnDa5Hy;VF#uN0WH-$Tkd;CGo3y`qww!&Yb zVSO8Lr>mn2`6;#MB2f&y?>ToV1N5MO{yQI%){YdEqNBV zYI8ejRQuSzi9_Q?2Eb5Yzx9XK2SQ+s9IB_HSQ6$$?$)x0tSpDj1^67$G7 zWyCj_{kz5@+;oHAuHF1{1`aF>oz4Th*^8`r;G`P-6U>OBI%R0z(HOiFU{ardZfMYAl>%OWi1=|@)De?Fibw-(x z%bdiDQ zXKZHlQ$WE&;*^OPoXYt6GxZlbu0{vRGI@t5Q5`AKpL?U=oW*?NkAHR@;A>&EzmB9k z{->)R8|}mf&6}a5>zB%W`UV~Il(FQjp)$2|uDF3;`EyZv!M1_j8O6E?W;wzxD*GI} z9+q>(_~Re#s^Q6DR}|<=5j!B)JP^3<2~3vLINc6aG_7|O{z1y6LvXjks9-w`8qmbz zsXEJ_<8Vv1YB~uRsx|fw4hV~U*A_#~z8wjhll(v!gebN1413AvhZg@U*rM_&$g)7% z#R@i$1P|*+*f#-!eP=%+-SUUq{haE8>h0z zW46hfI!~+q;EjU$KnlZvaJZB5RFa`}7Mug3t>P>cm8i3*ZMPg9IaOoDQ~^Dw;50H9 zabT}w3ln9yn~a~_By~r`cU0m==?CkbGk|L$AW47&lCcLXW)Azt$SKplg1gB)$7EMK zXwLHj{L)gF5BrQxBqu=pDC{`LMA($}+O*o>@$kaPOB*yC%9@F->ZH$Pk%AqS7(a8m zhzKZLMXr5o{^u+8T;;I2Jf*LJUbln{Wni1gc~5v7SrS!VUl!gde&^#zvqu(1M(z~H zCHN^|K4j(Dc~u2~eWC-rnuz#imH-OI6xR{H= zgDaY<_5PLrq&Iqk-|ZeqCixtkx^wH)bzA@MnWDZ8b4y}OD79y&Ho^HB!=?+G+ry+XeMX9>p2mW?{*YnEG$J~w17v6fI zbSX$^JS+ltM`D*f{F6$>;BceXqC~loB*k8Uh>rM+!W{d@J^M{qp04E zfd|xZD!2Q3t+T~zeo)Zsk)~}R!O#B zlYAQ{%-Cf1Z^Hin!m%s5^BCs5PhXnjs~Bm_8TWybu$P3i3jrw!=q$g>Vg!#7HD)DR z7gnh6W&0%^@-=R}1Bzg?>-_05`S@o6MRieAUZD>_o`gNB4{aF-+Bxh@;XkVLt zX=z(*_7P}-21iN?-{Jce{a#{cr*YQb>+-+YPR0jgr!bZtDmJKP1&!7^e;e|>-jm(x za3X&sUS&Gp2b}J8rhW5Ej9U~`CAWSzdMRPUSkS?LkoUWGY-RJV)y{tqvoKC?Ka4}9 zCd(wf1uC0G4YG|+WAAVoUn!L+49#AQli4k|doIJwKK&}*j%E48g>f?KnD26o$0f;c zR@pjn<QzSrXWkjK^hOJQQvm}Y`08bAR^<^@fRzV;c`#a)j4t$x2k?+7 zD~`1k8>UQ%A91+o{*Dl_ul~u4r_ubn%(@NKfz_J(3&`Di-IbaJ^J+9;4e`z0je} z!DN`MJ3!!`3dJ!=cwqU%)Z_CzE}@nu#9UL_$|M|&i%;b#S#uKrz4mgi<32D|r%oqMnO2pON9xl0!xk_w$#kg1(`!ipWpd+AFT z2x|M9*Q3+u6-+3W>~eO@OuK4bDItZ#cr#C)LpX&`xQ_4Gwo7!3jXyxbhMal?3jtXh zVf~~om{iYzPbkd_t0xo#!0W5lrAWr`DPE>tQS32+I)r2-4k^!<#ABr>xbNr{7_o-w zu@dx_zLQDPKVt_uWB2w-oqxwJgGS43?CMSeI@C1B?Bu?pRFCdrk85cKbnWA>SgCVu zinoMe+eK4BS1UBW^w=%vF8DjkE ziTIP5Md#*HaOs(m;W_%-mYC5Ua9210UD1DeT;M#%S56Dn{bVAXIEw5&=-qARn4O^D zHj*Uff0nlF8n5c7hlU|NyJWQmvr?q+pEfVJRh0zVU*knVE)wFxR@5FrxPO27dKB+n zU?Fv0-CbtG4i@9A+Qw{zuPoU!?+N@Hu};K_fJ$%k1iwBxerWX(7Z(f;Ryf<$v0_bL z8Y0>0K16>~83h%8k>Hz}*cEN%cPTH+FEEheYMliM`UG6)=W0PrH_AE#4@>O9jCZtGtAF8T>+*N+<8jbGqwZOa5}P8hm6*5C_X zN`LZ@OP^OH>$SrDVXRk>((>c`-Ap_aGi2gy8C0|m|tip-TD`c|0S0F zC1MHDQ+Wd7uWv)ekB75aIKijI0p0Rb+MyF$-_NO|u?^mfSG#m1AAdS<_^>r_HDe-Y zq`k7S6As_iy1*r`q2;b!e3i+Sc7^;d;ex*~o-N>9Dy$#IO% zgYjrSbv@1SvDBd2!_bom*ovul_eO$9`HFP^@j>xZ;GbQ>3-N_e?oF`}m z!AJ1QJ*A^XJQXHI>mvV{XG6pJ5A$;)DYrtNHM;PrUxC@eJ(4NI;^i{`u*(^uC~ZHk zPWFBMRlMfrJmUc8K zM6xW_B_!Q!jG{*@{mg9BEJS3eZKRy-vUK33@C@!F8<8JQ$j@|WW}JY52E3y`H?wB? z_TS7D&EJ`**1Gzc(^a{hGw7S=4Rh99GIzlwysA1szFKm~eSxmrhwMSs9q@4$e|y-u ziYONHxFc{kW%JZImmDw{PjQ5CVVo(`y(?%cGbFQ!&u^sKnRr!OlF#^d#aE7Mlc%Ns&Z=F0PQzB&r)B~O`|hb<_gdeIez zFoiGbW?a7HK3@~_axfdUbWUMLw@3Kp=GU=*SS3-JYo)ex=^ss>TdnTPp`UWxFld7P zA#dshP0(u7>2pt&2kRWSHb>hp9#80JsFOoRwz3 zobMLI*W?7*j1`Z#S647tWEfaZ$N{kXbh+X5?L@VU(EE2gf-F|A5vQZmt&ZpvD{d$+ z5`30=vvKeZB~PgL*Z7Z?I0_u^-3M50uRFcxM#AY~@+z|_@k@s)S1rk~m#Eyc+;eNA zHUA(&;J}8Eo9Ey$-)7%A8rh0%zbm@MTWt6a=zRPQ{oIpuifEs3*Zsm~x?=_!OF-g~ zp3QtyFRzQ`Rk~s`+K-HCmIuw(I>O+U8QlQ0(y{u*cQLi3q0^(lC-u(|oKw&4jqSX& zD_$%iCLp_S?$^r~+fEMJoZaLmdp`1AUn{TZ;g9&qMJ$}E*=J}fkArum=suc+F9=qb z!0sNk)VoZ;oR|aNf>R8EVm&>2RNh2&`lw#RLdVLtqmcVNTgF3hRAgY@y{Nc(8>Q~R z{`ZpgUGiQ3Ia=|9FfbsebCvHZ*=UX9l6-5#ziLBRoQ3Wz{as08bxBHf;7Q2J& zbdhK0AF82=eBnwXPXiw}k8&`Gd=D1sM@l z_0-4nOJEdRk%}Jxd>z)@2!DIe(N*^RL7AEh4^Qq~y?mHS)y)LFFO0G3dlGfy3{>ZC zcEwo(2zrzr4Au$GE%89V5|r#x2rxjMcjM3oCF)bVZh8SuPtv&1X>FScM^~R+!;BAk zu9-2``$Yw{bbXk+wkF?cL+#)sYpN_*#T>Pfj0(?d|HPMGOy3!c5Bt3}AGEj5l%P zBDQ{p`_~_llhx$-r>{y!mUvv+bc_?pwLtddDG7zgS}-ce6b^aIrBl=wZaCMUAWM^sm#fB7I5t^)z+zBcq21p+`|4RjlF!E}$Cp;dvoAWfKSKN2Unz1DfU{%4 zKDdq9H4Md4TIHvG`}Xq*w7zh+0b5|d6|C-M4ffIbkmR_q1cTDB6VY^G0N4dzfW`A| z)Ck!*^}FED8y!im2OM%G1lJ$Qv0ZPrhvRm@A=-G)7K+wO+I6Kr_@`Zn5SSl)+<9i^ zvyU~X_*Fph)=S4gY8MAd=T$ZIb+}s%QKqK?#S!revim48`LyfGtDpYFz^f|vv1#=s zo-s#^ycTeZF|~1*f#&T3scH>^d*Q;C{<|B<+_4M38N-+9Pys~2c6p8LWE#<=+@Xs|JdQ^TtFM?52y`&{u6ah}SP7d;~x!c3H)Ty+;% zT}i|5!(M-I2lCG98GPn&Z7rXEm}W(wIlp0UyHqE9IF069*?5VxI^-7YO^(Fj83_u+ zBaY(J9^Vv2Jx+&h*ky3wZBf+-*9tst_7*twAfP8)BxXF6&SGM)!APYEt<8C`;$C0) zmEkv#sx#Y28=Z2e>l_QEI);kEm@+_C_ImXY+}beBJ+dP%?NZY#=%+0piu>FwWG>`t zlQeb*I}0NR*@7@g?)arbY)V+LW(*PG>-ywD6B)J4;zvOhDm&JoNM7oPc4}>_9`cej z%7n&Q$zmFrknajPN2quenMG(~D2#^phnnlVxyiuSUm5>@XA zIoyZ6y+3bJn~0}{d)mA{ua}_xcp~Q9(ng)eJJBlljv}|ckTIQZHk{ably1u#^6r{U z_Tl(LpZM?ph&ned(XOD6t_H2iyU`@8CYH~;?Y8A3a7 zs}pz$P+?CM??nhs>eMqtC!(=bS8PhLRk`R~B{5s->it~}{r5Y!!g4V6KV2sN>&g6k zb@_8i{y*Wh+FRxMnj?aNKW(P;pe3N^DQmY&Ex#=Xo3mRFaU{!+;Y>%%w389|aN&n4 z_b|=tgy1bf`hS0{Yc=Q^TYcAx!T{&jtpd0tjGh5;ZjYF|9kyLgNsi5a2D_?;rSo5o z)7VIpfZ*_UN2R5b4_(TmpkH1~Mp^q}R<{{3GZE`HHo+2h&z+{NKOj6FS&6cuZ+-L8 zHkjVBW+36T9@hvn%D?kPy3M-XU$;suqU7|+8lULUV30tGRlyreAL+f%#6_L<)DFL{ zd{=ChGVGFf19X>C-($FeTS>x2;G~G;Tkqq3xjx}e(NAt%vbCt)b*>r^cX2-UEU&7! zlX@0R9*TEZz904Mt@+Gn*_H;9?8o3qvQ)~w!sY{dXIoU~J>wli@pp&^$#iQB$?Cxd zGss-j%-=X6a#)G$z6tg11DAx4^@l{(66HmSw8|~H)h{jtNc5Vp9|-sj5Fafv@4xSWmkKc{ie5~v0J+St`apavOs0f?Fb98IBK(hIy6;LavYhLGye3JEm^Wl)vvbKA-@4>r7fZYCA60tp#qQ;*sH+*{-8BIgIJB`-nK(bqLM9%!Gs_>03qBfCD2JVjcY+P6Oj=3FO|JDDw0eAYrRBxIvp z)YW{rxphU-#V{XgA(u2Shya!g?sVO09xtDKk!dgN+`zqy(`!l_o4-G^Xb1M`T@Fb- ze{tLk>XpBteAsqYsoZ*SaBJ^jPRY7X*DIYQR~z5W=`bVuu*T1NoB1LhAL>U+8L9zI z*>(l%gF1&V`Dj!=;)u(;TaBRgLbORz_fe6Wwi8wfP z)1en3PkSWkWUz0mq+VS99E&md3^-Gn;8`q{ldkNiAP@_zjXjrt1fAF@exrx6TnbnG^Uq`i4y6Jtvc86%B=H7-6LdSrxWYY!yG=7i zb!Pa4&ZiOevJss3IqVywB8x1#F%A_Eu*M0c@ycbvi@Q-8nnhu3W?!2C}lPFrm;RSUE!)&nNH z>u&$*@(+Tu{-pY2#^(s%ncw1P+H^`>ZXDaRZHBTl2quKUsLw$oR2wHKm^mcG2;0T( zUVqXoqg!u8_V~KOR>88*#m_?H!h^^S+Ud{RqSd2sL`;T19psx}Yg0l}iCp^&^HNr6OlICUhN;=gEs(x@qc)8;FwDf`7l*h z6mR=>ma7aR(j^h%Glc&ACYQDcSSP8yN>e^{s(xij@?zW2mP0;T*)n7Itlj0`3cnr! zY9TMkhPjmWb({aCc|<1d#MZT3)#pm=u6UP)$IC6OvbttY?-}is)EOR&)uz0l9}RYww&>SzxOIp#gtLeN zwGhYCAFQ5mhSX}kZ|dz!yf=Q#K6dcixGL1m)G6hh{qs)_EHyZVY^$vv`Q10t?=Dxn z;>n}5B)j+kFM69vvAg-}+7T^j`uXe+Jjx9XKgJm7J@Y_3rjdP6F!Asgf!Xh^vs_-V zl;ha(+k5;k$c-G6{~7R=vCqq+7H*ltIRf}$bbWg1E{ zgBQ!&bQQm~@~b2BbSZp8#w&@QGef9@4meesn~Yf>{(ycl)+2=N`Bhha9uaivwC*7OlJK@cp?=pMe@MLDp6S zmTyffiQZ5HdUT)Qko9fk{tiXFWj1q!n3Bq-whu7@6{h543^st&*uIg7eWNlyg%cly z${|O1j?3_U8Q&2h6eZLOVhff4s}7|)lSECBl}CKG=O_-V0xh!aT=Q`e#da_y@Ol7X zplDhLE6zYgxHNoUk!ChL>1_oG95N=z5u{hecI#k@h3PC$rYexhj808OvMamW`lKxG zB(-O}W+;zmw52&>p0OBc?6cX@7NNc9Ejmx_k1eur@TvxU+ev37;t+IJH%&vH4#p_U zuFdEmVuQhYb~dy~6XwWAJ3E5t2iQtx$Der*QvkA35s-}_0se}t2eQWNU(Y@QloY|Fv*E;iU?I-RgTUmOYjvNI`$hTYi1W##OI85tUK z9zolZ%8}hrTdPbkky!cc95Q?kPRP|4NoL`QD8_nws_?CxSuAHddMQ7;vCts2;mnO2 zLA=s#*@()ML*D$9&nwce_fuljY?fcx9%+;FRov2aS`^n^Jr2U2`ijYUsxWp9V+QTv zF;*?p9RlD2I=$O;tQk+r0^&R3D7^SXZt?HJzg@yY)ZWoJ3Xbl&u?*xaNr3v{~Q-faXqqzh2=)%qzrvqG-O}*a!9^9oCMhsFH$)@&OsOR+Otd zP#b5uTs^jXBUwMpw!;KWqTfo<^aPg9u2reeuf zgk|KJV#}bp%IB`{0w!hD$}=Hlv_#N+C4YXnRbl_Lx0@n3V^|Bh+AIC+e-od!^DEI`_qmMr#Z)L6!k*qHc2>xX?i2+jDUV+GW@}JWB20 zt$P;^tX8$c40|Zy>KOB$?_RB#0rhRSbXJOn3!va75Ac=Be11zZE_AYdZqA0S81 z6l{8Xao5cE`#jR5J1xrX=Qax`VS%v>U37fjYCGk2>^%1)*eD6v8qu^B+Th8G9Ra#d z1|yxeH*H_xN4wh!*Z*YI!yn9huBv@HDrX}%_j`%1)pJcyDxr?=txgA39=Zd&+W zwe(S!L$r6xECSB0E!JiyOdDAIq!;|6Xd{a)-`8ssA!sb!INRmbUq2!bK+*uz$=JBJ z^+pKp>0bjaIETn^xi>*;$6ppF1vMP@sF*&}=5cr?peJ#nN`8nxD&gM8vkfFqT)KWu z#KY;Q`cvszxkReLt-9c_4m#7F)C~ z@d>PN!av~Xo^&v^()1jiRjQ)`SbBG0lf_hiL=oUjU_DjVNF}yO#YB#yPQb7GLYAW- zwK|og@?Dv5eU4uliGhw?Z(C735$X4bW}$jbsHHp@`1)r5-m)sj@(>kz*kX8yiGSfn zXBnDkW1y3>0-i0~2_f-8(+}ROo;GUXi1x#(EOy>}3};&J<=ZFlhNjvH4ojRoekmJa zz9%jKoTO(EJ!UKXzoQ_C?hRSS1%FN;pdkjDuG*gSaA|$OUT8`i@up$niB22HB;jgS zdzmf!ybN+NIK$ESGuZv+kDe*thW~8oOoiA|5Yr-Pav#15$41gFVxZl)2b0dElDjn3 z`RJ|5Y?GMxvM2wy>A_^o7uYns*z{mLOMw&SnQ`=W!c`z_k)iU0Hqhh4hLZT4YBNI@fsqDG+*+&TOt z1+S+69^eYc99q0b$$LgkUTAkkAI*+`6nh1z?TFM@XjGfEsp89&Aa*Qo+KwjE?Rh)?YHC;v<4Kmg!w(tiz$0Z`Djp`A6D9c1r zAr+`Z@m2;|X7xPsPUyp@9ECsr9&IIS*K437lI#oxmQu%>uAc*9bnGq%jA+?D=tM!T zKlIPOjP)CO4wuBBV^WQ;#n z6IlJ1mP&+;Z+7BLnrYHEtT66w;RWZ_pqdx^KEvq)z)wWsrP$}~(HTV49uXXN^c4H@ z*EgCUm0Yz0z#feWI;_+Tha&fRtMQcS;IAjZ<4HCpsjpu z=rK;1-TF(}!2|#Y%6xSKI%N=ftj+*pZ@&pfF5v1A72|*Dem;%4Gl(GKgzC z5VOC$I^_FXtpX~CJ%(}`mS@Y`o%0}bf=34Ztj%UR!&PK?aT4B~P;41kgT)WS>5<7| z#)mj$=dPo(zS6YR00P-W4XBKJTf}=n6E7z4^!BR_j%gKJyt`QR#N1X!{d$+$hZjT( zUw?np2IBoCvxrFac7CgQM2g1c4;#B?D#EtvNS|qcsr58*zJUTv=~$b?5C%RWc)JcIo&%mY>HocGXK$FJ9Dnf!eH&g_-U`xAl1FePm% zGaj{fjGvagf;naSz--A9I1!#C)sOdDC_HJSyU{VNWJ~$aTF{j1xJ5CRFlJ`+KAo%c zl+DhYU%lC-d#+Vk0`1M^?;ptXWjee+{P_hyo*}_2qXZn*W>3G&HrY%GFHlVGN2hlL z-I69YE;e{|T@tI5nXGz>7?C@J&n6+R?9a>u3g5m^(U`zN*ER%6T1Ka^_1@f$DPExo z`CwJoF;u)v6^45uFbJe}c!zIQl|R$|K1YQM0Kh(kN2+EPXGiYYehIQ~y80K<1?q9^|643YGFN6JQK zvvu;4q%5lXHi)10$FgaXso3#Fuh!=gCp`N0+gGHXIMbe_Wg5w%>v6>1=6Guv{U#Oa zV=U~GMHfleS~ZTq!yT{j6}c(7C8M&w)xD~BV|^4-WWKEE;iKF$KOYn+cF;riR~Y&B zlojsD`?!+$IY-Ffh(6tq847$TZZN7$YV;5ICftBI2qS#GrxxG~0(7km`Vjp{(@h~o zZUEb6KLMm=?Fc%-M4_XlC3-G2%p%MaIU4uOx|zB% zF;yw%S+fX?wuP?}tV@p-_&@yU)JiM=%OCX=bpxa9;`a8h+KAU9w?AyhOuG+{ zQl$N*JOam$5q=$s&#$kUANTuKM|2Cjb+dz zJrQEdp#U-+tN0OY&=JbGKfJrC-%@zGe?;cHf>b%VZo8$zl5pso;I{F6!%& zT99$!{?}{01}4{#dZxyY{PgJ~KxpoB{aPsax=-aZg|V$EuCxJw6iifZPXy)%7At3p z`#pwZnIi!xufYr%$p~Q)(vhLu-f4MquG}R_yLkk*OFw@E_-ojG+iCb$?yyE*2&O#6 zrjEXjm8>vy+jbsv#>>;hsUr4V{;B;YaMGg9;lZ90L)#|-82r#YbpDf`G!pu#xD+&x zuR8G}Xv7YJ_4>vll?jmug{ofhJ<-R_AZx{f*0|^Teczne&o9&2JaZSg$_18C!R*R) zwO|Axdj=4{2(O>2yA-(UwAG-Zq-L%P!99!336ePBqVqtVyF6F;^bZ%~KU;5OxC)km z?y?o~yY^m|(UX^~*jja8116Nf=vJCwxW+s$N+{6}40vM(XNOv?s2|lQ(vP&*<{tYX zysO=?gUkKi+_T3rahA1U#SY~fu()Bd%?rjlOqL0m(n*)`EtKagr;Ykccr;AJ5@5iR zU~F}IAyhK*@&r5-2fp@x{RlTulg>A^VfdT~@?dQlXdWRr0;xJjTgF$f7fr<*ReB5IWLrD9=wq$PGkP=dC4tn#stfNmrUI|7N3YYVp0riLdDpseM1Mfa_6Sz{pOz++gZ?yUHMPr%&h$k z=?Fki@R~@_PJwY|aQ&(Iq2J%VVraN0Vh5xhU_hV~{8meKUL&3@6f`>}EtnlakcRgJ zJb!#~oWjF!TUXa`g|PFK^~a`Nl3jC7Bvgc3IZ(pCyZ*RUv1zWVTyMRnnW&F_#93%Z zKlCC-S^^h5Dc7DNW#O`uz?ays-x0#GLpSr8B*C%gHT<5arjk_6{q=1xP`cmWaD0?yl@mNP4!Ye{h8+=gIAH$Y0kU}|du$dild+(^T0YENFJX)&-A zGXk$iqorI!ws+Jy_DN&nAw2MjhFoN)21B{j$Y5wA&TuwP zV4Z6Lot3~bf5HDq&b>d-eC;s~NoUCifJ&qWa@*^?Y;yoF5TotZI4#P2$7J7N3bvE# zX^l*@JOMVHubAzfVoV=7iNvVGHnC4+M=$VmN?Yq-SsQFnUoracSJtEz8JyU-YHWu$ z6U!h?3^WqjfTXtaeH?Q6L(3wN`~3v8V0@! zT`~znTkN58*iMi+_Y<2@)#v{qFQb9YE286j;M*?}%7V8bIDIrVK)!%S{45~DuDC1E z2i+sfh~onL${Fp?DsQ3u43UXUJOmO{NwqJ6akLTF@y!#3kfIf22@SAZ=Z??-3(FM~ z5>;*P7f0K#3YWDK6v&1+^nc*GlB&lsA@+r@aLpj~U4vFn^VfCVPT2@o#L&g@WNNgl zIc8-~e%}h8x~iq`2gD52GD$>`;7uq&oh^j#dW5y|a*`o8>Kl{BH<>h}xM+F2#npCAk1?dow z4nkCvszj9DqCf~e5D1Wv*vsA7kd1G1t~16esJ2I((KD0%w-> zUA@QjHa7Br(&SfSS0~nD4ZVp7Zm+t6o5SiU7C7b9GjmjnZeG~Ar}^r^J$S`Eu8cc} z?JV~Tv8seM%)L5rk*{D80&hw)g^C>bxmcec`c=Cy2m)Ek?S;UkG-?~9XN4*gW*JCP zcjWG$o@ZYyjaL3$&2QfP_sNaV%4?aB0@bzhI4LuDh}`6tYT)xLXIoorG}V#JO_kuI zH)soGObEFh`7Nry=imQE-K5u8Ve4(Gw6fdjBFB8T04bl?SJU)*gjDJ`v6;0ja2?9N zq8OR}TQC3qX8j-kA?BbC^_NP)T1)h zw9Wc#{ESHLlx`>+Dg>-B|qwzZ`h?%I~V zf-*g?Uum1~=-}{KY{z|@O#UK2o7yK&o{%-Sl_`PFyDK&4!YzNbKhQh4Lh9!z;dbWX z;aQ2=cB6t`bm;5fuFaezUq^X9##?@d9m&NkslUY8S4oQJud9>_sRw^e)P{_dCx2aa4yK&{OJHpb^tJ!G!rj&X+jN)C z6V3i>@_SW_8nxGZ{4sq~zdtqp>q=>uBj4d4Q@`_0``@lIT=!o4hZ-8dRXY52W!_c& zyL${}^xrdj3l&fnl`FVfBv=O-rLmvMduKP}oYV=Qi66Kd7?q@ym%h8Bi`CB?CY00a=J8>Oi-4x(n~B z#5rAbv2x4ow-{ZF_mhX8yAJsm2y2O2OL6k9V+ z0D7z9H{+~?*O9(V-jAoXOzq{*3~f{6ToOAM)tG)+>+4E zG_Ay=SnkE}xG?Gez(m96rn^gQxlw;lm+lok`-I3cfC(B~;f?N1CID@Hc5>FA-bE!t z9!rbp`or=AK)nIAK0)p*`b7uLY%X!r@bT$WT*d5v)_4)}!rFb8XP#?RZ0SZazm7KF z3%tXRj~$TD$~xSJr4Fn;mYYaBzynYvlpNP9+&PQw<0~p8Lto00jzQr zwt8h-9`r8s`WHn;m&A68nU*qK6=p35_O4-hFlyOtupv?Xt7FPv4;6Opg%T44d~uOJ z6*MnAcb%?)KAxuqwfhljS9JEV-$Q~Rd|#7V@au(62ZhMumb(llp4hW~P#Fyd)8>@h zNtlxOO~YZWc?iYGM&C0YV$u~Zjzos}3R!>n4d@~10Csn=H$WIjy-yf4-#g=BhhrS= zLjO(rO#g7bJBK~sF2vIuCIEnxzkd5_c7-bHb>6RM(beiFh*bw zNkf%}TMdBnuEUm)e>WxCr#|Df-Lv;*EQfs~J4zI09u~Ky)NNAwxYs;Tvuo;8JJPuO z!X=V09RvJRFnk7g>e()THz}hMPcWE0fcCn&RS*a!hYm%`yN-RIO(o&!Z6ve)ON)T` zMH-e;_3ftfMeOZF>ga2*Qacd~+AUAcp@TBeb#$}(2{$4&83mn2>?4F^CRGkm|XEw2ME#_Y#lun6ITarnV6Ar zvwCI7ve}7?bn2+etsw8`Fc?`-8^5otOg+0#5umprVUQ2xT<(A==-$5w!@yQP6Vpkd zo(mr~4PIyXj{`DzBya&fm)k}|{$Ygn3!~Q%!%WioDK7^68Qn?!WyZDvAvbq$mA^0W z2aYVZ8DyCm42odEwsqL-7{e754MLFA4BzMewRP7JdOLCkHaD5rSp=ueDkH7^7mWyH z41fsej<(G)5M03%sN~II+KL~Iy4}LpP35cbo@no>^Wq9m@yzDV!a@fx?D;MnIUdC< zIu-t!YX`@{u+#hxPi8?dKepz2|9JdfWqrgf2~X{inLA7S>R_PwGmKI&h!PLFJJj6x zu6chU->p{~WtWc}Ik_Cte3fZ?)SioJ2QF|KLg+ygle->$rig{FHxiolnm zyhm4){e$yqn&?0{#QR*|4Z4j zXWV3tUhQw7Cq{Jv;s?KAVI|4&RXx&u zkGCaUXK}Pzr>z`6*(Y>dkJ+uO+QGn@e&r zs`Aq^)=;%P19(pkc{%OXPFWw5ta@Io_VR<}-1B!h$^^wq{O5TWQrKrGq6ww8ISIM( zpY`5b`?BBnjECQS`ergJIGZ{Qvo$Lvr=pT&5Oj*y0yo;0PV2;;?573Mux9QO3f6x1 zvLISKhVn_gP$`$hMs5wk-E-9%>cjIih&Q}!t(1zw+)-j9Tbxh7B z`toeAnU#jmfT_aE{7Kfk%H18;qfBiVdIC{}t~L2%0@uH)BZ}2aR(K95#H(elxO{OI zx3aK&uzRnO!6uyHY_^E5RvYS?))0LICcUXc(2;LNjv=M%TC={X$tSC=7lTC)uB0m@ zHxerA=Ihp{ZV|lkUvLJS^A?L9#>ki2aBpG<~tqYRL=hZK5?jRp`wV1q$@XG`XS30A_kV&-u-jB^?{Xs$= zj1_7GXgOtuVV#>z(ADs1V>n$ve+F%5f^uNX8VNMBHGP7}FQ)`H%Vw#v5bQNasN9MI z!vhp=rQ;X9zym?U{BmM==AI?)5>)U~nGrAuc|Cmp!hv}%p@bL3C!I9_+_Z?;dD1E8 zqC9#8gv_Z@lCd&=Z%W}VsKzu z2K%bJ`3K0<)J=ES-QkUgO^x6>jJ>5J_)Ko-P$?mu*ERpZFSp}NckWTCYA4M@wG4M` z$l0PPAh&qo^`qH%Jf<{+p5aTG!M#S)u7*_Mw33SiP7=qyMProm8f6M{o-AB1J?K3T+3Rk z%Gq>S{g3Jy!YV>=VQton%T4W4cN19!`T5GMSwJ-99#z6Y(`27ZqCW17}C)2 zQ{d9FOQ%^=u>F-Jy|srDg{>tBpgK+V8tA`N|Q5(89O-=uXKt2A2MY!LVt@NNiaUnCpVvjAWfsj)M!dh^r!(aiW4ml|uj zsYUBC58mJN6Fc4p#VZBN{fbzEyBP+(0rs)RQ_%UG)9oRzr?HwQIzf^n<1zO9cwf3g{WRB-n#i{qgueyio8 z0=-H=iEAHF{x0~E>KOg8rG#qs`WqE_2kF;Y#IzkdV%&;f`j=Z-jvXH~5g5+A50Sw% zgmZHZNOUj^xa+s$+jI->?R)fc%P&YSjER7i=!2~i#h`h~l;LB%cwEWT^SqgNn!La4 z$6?0E&xm4#4R10?pT*Ad)E59bq13u2x)t!W6%AW-syP?6Hsd*36XbX7NX%6e`-SbP zVIi3e!G>Ku&d|&Auy4n3Ktm8ndr5iE!4@fqRI63C-|@EJUrDB(H7z11jt6wu7afn+R_HsQP7*BYrCwTA#g$*@(9Py^dGUo3 z*XvBr@rRfzv3HBPiwIIGMjX*{Hp|#{bEv-$>A$*}>bz&ner0Ma3LB|5yG*9XaecHw zs0GX)=bxe^eyZ?{DR#E6dJem^melGiCIk`lz;}HZT+5W?{iDHUf3%}k>ORbL<9zJ? zXZi(ss=4>iLlm6sS_fRjscx=5>3`=W&iT%Nir1s&JE7q$HeC_>w35_ndTEOU`8n8s zfdRK@t-3xL0l5!6uKb^e2Uy#RxI_w)bw+5$Sf|U9>hLE|! zi1Dsj7J%Hc_dOYX^=kk}T8p6pEH1M8yF^;9UNup0kPiQc$SPvN($`C)g}ttSCx7KX zFzWxcPX9}J|M$n>Yqi&G0or=9S!4)@XunEd+a#fY5T(W12_YzZfU_tOFJooA|CvfL zr;pgp*%TE^4eI$Qk^{{wofdtQuv+R^vV2C|u8b0{X{e+*kNH7y$6mesgHytGf`KcP zs}0@t%_YN@!~{=9fS(WITA-L(bRs3W_vu|1P=Z|T1!1?P!Zt!dV@K`0uStq0Nc<(|Rk-do(dv88~F9Tz0A*1ctkQ+!9{mJF$*+8vv@^ zMosBd8hCAt6oEViKxxd)3$3h5=DBGm2(>uALG}4d^dEZkM%z{Ug*Uw=sScN}$walG z=d1`K>xoJGa1oDO51kvv0KMx@hes9DDngk3Vu)IBXZ9`P$nS25Qrlm@KbI zXtB%4NV33waR>V5-^b%uAT-{0kMINR=|iYx1~QaMcHYrrzZ~iBsf5M9b5DER?+;-~ z6%~vH_2W`gvjxBnuaz$fE?;TdEm2~b=Fhdcc)Q63>oZI_v0aUVb0RD zn4a006|`V6w$@jZDiW(`ohqwS>}|eZGj4nzah>1=Vu>_3%;+M0wVSqmui4=TaGUKq zyARu@hTZU)j1!mxJF%YaGF-!l!ukk<8&{NGr3JJiK@mZ+Zor0!fN|;OtXb>TB>UKa zt92V}VA*_K>#dmZ@oQpGEGg;dRV{onn303{g@3po&->!zd_zYd8~E%L z6wS4Xu6{@*!2NYO_ym$NRF>3VPvp1Z3BmL(hSAr)@2GQL8zXpEgz=}S`e7!SJXa`* zl8B?v=%n&BAwtzzAa_ts1I3rt{y)P>bN$jt3={)d{u94qs18o9u+@YPA7upn13pfZ zj9c@Q7}%PxQEI{aVLh@uRo(Khr)e={B3q>EvG9mh2^8B#d%X z%ss98ZK;=%Ab#ll>x?gj(R&`z^zIMvX_gKDneYhJ7k9Z}n*{EzsfO*S$K{*;IX{a?A|?{|^_0?k zwlf%{jFS&bap{jrFJQ(xXITkUV z*ddzwwtT)kf@+|R_ORcOJm-M81!+E>&C>nPd>vmM;`Qqy<3eu2cf*aZT~aEl|G(>9 z=e8ogSaH_4bHP;z2ff`!;!YL3#Mwvo`%U5J|Qk zUCAM)D4^>`Kh3QTyMsh0L288;C`kXQ-dqAhBMm*M2A|i@#_^iWjLtX6pX;hf%V%i` zYQ~V=H`ieb?aX>@I(lt+Q(>tGP&>FIgOsd`rNX9a_&#DMlg-`&XWHy!6_4Suwe}qZ_HON4#^35%Rv5s|9P!w6HYg&p|-mdxJePa z$f>6%pI!D14`J7$`3|XVzLk>z1^a=m&02r8Im0Y72%u+H@L~eXf*tKL!5-u+LSyvN zGl4x}JMa3^D>KcQqev^PJs+o5WMZL(C=TuUqc82ELVa3kd3`>S3}3HRr7RbQchJOK zU797K>|hwzexMXhrx2%gVD;7^q~7TMac0C1STY-g7lq5h2EM04CdP+!&*H4m7p*VuqoQi%NyvMN{Y z^4VO*Y&=iE1Cm<7eFfnijI$3Oj1di(3}xw>Sm{SoJJCtV;IDub zxEcrMG#UlkNrkC8(`$6p3g2!L{Zbm&noL$!Xf>8x>LzVxb2pN2SKHZg6scCR?usV> zFM=7y_U{VO!}|M1r|n$7%fYsGE2bK#5*85%qbbp2_1v$RK|EaP5@Ur9Ba$`PcB|-* zCZ?*}O|GP>nBaIcoRcv~%ZTbgicnR7&t8m!dZ{83Rt5!aQzC$BC*GGkCFYAHyVw4FM2yr?e?x_lxJz5-bPyYK zoM9=o;te>ue(xn@FGkbNKS*gni8zx#^foVKY~$uIoL7e|N>8z9nnM~2m@7wI@_0E? zjzO-Y7YLmJ7|@73c+{`M3uv&0WQbJHD<(G>5tUN}cxClF9VW=% z&iSZ$;zfm6?T8(%RhXKcdDpzqa`BG-pAKP)E zW{9%+pwy7LERvHFSE!AyDm0_Az?Btj$cr%PwA#CrfS>Kvi$}X(P|kEXIz5@Wf8+X$ zPRxd)?Do~z+eRTgxccnR=+|`PnQ|RLlQC+F!U|uatq>N!6=+PlZkD{0jhaQ-kCjCO zw9;7x{TGgVG^26rGDWt9LjC-Xv=v9OuLK!5U>48Rn`&GNMc*GlWWKN~GfJ!CeTC@Z zIKL3dcpyEAr<#fhnU^F9%8gHa-1SxE)diAc(p+^uxF6n7@RryQvsPb9L8C%U@rePe zaVaF7HcCzX!YmjYL{nZ8R9KCBo8Ba`I#*<`@;TWR*n@@PDrmC)uN_m=X2q=CTm+?s zDOpcfY9y*Vs#1^5$-q9~DK5jP1(m^5bx^Lr+fGm}(y9e!Q1fAPj!$>BS+yIU8ZgP( zgw7!Hu}N&sH;5U^sy$v+O){3Q%eL)cVS2c*!|5D@)c9YdO5*#K&3pIPbzJBv>18Kn zr)(4d#lVYAU!2<<3)8Ykcaow0&i~Qh;o?WuxsR2G)Zz`LwtxH|RCM|t3BDs3N-mOO z2vE*mH$OYcNu8S!nwUUtgn7-ROG~A%e>H6X-cVhJzH|J!Zt|Iqs&4ArJiXD|>*v+0 z{$vLWdCi8;>zTyVue5U1naq`*u!C3>p!@qbk6+J`r*Nl4W;v%tWE80A2Dxt9oD4fs>yE zd>;QD%!e-!ltd?y?o?DYYzSeQ8-zLAOk*T{22`-0yO{AFwhil5;jLmQi$3 zU;O5Jt`0O7Nb*!501GJ6J+P|x-RleYwZ1L18HU7uqISk}K{O82hIlwGj(+Q!0evYac>d_m+TrN+edd2WG*Vnxx9!zeHV_UCEN zJbFQB)~U55h(5CUg4W?qkJCxsc_0ZWZ?`#fMX}+Qy5^{MwvJ=1&Y_X<6?b{;1_?){ z9Q*VkTf+a;&0Zot&Kf%E8uB$C6&X0i4J^v}nA zZb!6M6Ei4T_)gokGg5Yp-OwN~WP2WOp3z-za-uQYy@0*d#%^MJL#^Mh12ic9Wnb}H zKkU{oV%td(#25Kwx)sAH;Hu!^!hR#s zTjiJFL3wKejE4Sn@ALQpnhZ@dqJ zko450YqbvF)R}ic!I}`k;blJ>tI~u8xkrvgmx&NJ@jrjMMC^M{Ia2nCRhVg*aq|t` z0z~-Re~J9G?*U2nMl{bw)@nu#la%yQGzKv{M0}g~76o}b!r}70Y(PA={Zs43ALe7G z@YfX2164g&4eMTsy)+%;bwf%ngB9!2KdKLXs=H073fRM&J$3Sgl7L)Pr1sd09Zc~N zOuOXRpi`zHG( z?YX|V4IR1`O$$soPy}8Ap3sA^i!ktKtKXG8+IsePfbxtvIg>Rgc^LCJ&t_lV!J<$I zUAb+ql*NKzBzw+!VPEim(%W&K5r@bP9jXXOc~j1*e7)n87zG=g^f+Q96^;l{p3N8e z&W0#!|74>41Eg)Dk+w@aLI|81Li}|SU;2$Ol3DMsJemf&!B-&3k&`B)qZ!EI^LX$` z$;Zd^#0kY+39Q{fHmD6|E=XMyugI8&tr$yey#nh7UV)$24i_d_7_1`6Cl6tMoX}WB zPDA%^1+i?Afq}?y@<_bNzlMZz{EU)W?gE{-#J7D|5`En;)z;TS`36W^@PTP{ENk6q zdK7qdnbqw~ar4H#$&I*vCErN)QNkNS(NHbIQzP8AAIz$pAfg1VXS~y3Wd_t1br;)i9e*WxFZTlU*O;KkJV7`N& zA5ks^hNLLcr?nl+I{Lv$G4*G$s+2Zwe6GquUP@McihRyG2oMZ0A!GN7LRdfFE*IxD zhw`=)Ww3=_%}(ws#UhJnHXHrGiwR&izyPW2m$SeMek76S=%S5uu=Zrg`fz%OlNzp5 zXm$8_PUn<+D!bN!o3ExK>aJhcAickqvx#Eq zm*c3>lxTXW`kjS?Urbr2UzSCEuAWAN5J-m(Vihs-1@P7k96_*6w553H510k(QYWZ~ z@F=Ma^r?uPM`DT2-cJsvzkbjL@pKwC{1&8=ndz!(1hcGE_~PWl%EmyAAsW?t zTAG~bQCPNBn4LZ%rR^q^IL>IFA!(K-LOluze?52wYJySFsOQN+z>J(TKH0Ic-FA~q zXT&L(>IE3Lwf_ZW`oP3@8$aypbuB$%Y-$XjpDsZD$(HAIbe+`?J+di0#Y0%TE$g+@ z6BGd_XmJn{Vtql9`lNNm6-S8ZK3`U?tro;6aV}^2_+NpmS1S9Zu4UU-9;th9`SA)^ ztp-Aqk-khfd<%Yme&%IU)Ox+KPAj9zXIu<%WXzEgarW7CT@;^>cNuPErRxd?(O2<( z)DP<_vg@w(P+FH7II;@mpbc`ll35 zc5^+wplcMJ6rJY9SK?b6t&us0pveF@!Z%Jf)zcvpeAtsR>!P;2ZAo2H30Ku;f_k z`v=$bLV6Zz_ei|>(6&4zgry2qCGY>{)WLm$E9<0P9$oU9@Koy~>h6QY_Yz&OW!JHH z*i*)lxYl-!PTn(lsvW1E3C`&o$;lrCk3QyQxuPAVKZ#rbpGp`5uK~ueHB@b4b_&#* z1op#^CepuSRP(b$JGIS-1=cSPTlnUG&ZZ|`s@pXzV&V@<@@1SWt7D$RAi^EuWw&~7 z7cvJZ2}su~X&wX~N6qg~0A9PDka=C&lO4}$_sBBGnjumf^vz*{q6mZuU6dn<_wGKL zpc*i(A^4n5DJ=RXB1pS!oF~|Zn!m2g#IwChw@#C;MJH3EX{e-dTd$~(5NIsAS2F_` zr*h-r&hh*o$;Z+UJ-v_*wXdH68>b$`L*gQ=@bGQ>E48GS7hihd_%*fNM)k(2jcK|x(AXZJkzswZT}I>8FO&RcVIu{WypAr={{;cuTKXGw02gZ}q3~p@0bzY~L|k zu$6qa3!DGQcsw{$ZC|_4-F&SM(JrhfJ$A(}1AR{HE*C!ud<{jM3z;o6%v19PiboO4pRho3-wWBOm331jn#3aNvE*FPE5~0)Oz*`*3Kd^LMz-K(pa9JSU&M>4@Zb>WS!8R!|umogu1yyq1(6qKfOJ7 z3cEpB{}zSb=w6Kh>Kn~FY6@_PzDjpxoDz?I78CHbMUwVvh@G@9mgJOi)LNz7*Y7ch zq4yt#G;62h8{t_QO58b2l+H{6r>|^*VQDuY$}1``;6Uf!#ApD){i|7Q{OR=OW&(_p zeCTsEqVa-exc;9k{5LrJ|IY0>YxFXeI|oJqW`oktea{M7e8$Lgx_Y0vZS0teDPn|W z&hX1js&LE;`gt%`a_V7D!P}^F4>jSecG9}fKc(x6=&pVef^J*fxs3 ztkoQ`JT!Tndj=y#42mY39F_@K*8ld*Da&Gt*cq?ABp{=#^U)dt?*1P*RsZKGjsFuV z(efXU63boB@-aoAE2zD|&wYWP?R^c+Y(lOFevMOaqrc_gBs=Pg>{W$s;o&n2Ab0O~ODnJr6XHf$VMBcVq@Oim zl0{5fU5=JEP+5FyvY#o6gL_}>g`I9q6sN&k+0XV=m*2`beF$Ej`2EFpt0IeW`n^-9 zT9{6}<;;x)V$Vmh>~4JlEk=)?I4b&zUe#vlo4<(S9NTNcV=_N^?zRw7hS@o&9Zdk% zyS&F`GEaG;G^yl-;DUhokKS8qwtDT0UalNbhqclGPU?+7EkocRTvsaMuEn zXN-6yVX(zFCh>DF)f_IuzO{J%zIb22xc(BfvO^F1g8@DEf@xzkZj5e&`VF0-&qJk5 zyTti3W!Gv?h(Sbtkn#26J$J)JPQMsae%q7z`I14}F}l(YQE9HDp-jg>uQYGWs}=XE z$^b1ay9CHdw!_v3pIHxm1+)^OjXTccjluJAZycvdVBdWu9bY{FaqBas%&QGDX1; z7u1fbtXxTZjAD$=`4RAFel6I9ubwYs6*>Jg^RyNnwLUAaIFW4sY~IPLuaHh`UHCI(z8CP$h2RRhC9vJqg6d#D)%VK zlRM--^?qKQ!3B0w>ck;ZDq2q+bZuE~>tw~;g{DZf*_ zCoX?7V+`QCTP`W>hwc_!l3_cMYhYjy%4A17ifRLp*QHbxpWWZ$u=G~lWNtDyDfQlq z>tU_=^(UTLlyK&bZ?$@3PX6EI{W$e!kU{5xo}-<631J0KPX2RE)&Y;7Sv3ArO_3Yx z2h$?E!o-O(IxjwkKeXRs$M-;WVAN-QbY{Rl_7VeETe6Zj9s*kDnPIqC(^FAv{a7JeFU zmyS3cDm!oxY=e=FDyN#gAANRjGYNL+Q=H&ZA<8g*v+lp(8sqJlAMNr>`h0^mmjKH{ zQ;Dm~Y#{}TRibWfU~UNgVMM)Dzx-f{OdpOa_?EchYM@UB(g#bikBzunFt6rh+Npyg zg3mD#Z$5Mn+R=XPFc$aMNxf*UTojfs*9Px&N6~}e1egx}L-w~z1m(&_*HiHYcJ{2X zSRjul&}opFHEK}1owemg3uT!iVhennV_RVU&VP&&mvLHA{$2cZZnguH{pl(YvBC#F zJ)pSsZZ#Q&xXz|L7}F1PqOPfYleDE1gM4UhK%?Myzmr68tP5;Ix51*$_Xtv&rgpZ5 z+3#c>98j}kvR@jf3gSUUu$2y>Le^`1B#U*y5boMp=j{}DL?JHoY#K6f+&|JeH{&#+ z0xfjDO%!JT~<;4YmeW<8^a|4286Ym3lFdQHk2nmYK2GNYBFTZa#xkd#l{?(os{ z5?|&8vRS>WH;L+ zYi;PBd*IL-E3cSlz2)RIrJH!C;1);=?O)i4RHw zhFYMzA6FpMm)V72^_p(*pJ`Q`o@3PO5e(*<|sqr-M^M;lSC>^F(-)?nS**f5Z#5(?Kv2xFaj7;LISMgB*cy5|%BSnk78qbGyte=L5|_<`N)=iK#=R|f~3|pYwNq*J2y|SW$8ns(gW?$djy>$<~|qZ^rk;! zz42pfuzua{$TQVGXew$93=pJ_GqKl}Je5}tWtc}^fiHrc9l35^=U`Oa^}t#*g@Y+x z(MlAelwsB@O{E9X$=o>;u|e9Fwkc@AuU=0-Koc+quoEu%XN#V8gxP49 z8LpND4NNm^JW3_Uxk<)nv-fm9owsW^J(wp_Gv%CpHj>UTC25d6GA)uT1J5RIXC0Ba z1Kox`7ts_Aa!<#}4~55P*)|))KW^JmbN!pP6Z^0JCK;AIIaaL47>9PH_@a+jKWyW0 zD$0rJ5~8@TVy7XWd`liJ^JE9H;qXrNCyjXM&9bps!c@9@7hGa_ay65RLj>I8eVn2hIWD=;{ai zu1hu0s^e|iBHA48q0WI{)>iSTuB8%~pNiQAKN%ZVpPhK#Ia)@zLi) zL#rZv{rPvi^%Pe`#|0T*G?oi=L5Oh#iDAIE4m6nY!vMDeHw@L!v&np`b%a0Z2bFeE zPd>QWe4qJIPjJ?*mEz=e*dsC9{mazhMrq-wO+hmHz$_RlNWBp_b`P1l&N{PgVRPGL- zppt9g^ak(qbiU4Ew}va6CltDgMHSZP@mWE(%4-AmJqBiBUoQ``|Ekeh>mymDOAxZ9 zRK@SkFX&37BCz#_CF_u6f&Grd zJSY(A0-kN2&sx^EI&IrY;d_o6(94@L#M?m-9;e?}z|4k|fSG#w38hj$?|XE+QRY0C z(z+9B(1Jv|uMJF@+oRh9M7LYhhq?7wTMq~rADflgiLFbBjqlxi=nY*$^KEnR+znd8 zV*Ocu#D>XtNHzX^C5C#Am~%uYkCD6l0#)v4ylsns%gR|~MygCI$H7{iBJs*?Xn(rt zp1C*RM_SxwoXCej0sz4_hR@9E(~YrZNo?<@WJ1k52j zVG&O4mk~6dHsOdIeVN8{3uVm*aHOZ5{rSM-ZM;VvR?!^W!*-sb00;C}f%cf6st0L6 zIteK0wa)RROTJ92XC=?--u7T{>kI{c;PNW0Jysa`3S^j5t@!XK9|d}HoilHn4co^< zQ(!(pK{>R>8~!?bD2chprO~LkkN1>=4@5jYeP>1WCL#BVUoHf6cGAXgp-Ob`2JNGX zL4bxbsYjtu4gW9*Ci_cwRC&f8qqz6WSVxw$<0o&I z{pyYTfzKgWz%Za$eCCQfBC)~#)jSgIz20GH^UQb1GjD`_<;r8KpxrKwNpO|y(maLB zPb;TVR9@aZGnacAthp4z( z*8J@gw@nV9$iKDYko0*U^76>^nGI!)ylV2+TeLh?L&O`othH|$mpxi?QXWik)m5xe&ouMwd8F@tR9e3N{0xuDx!#;Oa?k3Cn zyfF7EG{?pkLW{*MtA1T~hu}jka8!K_SwoxYzJm@0b`X+dHtoxM)V{lB%-%4`fK5>A z`Y_04x|Qpm5$^jFG?dRey+6}$G&xp%Hs57gjUoP?2rzt;es=dOK%dRvh3Wac}*^_J?j>yd&hz6P)?dq_fQ~ z-J?wWmpQ!~$hqkOf6@0na4(;VS6;O&=K=YDnCZ{4F0za`p9tZvGwEFV$4d)!Ae0v_ zYNohi%&I8w`WFb6HeKCoQRkaBS!BPf%+wRAyKodGj)Kja6V&=5w{VwHC0z&lwUVs@ znbvo&vbVkO=TWX=m8{;&oc`y*gAOm_5&wVc(Mt0Ith2LorgkFM5RU|nliU$3*I?Oe zPgCD2HsU{5%u97M&Z|la(EF8c<^cW7HD0piUH*@3KX+6V1#{@my*%*rPDKquw~1#r z$)&8THum}Hn+JSwa}qY-hiDl+LtyCpy_1t-U)Z9IAHkM6VF~CfoAs+@qXM~1ELrLz zFNf?uR5q%DBm_7?UcYkTO}*jmKA!%4X@AsG0@i|_U`ZU`H0N`lmIP3A2dD7h5Cz^8 zq(tj?%1CeW>U0grH;8POoBGyRNB(HrM2!m4_w9V|q6D%DZc4$05|nV!qLa*rGjvi2 zOO_pE8I#9KpjoU&d6VX=7Q9YYt=1CXIc(6vIQrBAH9Yg5K%Z40c^!P7Z}Gyv z3e}*Qb^4}BnT-$yU=e=E4IT3dlH#0&1{Js<<_L4?XglupprGw!KpWYLP@C(+Ic{yzvZ0_1$1*Dk0=d9{uAY^CA5 zy2ZHWo=5^8xX5`I%IB23(Egy3(}fYnri3iW_oTz0#)$&PNpYyCS0rW$sQs6mxr)FY zqj}z6-$#lq=O6z(kEAK+ynq=&V(`fALzq%eGO8SGp*QSX$GVUDS}8+;c;6t0YsV|M z$ULHVRwgpgs$%@$=ZUl5PDyJ=^qz72aD@LEDgm6606V$$mTKb7O@Ff0>D@99OuBqA zHcezI|Z6{+p87J0H+$)$2N1U+-dbE(!);Z+@3g~lB+L6^H-jX z*LY)UZ~4$#`ZYrIsrt|?XG6;Y+p09BapX>ggM3j#%AK$d)+=%T^tnRl3%GtTk^+Zs z%3x_M>Pw$iOA||V^#k1FGb`s`I;OX!1|R8S&Z!I#4?1ItzAJJalO(#_&u?*Lcjv}s zW8sxHU0H`yVCv5u@-q0ng^?uDi&7q<>VK-RZ>O_CXCTQnr$xkFxX1?#7#wCZfPo{e zNwK9dYT)N(ivC2m4Wz^n806D^p5O!>mA4LSSW`#`&8$5g17~kWyjDpiNI*c}NiQ4J zf@@X>=V0k*Z@(I<#D%*7BB$6|dXK+i?Mxj2PM+May>& zGD%-m?`l~QBSggfS=h|x4S1LjEWYuss}$6F^s_6*g!QmOo(Yq)g+{SFEu^;Ts6Z@Y z=sV*hdacte+C1s|SfFJf$;CFCfUFht2tLsGNzE~D_4C?XvgezH|-4HF%<^jrqN!_2~2h zbGHQ)jh#XxhI2yAq9@HKk-<^g0lGZx8hZI3wHJ&5#)htRk%ku&q>0S1snh3)T30MT zE?5>d+>QPu@kkNWW$zF_)&ZbkEpx)34K`sxH+&_tonG1Rn^i{!)il$utydRB5!g(xl~JsLCvC>jxal0$Ud4 zTs_skh>HLoI$$)NnWhlO|7uO%rj#8&5(iNbh}8p$c0F%hJ@~8 z^M{ddh|RbplNQg=pcou>)K4l8LK{10vs@rqIdD9dbO{+S^=#&oOu(hRkHh_9)Bx4~ zI;zFoIxGt)3DEbz?i{DPsGd?a20iJ}-b4DaB48mIfB5G9i<_VH%=%3-&&2YMRNwxH zy(oM$dLyp=ti30r|L=ZOztEvuoIHLv0k9{2Hn%oVay)vvR%$u{IJ|GK)g(4e_3YtP z6G(Vi-BM9V940HAz&!cHAa#4_@IwKz)64iWEqctKRc>p*sIC;ReoM{DFPA>B zmonwu_C6w~Q{B^IsMd2r@qJi0{>eJl`Ti|p|0lhCJ99|_>=fQzaS79)+Q54-aJKie zZFIPHPGbOEC%r9H9)JI59KdI+ex$d!1Ak~&rwAAZl~~SKpWu3^`X;EV7+my2tI+y7 zfg-B;Qw?Hbr$&>*I7+(q1tN-janD;9JbA7n883?Qq>Y09bdCqLU;=0ic7xTfAbR!{ zDmM|t=yw=gleZ-c1q~+2DO8ztCa+EPTpAyZ#Y+?!k4^8E1U0TZb zULvJITZ&~tc5ZzB>KdfDacsk-~oD?_s?+d**IIc!lm8lIU9nW zOvqrTmuP>WwuNMcO@-Q;V5#>miCJX!tG%HEktfUryq0`lnd4qf@raoZ@{?N=N|!sj z?Ta3eha@5RusWs^m>uKr)_y?0nsTemNaVn>>&C?H5tM8qfvh?FQr5Tpnq-5?-H zmo9awC`G#T8l+1HDNu=&?e)?BmH&VOkMLYZ^Qy#^MP0USn^uo;jeNIoAD=^dMZ-htX{o# zrN^Ng+#}qCmc)STN))HN7Ywo{+ZCn+BA_D?JbvF9;hBusyNd@OKAb#ME=yw88Ha>OnykRxq%rzXq?W*v4??DD+; zhx&8trFD6e&Tfj?ZEj!24;Wpi6%FrO#JKjU&wrpWt9aOr#sGBW(?ZKtV-E8qw4a15 z`9WO|TGy}L*$EDaVa#W~n2*@6l9$^K1Q8Y~eRVp;D>rpLj*HFR9Nz6btrVr)gqYUK zG%}mntvg}RnZWsgp*4(MiJKJ&Q)og7D73N0pA(n)(}O5reg=z(DQ=v>sa;YHHBMKJ zaZXtuImc5GKXdV@@v>50(fjg?*tO$&v$qoB+X@kUu|>0L=U!y`x4W77{O!ISoov1V zIsaLVonsDbvzhqY%{y~}X~=Kp`4suauHY?%B^oZJs?(CeQSU7<{^ZUKD>2t;xR)sQ z&X~NASH$Yz(}Yl9C+g{_yvsB;$*4HILn^Ay@rA%2CrD^;X%m&|F)8IcmxRs|BrmaX zcEl4?Qu>>V2JM)qGj{6Mq3-3Cth1U<<{G5+Ux~uV?bWDl+4!{wZhkAWD z3aAk5XF@LG>U%-?Z3&E(nISwBTTKxasyg!9*5ejbT-;JZm%M}{9d7U zy$`9evs{g+Ga=+oa@mq%vJBZWP}*1OI~?UoX2N7XhQ8|i;-y)gFZ zQN~RH^Ov@!6!m1kNG6}&=w8MlU{DstNL0{f_ggZbZ{?535O9g%+Tcp*4EgC<+7*9G zPh82~{-N&{k2Uvn^@BT2hUu;P4`_x;TRV_Ai1L9`Mx)^gariCkwh;|&u3YPtvW4VP zASBQxd;Vd4XFQLgo7%|>xm{{RgnynpVL|+-)9S2Y-kGC>q3)}roEczf31EoIzG!H= zfk}ZEn1TlFI}=DhlGJ<)cdc3@%!wL`_W(;CSkKz@%oW6J^h4&Hnc?<)EBu=+D&h&{`>2ABVdf)=^xqVXkYlbaA5Ht1G@($2h_oA1rD;S?V$ma` z)-UA;bRN*upOs(G2t8vzrE5#8pL-#9zvXq%$$KfPxMnV?qNBL(3sJZmVI%`M=yxN| zT^_MeV~ZV6+9=+pdOPun2nG(VH1skWnlGYAx+SW)NT-0CN@je#tr78!OAqHKa9;7} zeN4>JNMw>6k?Vz+T zjtBhG$Goe=!iABCGr+-kE3Tv8h5?q~#M4SNoi#<0N4I`iB!+0cWCW4(Op0C|Aw3qN-shV z?n@m7x|NYj&3ZPv=d4VL@2T3G-(3YfQ zV#*Uot8N{-ai%?7?e3$0bqxR6SoM#OT)eu+4Df9A1ASV818H3SF?&r#MT{J=O*03| zdp+D0Tox(OdQye=ziQ0?@s9leaYp>boquCp{TFjG(FX$E%g&6Dt350XCZun#Pd|kW z%X&TwI@Yi?0El~gEd<3 z;ZQ3kOZ?{FTRCJL?Mvi&a{+0tlT?rLnu$_ATGs%K1`O7m?%yRTP%qJVqV+#^5SY0j zc>$}b9EW!QaPU?Z_xXouSG~N{`WSaz-wb(O9OF6lV_rmEau40DMS_+PUU75WspXV4 z(sxrs65|t+Y?+(tuBvB3n6KE9+gY%(y>y_rtRdr%ujb=jleFi8Gjpr2Ot8>p8TAOO zCJKh9P4>Df&_(*)$`$&fx!Pm@j3074)+{3&G*RnK%yYM9LwMHpY-rgeQ`*6%h!QE;xAYvE?{Ayt<%f+vJt&|{%;PSJN_gklt8;8)W~Hi z{_?Df?aJ=|Y&Zf;0tA;{f1X-fKkX-`@IvqGga^;}xXJ%%95f0UqW|Eb!13hBKk<-l z@l)0x><(@|oAt-5GflOZ{={IjvV(8`cvY(G;_W}xqi^@`Zt|Mv1YsywPsnsA)&~QYTJ17U z8yj&soV%aebug+3;hTE;jFKD<&^hZ@o{SOIw*g$f_M_$zEtb;M z(+cP83n7V;==)0&{*w3qgoPyUIn0O3V2z?|sbN6s)?y3Gy4CplPIiP(e`ar(eK!G9-8(RJ0H(;{I+NX8vK7-iTauti8}&K3d}4IijfXcC8>EVxGw*<{%>yd#_Z`b zdTPyfc&*KR=RTMft)Ys0(jvX_w!gqf>xX@AgKWdXfZzbO#i7Ze4y9fFn< z<{Oroc61~BF!A@mX&sVV!%Tcx51@yo;*;JnsR#0aKg#zHo+@c%xl**fu{&ACv%l+d zH~jdkBd@tmD(1gvyW*&es7tD*>*M&?#XlDWKBh)S&ICqqUs0Le(8C`$<>)bG6N(4| zn&4RZ4Y=^jKJ-=DhPi=~iv+z;0>dsuBF0vBdZT(MNvK)OSj)t)K8KZAB5IxHYTHr6 z0+GprWnMn~oE_>oweR?8(-5ww5EdnStK@2Vgf zEfcmf*iq+FDUI(4?mdJCoUfx7lnztzczfb|P^vO&k&ADb4-`Lt2P|ly66BmF2N|FD z)tZ$~Q9!Q9Jm8>w{F&Cs9{@)JE%e)21akfN7J3@@OyiB)ZpLz3VcnnPp8S{HCFG{= zO8sOzncwJ6do2FEp@8on=&lQ53%NDBrHvp@vDI{rkM2?MSr6I)5EvkYxO)v#>L~>rv04wy7ELzEaqv}pd$Q!V2qrC3M-#rJliT6C zq?r`kH*LQr>OXrq@iNnEV^K>eGM6x*mkX&hu8LrMJvzgWAQ$;$>wSfhGG=3N(Eb#t5BLrt#v%W!MNcr8jO+$6-hGH%X382CKO%rjCWf4n zxG;-vnILZIfHF!NnQD_QCv!dP-5?5M*Lck^|a$&aVJcHgnfoqe_jnPDMK>?Gn!7 z;ef(ws*fYUi!fNO0+XjIX(Jatd&Cd&_{q}5Zs{^Zp%`Y6!kLT+A!1&0`|^}~?)l|6 z*HI8oAnvr}fxmvV!F3UY4CRkyx?5(SfI^eNd7N^5yhdLMGV&r{?#WX5^&lBbPLN_y z$b&^y`cZe9Alw8dIJwl=wq|q2@%$l``Bnb3q>Hty85I?fUmWWWVhLQ^X{m+J8V2Jv zX>r>A{u3L-Fin@f!}`3QiYbtH3#5^Us_HipSU|1h6z{r8QHFjkIG&k_cTXs%N>I}T zj|pzP6YqVXWf3<(A{kA}%dWTb_nwJ2PGY;)T}6s)Aor@lZUu6C=~o76ZdG3e4Ll0U z43H%teh25glgk5Aj34TbH~IefyA>1o?y zhi~cr1D2~FYSb@(Yh&X`DD#`4*(l%}yKIj=V)@epefHkG(+MBxu@cQs1vMX;nwh9% zJ~!RRoHBNlK27G$vtT#gutU#J$~<<^Is9b(#lEwHFRz^cbIm_1xcj*S>2ZTJK2SY+ zXQbwxwwM0e!rAkB--kzP7D%~=hzxw|`*+WZJzG~gYOO$h;S=Wv9`l~l z!4H{=uojW{jI&(Xr_O{u;RgjYesf}(qhJs2my>D0(`yb z)2sgfpKkNmWUm?_Yl)+^|1w9nx@@yCrb|GNo*6GTLm$RxK7`b0 zLZJ^c@n`^QA*_bpOkg25rs3sV+KN#zb!875nzMKKzw^BOYg+u=GX5to4Rz;%ooa-t z_ezakEoF0TtYs2HrSqH11*3%U8KuyUE*GpXM*8+mi@ z$HUxLtA+N-c*@hWEy{Bo`?q%Oj#|QwKxmGJR{xUSXH8oLtLw=H={{wS*u)dx2lM@` z#xw?j4x`D}8h)SK2<)epgBzDCsM@B*e^I|-A05>v zB2(+lEW}L8y1&(!Hus%IKViV=g>2wdheJ(n;yIqj@!m$Adk-8*uUh|z@nMZydnJh| z=N*i{^r%xch7Z!yWhea7(oJx0A@|E|`_20gQD3Kr<>}*{5&F$-KGhZ#%cyeP=K5#6-M*Nj#`D#0%wQ8I~-frs|?SdL;QTWa!O#x z*4AChh!!x|1K@68_9_)9S3F;TShRr|YFMe9uOM&5%-+C(scygAOoK<~8&WDa$%|~` z&-LrJ00vE&6(IQfIFM46L3I&uW*JlkBSgNjjF>mIbP>sF2gDtV$NhagP6fU>@h5upRuFiiS+%KH_9|{uJ>>fNLc=d8##?j&*0upP7InK!p zR<)3KssYLk(yT9dK`>kr+ekmfxmj3^Uxq5#`0 z*J+Ub&{Hil-(Y!9MF_nvgR0tB=4XDLr0A~8N)c>+&b$!#a()t!doodyvtRC! zmHoy$JqwSsC$4DSEUS`DgIglKz@?>Njvpu2sA^1M9pLD-mJ>TC!hiLw39kG!la&D7 zS40+Z-O@PK{iil&T)V`FY%EnN*gXvx%1XRL?R?HgADq&cZRtCBuP-ZoN#ap@sHq4P zya^c1LD*Qd-}1_MLf~ZMFE&H*AT(C|9(kmy`R&W~Q@Y=Oc&aM zr?rOlD5=F9OKm!vc7y(9%c#u~YJy#LJGUDyBfEHLpiVS5Y+*zRd7|^|7yGlP3B{ee z*wF=L3^w_!BTd5x_Vr6Qdy@K)X>yxo5hr#0Cdw*4GtH0M%0&YQ%RS2Co!I=L*UpNi zPsU2!EEbv=-YY&3WM^i#hkn5%(R@Z99{8#8;o0dU)xqD&f}KJHBE9tHo_b^E0Hew` z)Lao#6Epg6?MkKrJVhCrdm_|BjRcfw9-YzcQrUVbxbQr{|Xh;Og65*Z1?XO1!`Q9}sglV_fapJN4lqcdhQa&#N! z=#;3jpL#B-eEJ%Eo`&@l6O^OW%_svo>jzM%tz-{q8Bok9 z0M>7ROf%Ww)gvddIV9C0qm0=~t=N6dc1c|3&b^CkPm#!{{k@cYqB`*@tq;acm4D)9 zooGwzY`s$5%LN+a-goWEf*AMh3m%uLyYXihajyOECEmDZ@SWs%B-1bex(-cv%=5Y3 z@?_q8&Tz4mCmpm7kz4!xF1SqH;(CLyODGpbFc6xG9dXZ-Y=S?X{c`it&jAW2cf1KA z+m2{!>4@AJ{yDrff}s82XcQn~bjT+E%%S8HoFAV;qjW-Q9Tv#9Uh+`whI*yq12%L1 z6I!@-E`DX|td=6R(oQJvZQQv(MjC={dDV)F6M@G6$V>ImFw7^LpCH`Rv+g5tNL6~d!lm{yis${#N}Z&)l5f>f zUp~*_rY8xHTl1nm9#1Xk($~@nYyVq+xcx>&9sb1Yac>+2qmNkd>WH8^9P{OSVrM2( zOzXM*UGzm#lc~gI2eDmmJsvW>j{nM{T(Oa5AUS>EmM-RnXiGrdTjnb)^;*vJq7k33PYx}Q=SAOi13ot;YMKP{E4aF|W z`!j0?da2v5+I5j|0Eo;+PzDfhn+4&HX;LB4_lfzCx1Xb4LrglN$2O!S0%-uyrR_f< ze8a(7aU3kF0gYbGHKYPi6yXPK)t5bb+ouOs#2+i&gn~3X-UN#_rSH;6crDfgV8i)> zPG$vk+j4dDI8aQeWhGhF z_w}29|C{?doHBO+;UP@HeZqq4my@|e=>vTV$8jJJ5C>sLW1TOF-OS=;ogD@qQ`dKe zP$U-|XGwS>Us8z(E|6Kf;r=vh6hQkqQ8Snxe5I2N{WFh$;iTSqdE&~4z0qqaCXZHc zENGRyWlW=mOyd)yeB4gCD=LsPb8qb!82e()>0zElERa_UNn2EvzS^0u*DWDNtk(v(zWi zN#GTAdMBcCb>GzoqMHrP(%=2>mJB^n{B1{rzg2+9V&wmqoS+?_?(*(qeEiYk&%A?t zg<%U3=b_=fnD7sF(B25hZCvY`56exGL>dAQ!p)*0yk-DZ3L;&cCnSLEoVSERn7TRniYtRg6K<|F&)y`>^4LJ1Tu z_Ciut>J+%>-L#1Dp`VR7J?4*lRF!0ten)!d?M~?Z%tKvug)-#k?w4CtUNSyO2Q;^8s0wh63PCWi;NYtv z)*f2D)hq31dq)-{9sL%K=F94EX|&Libph+G37%*<@9D64Kk4N{cS)IFas9MtaZYRm z&HLIvf@vkav>D$*ZhZoZO@hH&KzonLtEO1p6x1~N6c%?CXdz1f0>9iM3)QA_j_-QD z|HLLVGciV3oH~5_22BgnD^fjfR>r;>$+J_o(QN14s=)oaG6-xq2C%zo-+M^K0zyW9 z#pHyYwOYkH<@YHp_zlY+=ZQ87qI3*8)0=h>korcuUXBNO(-9xt{zTy#mLHon9U)yT z_qlS1yw*fXweyHWdZMihm$#@b_?Cv~LPzHDMJPmyJzPHI&J4VKk5mPP0F0}Hw?|WF zr7bw1ES9ARB|P5VK*ozf$|?&rrsamC0uoG0dCXQO51X7p*sJU_eOpvC%JPn3Q=xMr z`Axx00b?88h001@PBZt9enB}1mAogPW>;0&D0E&NX1?s<7*PDWL_&bRw14oP zebC5W2$y%I>#OcMLW-+p9 zzUnO>HR$!1ELuf_7U{wt(fxcKQ8=lvV~c8g4Es6rzuTJ~Hd`am*gKl@YMWn`BO0pW zs$ulA;yrMkkPFI<*emx6VXTktIOYXZ2VV|q9-{HsHu?Ni#5wERP!&^;)c4gMA>S4$ z=OU){=|kIPx>Ca%j>)rMP9I17WVC&L5IiI6vh^LupiJ?TKWGHEI?wz;aFgGs5DgWS z%O>tX#n#3i6Q4CD2ns6v+@@UBR~po@ay|G_SF1hyzSf!is(jo3C*$=`ElhtA_uqPr z&{g6=ZBNhVWroj4nsn@xz{p*g+fbft3C;ele#^O7ijC;F5s5G+=>JFv-o*9WDx?nv z9t9cKUmn>W%yMV*^&uWVS{UFZS+2d|(~)X2KGm_=W|#N*Wvumjk?a_rRPD1CGJg=h z^THKt;xT6>psD{nsuxE61j|8fe?=UX@i1UOqb5JB+%G}y@SssgACCh=i+tda8l;uN z$Sr_NI>o905rg^`E>H`$mn6*!^Q_||IqrA!n0Eypk&6DIT&LS!e817y?3Rs@`^I?! zoz4y-@p{TgYMIZ)`o|&J*B^XiUBs5g>eG@3I6sV84~9_SA(L>?5*$q?$o3v|^f^)` zBREZfvO78}rk8X_;^k!p&SeP`bI?2o9M2X0cL>ikWuBY$GmFp zk#I1|6fB#Wf@Yr071Y#EvQU*?DK)R12YfFsQxjT_`Yx2;O9NLwX&>$Zht#Pp6!gHd zmkDId1W6;1CWsd0wRR9j0ye-OV58t;-*e$ZaN=-6pTHy#vc=PZ!(?5US@tIx%JZ7E z=>;jl4qBMoJZxUXJptcz9PB#WcoS@}qHKNPbWq({s&+JlkV=?al?2`5dBCv}iXkZ) zPSMeOx4^2g1pYARh+g9$dZ5=e57ktVoNsWQX%Te?z|V~|w7{9q6`>>rViN?Wja>O^ za_Humh{>@*vv$>yU%H*WqiT5JzbcQ9)UgboNHzMmOW`3(uYT;c0UH5z$L2&D)b zw2<>$|9X$kO%3SS;eL6<4~+ncL*N!!ZV~xIy%>jb7=IsAT(?>4zw{LljJRI71 znT(3$UJC*fkX$@>Km14&E1-YLSb!r|^Q4B)Zt`>Lzk@>R;e0Gxfb1rG+*fGz36=1$ zrc#!^2UIn4u9&h!$q7^#=+*u0k&q3APsHqh?P z0r`#`UTs~|FWNz~qDgNz^0&AQt3TE9OkvYrLv)7Vz}jPYW1SGIvFi^M3K3qcflZ%O zd`HRqrl|2+S~3?LPMtVs7X-EI? z-sQh*CUNp=i0LkYeO7!_my?^Fk)fM-|1IH+pl&UnvtnB6?>&cPe8x}2lqB-E^_BE9hGRJh3jomh>NSa+))?nHni35 zyj|lV_Uz9wa;Q18yjePtFT05v2F<__3apxbto(2j6(N6Pt<+)k*|Sdp!=O2c!fk<@ zW>B67+HVr<@V-|MO4^M>cSAgo0=gIsM-5zuP%@xlG1;u5*)4tmkIq8yrRaF=R2%^4Cxe}Uzk_((*{M0P;(qm@&S`2_6Vr}<*_7o zyXCfel~g3^gfx?=rb&8OEb&rf(IiWlof>=pPu_oE`Mo{p?EQZl66kQu@z$cQO6t<& z`+e8XDm=^Y(B(dXfsWQU&yN(_GlfbP?~42-2>ZWO>vCp9saDx0(@%%l(pmiLRa0qs zbiUS_=q7%XlT2uOTK_z~emy|uaAQGbfvxLH_3}qlR+hzwj4{=XHJg*zvvALG zmzDAMBuolE*)~;n%h06=gl{eB+pe6+N;k$D(<0SF2gxS2x>bc^{ri{$N+p zvB~{YZD;5V4j-#^C^8AcWx5MQX;_Z!T$icYb2{XW{7_LP!E8Te;BSxbXuO-^!=+|bBJiQQb$fSDkV$;?g>DMZP@0NW}ry1{#Y}R_SI5_%p zTh2!L$h<{W19MZf8eRE`^R5$ybu1X=Wfi{E&Z@0vPn-{4Kd$hy*yt}}|KjZ5iGjl| z90`p}N?T{sv<9i4{6jq;FxK0!tJtOI>s#`%6aun*Dz*RsY&1kdT9@Tm7`|yC@~z{$#Fv5jrqoH_YMG z>0|t~wcb^?rokzK6nyZ*uccZq9OwDN0H-3lUprbhu$8A~&jD6w4VNC*EB;iF%3>O7 zRtk5%z;3c9jQ;W{yW5H6Q2Bkj%}H$}wQ<|TU;w!MzxJp0<$#6T&~nPQOmRy^a%u>|d6 zX-!^-3pT}QyBwm(;akB_dRT=@j<2TaT^lfE?p|TwDT>y zYfVi<_HBWbe7VXa8ii*wTd@%vmvWmUi6tYZHU}cJmgkZm+i*Qk4&}r0^!isUe;|24 z8e~nuRM&M^2uvqf=Ovaeg5ZRi=+5P7s@QDgP^B( z;+{q^>UFqbkk*qVi|18+H(tHmKWN}U>t-8ChrNG+h>7mwhj=CCG~l z_l9o%WL?5mDi&u97yt`=pWC72k-cxQTrsE5=AArF6ED6+=HAaK#}$fENsKuGbhkzw z8V}}v;eFqB&Y8+9t75bQ)=vJ`?*~sIOWEnJWzaOI%OWWPFLb=ym}zFd*0aPqx!mmWo_qH zzHZC1{&;`Ol@Xu8WX^SB&;VlqSfPQqOkRx9vhR`E2XPfuZS>){1UR*QKTHg<`a}+h zxr96j3!3+9h_ z&QER!NNS)-HCAoWHQrz1cOAeJF)nE2E%rzvnvBsQDCeAd(2Ys~q`-FP(uM@R71Zrk zlPA;%UVCYR8coQ(5L5^^*L^IzsF}$5z`4KPH1K)M468dr*;PVIR;>DjC`cn{y1WgC zQN1}jr02Bw`ZnQwZ`6C?LK?OEA5%OD1%SQR#}QawaH&`*rK)4p16-@i6_lF~PT?m~ z3S`g^cHc#JiUiPa6M2^Ka2!w{4N)+L{JVSjayosdB zA57h|o>Ji1-Vxh&t=u~Xo?c!#qb(kBVJQ|@X>H)37&Lcv)WV0~?6dpeg> z&PBmQU*9wWAW!Eq`+TDp{YK}}Mu9!_Cfu<;v`+PCCZiz_?PZq`4RU}B6-&nK-N9%W zgJ|+cP}Ibu8Jp|ty{YcKxjet$j666f$1(i9ioA9W-L6!L9^Di@0NPp_&E71n=1R!? z;M}vE&zZ!Wb3R0*1^rXFT9{|<$=DQ?dTC!De7FZIc0JK zg2}fpC2vD5IU-NT#rPRmW@PUKIg>kqG?WK<%dv)v9dK}XFtGUTbRGa-rH5alv>~a% zno;gpX5SwQxdp|IHnkYmtqxK=0k()4y=8rYFSA=!)T2{Gz(Y&LlR8F3f$bCzxiM^< z+;Xrp6-z=>B)2f*fWZ;^6CpqHqGkT}YAe1)1Kd*fq$ZVY)?~xHGmJq4C_!5#e>Vc$ z&;+kQ*H5QDEF9E)*d2Gwj-lRI)2o+Rod&9_uSK@kECw(0i<^|S{h}m14{-Zle7v&8 z+#y(vhcb&rlF89XU~1%<@Izz8%tlpXlHyJ0{n;oeQ!v#TTBsM5ZhX~uyqVe$eZgDf zFW(Lc{Ll63{?R>QN*4XMejoHgxB*a3T^c9h72q2)5ZDoQn)Gn`9?@)&8a~^)pGV5X zbD$-6zwGKW-y+x>W3aA@+RU!nzh4BQQc^Ge!bQ=YIneCVk^b{Vmvw~ryO=!O-oF#@ z!iIuV`1>*qOS3Rxc+IhWD3t6h3`t!t0c}VtIC8NG0Qxj8uM`!w_I2ziU(4ShmL<=j zfx!)-23k=i{>c&r-)=VgH9rFx)96-OHgpiXE#Lt*j-uM z;gh+>MzhSWTgM8q5zbf7*HRyPoEda8@$l)ynH4u2rN&WaU5LQqAh#z);YYhz^O80g zYST1oAC4rViSdgiaR*Bd(s;1)nu0ZosKso=fuu}NDjE&1o7;i-tjApJR+6u5tR7@A zF`R{T!Q)XWpf|~eNd)0VU1MgQRroael6)Mca9RH_jSYPtFH;d9q}ImlOki|y!?^kn zuiNqM9#t^kwi1%nWy#nola~oZ92T7dJd_{azg^jJ_MVIMQUB)aMZHP>R+P$Q0(piK zFEfKj6OoIcsT5#ADM&UM1f+RpsPQ|96|hKvn+pklN6lQhF-IJlQ%nP#DMLl+DGUo` zAI|PAHfzNp$*uZ2+J2yCcMU9M3FXsLFtZ#f8+eBRr|?_#qP~YVC$O zPqKzA!KrWA+YwgK?tTG*z^1r#yHbhRG3^e52g@K2@Me$0cQTu2F2({yI(e*R76Dfs{L0Lhpbv_O8a`XNR#XI zeWKCF4n3HbIOM@2u=Jmh~hubr1&383HsV%;rvtx z%rb_e)2_fQZAWu~&QXSwdMZkGLrYTAKe!gBenp(SamLMqy`-NjPM_Tn&~SE;sihgTQm*K>5{X+tDXN z?}*2559lmU2?%`CpLjiOd-2N>%+g9EeYE+ON+c0>kQ4W^_fmh%@u7wjI|YXG!e0n0`LXp`B1k zuYzh0WaqNSJ{mM7+^xHM5aMsF&nzj#r5MeWdiw+ItA~0&%c-;Ev8Y8{uHQm#PIdjP zh+C33WjHDPYDPWFX1j2%qwn_T0$DU%qGrbsYleHOqF>>8q~%^>SG8$=nhm=k@2-}G zIDLke9`*)~!d*X^z=fI--ojihAT51u+f)C|Sf zvl)kaRsnytv44oie{t~Bz8cF#)>m;E89;6rlrC{dT`)${3Ro^c*h@}DEH1r6r(LXH zm2aqd?t!6;Mx5lbx&*?h zr@*0&Y}jyPSmif7p!pVVSq2}y7?@FewO+tpo#4hg2b;T>BQR=bIblTIUqYyK9Mz#Z zB1b7jbd`=gUE5NPMW{{`I*7)na!7Ghss70$dZG;U>7!>#og`F)X&w)^uzG25JlS(K z1zwhadB=$gIVWf_#)-~Ij2(OYXu{5U3y!Lg&gQZ^`y4q1BYJBvdO2xM+XzJB~@;wY1bw2 z&$R-~v|PY8ir^M<9H{5Mpcga_ID-aMfp=FBrSCee`j1G{o;X9VSlt)VQq~eb-NkhH z;EM5ih06&Ygcho>M{bJGy6evJW(lla7hG<-LRp7_>l@|q4NDF@Jn+<8dya^5?<>u4t}p`igOoi-8i;l6B6|v@UojIE4AK1L@GZ7SRztW73duzqW{5(hjU< zKRMi!%Vo=OPW2e$&;yQQT*#%*lb_D_=FOdtHxQQ4s@!xAUZDFJJ7{!D@TYd*U9&le zxpxzKo6!Hb7^Q7^ftPlri}Tc?0)oqMOrgvSfEzlxnPqgshdt^k7wy= zr}Gq_>y{kt%0Ys@5h%R5kzzQeT<=H}aVW9h^5(IWGrnKGDwg)_v2fj$2zG)FB`BKr zagKR}v^(h&7BxKh8jc57dHlR;e{``AY1%eMj<)ALFAx~walerB;`AbV-$~QWL#?D_ zf=Bfb#wmD)?C2r~;Y*{+w_PZi@)hk`dkYku@+aOeC@h_d550JL3qzY0rS7h&PO%$= zn{2yw<6@x3e_iZ9uUiXe9x8rq45cJYJhEG0MdQ{@_DBNuLlIolccCu_Lxcl?=s~|T zt}_aao)E-ygeGP~eJhvJ{oIGToQNf(2}mRykC$Y4R1m6Ls(QR+G^|i=ALhY_AG@7F zNKcKSM$h6)YQ6>w>rOLil5h4qI8(O_zSL^7HC>1;6u-^(F;(4nR;>1ECol&`0Utzd zext_#Xy-at@IvP~9UJx+Q8XnL;sUZtH2>RqA&p8-J>Q^)X-JwNB{N}*P>h24&a3q~ zwQx&MJf04-KVlfMlY=C;AyXzH_t4I>mfa``touAEnq9TY3ca5hA4#`k9=CmuJ(#Yr zmwLC5dXUBI{E8h*5I}t!gs)R%3L$Wp>BE8ormg=g4U=+C_GKi_#-o7 zcBK|Ln(i$OO8F(5J#;t~x(Gu8azMxRL8LL5+>hdsn_uoLs-C<@wR9^;llKu1DyCKG_L^TU|)mfTh=Lg3U#J3{`hy#w&)h+&XH5|Y8OD+Y~_R6`47G-0Sf zVM0UoUGx?bGEG>Jpne((d$=n<2tFwwuX^U;JB(QlR7=g*qP8bJ5- z8gDA)mYJMuq70?5>!g~FdVe!Vo*sNp$2G>`V> zT?L(ZS0sX;!5#xA;KGH)Tv*y2Se^xClwB>3zILhtlO&KJ2u7PLYLO z&2M6qpQFHXv$0ljXnI%b^kuZ){i|_~{SEI;T2sI?u*QMT^+YrZdE)coM8cEUO9ZPJfe@FeLtbU;TR@4Z#FjG4v?*hB4 zvhGajTK8lhM8f>mLi);DxWs%RQxF3Zs{yB2_nnE~_Nei|Zl`cOS&4+yYc@U+9b{&V z)x=9Y9E<3n8$4xE{8P!WFhyIvB;h~@b{W#|;2r&_vpr6G-ck5i9)EaFV}d93d~h3d z3X`_P3(+*wg{Y#(-OY9ldk!7CVBsSFQs(+1PRDObsIP94SZsK54a(ECSsJJgO<00! z6RUE6@<`VfPEwy+yBoYzpxcIp``jOxd2HhHrjGr*fM*TZJ*SffryUd+b(LaAyzU4t z9%4`*wZfu8=OafV~B>kHxUd@O%z`vvbF)3sbw zN-Y$=aK!+)K(Df2fDtmaK;+`W-=YviD89fvLe`zsX(h+6YijG&uH$D%YQT6~RX>;BjDv8teS&ErydKQ<{=k($-1j+sj$*EHLExtP{$BDB zk^z0nd5-h2e-avwL=82)41SZ70@i?&vDgT~)W>bEJN6QvN7Kg7CZBp{I$L664`Avd zfZ_TQ^5Q;#&7QFYg{!7uiU-4l2NN6KWz@@jqEL4qiV)95i0AB`+fD?Ks_Q-1eiyP1 ztm96go3tl5;)1mHLdRN}E*5BS!QCoEdZdUH1wZgL22LPkFesH4C!SgFM5sV#+LOM# zmu=e7$hv7f7Rp}PJ`aG|h}Xxa9eWzdy&XBznpfq9@xlc@(?&=%b&nvU?!ad}X+;$lQ0O7=_*I0GG4BG?ZUF;r@)h~XInZY;Z5eth%u zu0Xqay?g$~?S`sm$r&52R{v4+<6Jg0eKyuKAI?Mhp`7a|O}M)=)yDi$y?)NEBsC4% zp2K*Ky`OUJ+GtkVni?&-{O-g1Zkqj4I$;o5bi(9_6ciQ&ZH0K8K0B#*<>b|Jzr4 zMZ`lIpULEj*N;Mk)@Bm0l_lO28zHDw27*-~qBl-sb7>?=ZsQHJCS=cUpF;cTg_pox zP&H}UiKzF^IJ^k=*gT5RS z1?r94fw0<1qdUv~n8|hE$+DvFGsW-y>}vhb#&s~?W2e2nXtwWmt~{RokOBOxA*Ix7 zT3m23BKwoegOUHm-g}2NwYGht7Elxw6%aw1bOc12NR2d6>7vqvND-tXy+;I8K@*XkQdcfG z&m%57`z#V&%g;eOg4T^*L^0X@)=xZ`Q!*jV;jvkYc_~Y_R=QJZ{nc|m)lQei+_Ued zO5c$j-*Ahbu9<2&78A($zWND^=#K1Zj&I*hz+>l+l*i&qM$0+~MyVVoU~}ASj$@G@ zS7qJoL+(tF>2nHESxi+Xi0Q<#`~)1Dx)mGPXhhTA@oEvX`JA{loX~ukdZ|(BAL;)k zCA^~Gs4C6fOdoPI7+msdR8w)|6sE1D!Cjub=IWFrPzLlmYJsyHP2jNz$UusBeL!hB z@}6G%5oB@>2~V6Qp`j|#h(|X@zjplI!^YKbzxdUl?LQmDlF3CH0z~W|diPR++s=ym zdBs=ITu}?Bt+QZDBL-z|u^A|r+PS2Kuo=A+UIi&S0}m9v7~-dnoCdyo8(b^3cPG^4y2lDr_YpS`1HI@uf$H$OE~`BqDTd zaLEQiQsdUZPLCc-76S0xrth_{o_L}2c7&GbDr@fgcH(y6m_Itwk61rV!clOL-D1^I zei()OT#z}W*kS^vgw(m+^w_rq>RnkWGW5f#jdpd4P8og566i$VMRfb?mLey}bLix* zQ5$U5wD1VU`<#w=qSCypLbk+(i{8BTAA?2vkI{~UX1>cX=(3eudmqD%Ll(t0xh?KO zc2dZ+wdyj0*iH=ERx*M$7O$0#9zlZ6GuykjtJnPLbLt1Z{p%;DjmOxG(+++o^TL=d z=TRB0J5GyVF4WqiE0p`kW(lrR0=?eom-S2@{-m;xOA>9E`Hmy%a;C?M z90g*V1jvH_kkq!wh2-4I)2zH@tw-kY+ZO3{_2d2qw!y&Ggt5g20X5$&)m$;M)ImT( zC4UQ=nm){C=X6T=Tkw&U-ojEuF7!*gYo%rmW{gH@g{b(%6XgKs*)8H?K}jm4a-GQ? zCnmw4k3Rr`?2L03;JFfH7KMQBAmrNd@(XQVHbLEf^7IMprIEL>;sS z35N}%?u7UOMWj6bN&IeXs_77cyjr{9aTpmr(ab*o%kqRM6O!+yh!as{;P_ta$F8B} z7GlchggsZ`^M1fu?T^9Rk4j3svVR$e{D4@Ez8@}fh=w1s!9o7p9$9!Ub1mVI91qav ziK)dkzED_;$$}nIa9+}cWm{|9G99|zf?MppFExDH`48VXir4T2`$y!5Yu;B z^@*h9II+vCV!l9aI48IHo;!#J!*O~gL6eS-k5ju&1^TbWF{DAB{)`yPiVv2pEwT@t3F)f}$|k1sNP6ds|U@<%J=ZwVnPv zTFlLdL)bdJv9k9fKxlHzvfvV|QY{FUo+ahJn_hu|#!XV7*U+G~iAGXv1|lg;Ue@7) zsKmY3IZlXhIp##aiSA6ujOoKrh!RJTx-bTs95U29UO_^CPIabi7I6ZXwCW8vtjGZG zMJ7S^+oW&>&+xP}iGDlXJ@0U2>kFdJa^QS|UCZhD+xqkSrDPMb2r>B|E9S`QdRfd` zDTXSkhr1`V{d-|K&HYIPS7pDuqL#X}4>&J*NG-^LDMz);dQqfVlhQD1Z$AA`RO%hu zgF;e9?Q~F-an}p7(X5g>3;`owavV$Qz2(Utzu*{eh(6B~rjLwe%c$*fV+aJFBl+5h z+HU@KfCnUTmGdN`5Ng6zr#~OC?A$iW%U4Nl>zSa6|27n1dVV~ER>-TDg)qW&t<@13 z86m>s)btx@Qrm6gF?XOx5FN?io&UP~pskC55{}Ez(!Pr%i&PXzx|I7wk|Cuwbu$B@ z9sXVnhYj2)G;Yo~+NpSd-nQQZkYG-#%0Li0%B@NpCIbmQzi-#`QlN2#RVkTyT?)1* zg>j|KyGr!ecuO?ewxi)PyxJPqV}-}z5JyqF$i8{e7!2sb8|>W2k5m%34cou<6k71s zHcdMDRpKKE_!l&{%AfYc#pNYM?{yQxD<}wk)3dx@!T}f)PvWOMCLTt zVOJ_o!8hWQwZ(x~aADZwqyo?w1j+%83LsT7s66eVH}K0B#=DDL4%zPys*JZ0r*B)i zGL*w?szRLu&eKFQSOP3lS^Hl9kAxgm$^aBUcA3N?{99Ig8UJXNomXu25#7gr;RDw6GM$BicY6O+F z%HJYSjs`^&VxKdySH3^zD=;yM#G0LQk7P zZlgWBvhp_T)8)?H(29rNqEf}O_@B~G%v-YdkXfFwd70~bG0+_u@Sr5i59O+eITlsS zksO`fxwT9{56}@Ojyzop4qDwBdYN_9%0=H?d%HQbTTT`Y&x%QUB_S98P7$%Ft(NT$ z*xwDTb&$gh_)Ry6ZQn!4V`3qlb{ezp88g?dGR4tXc-QI@6dp!d z*o}#Er7RXTE+q+qokmSo{y*s9VWB7b_3grCn&QX&o6EARL#)udZ$*wrbnd=2Ss#5e zkzzYiTnIDvP2=c#f$x!*e|g`i6t{~>eX2gUiz##~n*~<$+jlV=zr1`>j|Q<-_{HtT ztnxX-K36p_N$W4wf{VJL>T^KBKdNh58*tGP!ILX^b~GbIg^2j07qofJ(GvD03|tFRJz@D3)*;&xL>Wr3(!`p0J+{v)1) zGDZ-3@DA?>*7Biu!0nZ_NKJ2=}r7E0>%A!7vKQ6E{|7Nlh1D09!;nD zQn~GMqT-Is*K{kEwnwhc2m9=Yic=IUVM5T8;mosG3%2!*0L6C`VHG?hX5 zes~!pod?B+sx zP+dA-b;NDuHhpRv)-h8sK{y^M4Vu4-MNIkhU>YYz-@STnpRjM&(|_!P8Zh6&%h9+(cUb>fX`yoRL=~q9VHu9z-hd)h_hS z&3%G5EodzR<{89k7CoxdNN2;(l}m^^(uubxkpwg$318B~h2*F_&iG!hgxN!I>2SEO z;Zi3#fb&Gzu92%O6449ZgI0v&p+KKJ=Mf=O|43sApXOlw=dvxu8Hg+hICs$|&x21p zF)54ZZg=KKE~aUnQV|>y2k9R&k9kFhMfCR@evPbU+zwT35cZxU6BK931qp9@<1QKe zOJx}dFUbM9(*ifO^nO#EIwYBHlm~pLdEp5GU1FQ-q{HC<{a_9rf*$Gsiue~egL20d zB!lN@thoL;alUFRMb6yvJ!AhI(Yg{tEr9?3xT~)qipCO3bf3y=Hmln&2>-K3?tmYs zJ22RxkGq~CB&MWM_$L<|^}^6|7Vv;I6ufNB&e3jYnffK$y92! z5=MD_(lyfD2SeVQW#BoJZ8%m+j5 z$s4K>yLLk3Xw$b9u!&O8R~9#YYx|Iy-hBV~^{|NuE2lLJc5ukdC6#&y)sda>wce?< zSbO4;Lx1rKYy@(BGgE+Eos}k|Na%H~Lz3WOXG#YNNq`N5=01RLvxIAr*3EMYXyb^Y z!|6O*FJ_wFuNP?6E%?8z20G{Jfvf}Dx_jGBTSTE6D6}bf9?}Py9Cbbd`IR9{8!p>W zQW3z?){vI{a5<1f^4PZmTW#EC#bY@}(2g-~3!P{fzbwBTzozNAU)U#902nAk;8ZuDRTmA4`m*1nv`&Ey_N6hlm0Z%gqo z7ip)!&{z^l%}BlNx2_Vtg7~GNxV7D0>0IV|mSfBMPB55=g}uTew)0OJAcgu|OsTrY zI9!Z*0I<`kBMWV1UwL!Uh|l0D$)lhAaGA1=1Av+Z_1wViVk_~eV&Vii%rImEmH`ha zkOLqVHA@sHLH~T{cD{3$afxi~<&ptm6rvM~k-Z|c6s}qnO&~+g#fk_VNdb-Z`AH6% zibAJb0ACI9aX3bLt2yUOp0}$n+7~I;5K@4;`y##h9znBZFgx7e*5()b}o5zIu+ zEBd35bv9Ki60mO>n&|ljWjzUlF2x=KT!bJd#q#IbFL{_gbceq)rT>Zk6%ut zE0gl|hFBUqKSzAbe4TgrzV5xQgaTg=u;;f+rw3?$F|HQm6y0-GMzEhzpI-${E$?M; zkSMuG?g!0u-2^+m*6B_ATq4geMw=6kr#i+NvzlaZ)PjXjpWMOHh#6>RIw-lt1;3PD zLv0(UM+3peA6%{}oRI2DuX@7Y(Im8Ks46m$QUdO7F4-lo`WZArUfFe|>PlCvMK`-L z?rvnk+QL39%>A&i^nM6t@We_^q!D*b-+=Vl^C~%>5O!Z^ef~7_&)y(RM{eM_=R%uu ztNtEuF-8v-Uodgy@i})l**gsfKEKS#fzSjc z-z$87%08jPTyoXzZN5DOh^M^(ff63}F>DbzIq}eeiWF#A2jK#Kp1i$&^xwOh9!lt3 z_-V6kvH7g*0XQ2|$%41c!!%0mZq^3UuWg}y_Yyv912M;OkMq`SQe&-KP1Vhe#+-tR z@Wwm94%aj9>bV`NbNB;;*X0{b#4?Z6Yh$cXzW& z>*9J)JKdZ->0Lr@OyDN(4=M8(&Je3`UMzyxiSPVb^;2{%(lS&~N#V);va{b^KKRl; zIj5sTMYO!>^Xa%;P5K3kknh(FA^xUG{qOMi-_`uL*Z$wM`JbmvK^=q_jIq}BUGf~f zW7OyTz0eNm-ps)QMH}Kmvql=@5 z@a)srLXyt)6wk!KEbGV{U7gs$SFolo1h{(Rv(H$L*sK)wW?_TRr-!!n8;DEKdH%dM zu+&yolf7($s@znM+K1_y2=*$yeUDe)7d!JhTj4?G72=DeV#fVflh&t*Q$$@o-|2+T ziE7yK8ZEViC)ta zQl@pfH2YYe9ZNGDits@HE_n7oWI>Er?kkp?n;c^nWPJ;gKA2aZvdquuyQg-f)JJ1U zEFjP?oQ8=y&2nYhq|qpR}Yky zswmII6Td5u_^79S)EE<}cmE5KieEU}<`y#IvikbHc=olkBV-O{WpAnX{4p^FZ*c@7 zQ<0#<3agm8;DN{8x--^d|GnLn7XI68}f{mTd?38=LF zdVT)c^M80rknA{@I1)>()d=}|C`2b0VApJ!lrryf7UPW-;4NbZ@WQ*ak1`o+xnGeTjD8Evsuk z|G7ZrPF$$_=K_8ALRR%JeECSfFSAU0;=*derI>r%%@a*?)x)~dBl8EqLtjH>dIh6A zZ_*_lHhjy~HTXVtwQ(J}^HorHHE4Bj)-FA#4eV;u1L z7XZq$I^qU$#tc%8cXZ?K zbbFnz?eRuteMU|vf#pufVp!50UT;aEd_wt?Hw6(JxfxcM$Fqzr1lCuG4b`t9(-4CI z&ZQlO29@<4Jt$H*8D6R?V^V2Le3;AOxidl+&ss-Gdh+B#g>D)O@W;{(ci zAQboY+wz=$u!w1vsP`!MIomcvb+j0@c{XbE(Cccb`Gq}X8w@y{1EZ86ObuU*Zij8G zUW9bGu*;SAARQ?%8AL$ilF`zx<-nt!!7!?uA0+Ruj6wY{4(b!3ItEqY2JGX0`=!nT zhKu_;pLDoe<~}#As4J<4=B9{oq=2+Ub?(Uh)n1GuSlO}^Ra9Y|PzxyX{|Z&?-X**f zRDv8<0;ayaa{dliZX&05F(jgpC0*=}=E5ISD@1UhZW?GdcbsQ#wR-I&<E(oT| z`dwo|^VDVMBc-s@GeZVHN07sUL*I-HSoK(1!{5DqQesCgC~5MS2X+`c5uYajrwTY? z=NaOP5`>uUa_9y9sNd73taWQWubY!^iO89@V}*)8R2^tt7Z#Sjlekuuad2fYpbD5L zN3ph(e1^MGnCRMfD_z@21lGYdd}Pe9S8%TrEkLkk(x>)qDYs`eHGo0nQ!rK5D>v&92T`QfPzJd_-%#3*9@AT{+SEl zA&F!sqd+1F!oXP^68f6xN}{-Cfdqn{!kxqzdg50i3QCQ=my6L==+P6plEbvz9~0!{ zzjQ-z7uUDj_kcu*$_hz>(9#^#YuhHk)pZJ@fUohLIUsk8`N>Y=8R<(!yyK|zH)uni z(mhE(s=_A@!GYboeoN)``6u69Iw7c0DRZ~a;jf-ox=pON=@?l&dJu3O%4cMK@4Dnw z>Nh#6Cp+lbQqHo(-#+>9Id@I|N%f5IL}ZOaGzW<<=?g0uBq%_2W8&rLJ7OT z+)PfgSh#)m+#a=K8Ryu0)(QbN=(*Np4^5gf^sY#}ApGpVu|BtxHKs7Ieedq=w1Yvw zD5B2-l&E*?NuuWKDFziPHZli>Z)v>m*eV(1&*?88^st?}KmKD2cSI9asfbXRXidI3 zAeyLCJH@#=VsXqMx;g2w)wrS6BEGtFcZU5#)AYsCx#fG|{FE^PcxX^{iJz#>ugn*M z_^(OH=2UG#;_h>TYtd;a>YxW8Ol_zh3C!5$=u2*_@``cV6JPp#SN3P+L-oAPhvm0# zv#m_tbiDGS(xz*@>p%}#TsxB)itnr|OBW+4&Mwyw5vsD zK)$HMdXO>mq0BR-^LWG%H~|JWPQ1BHL`{I?hLk^QdTlbFOWr8LW)-b z3QrY5htqHWu~hMlJ5eQ^9!9s*sJ_4(!7*X*o zjRNTXo!eIxf>4jq>d7g1Dw(rGA$NB0)M^sdYoJ-D2xg9$EwXvBDE`P}j0jf!ggxbUe1@rFzzqfj31*%+EHy zmaZr=9BJm|%TpX&iQFQNqJyg%6nEk>b{9NT6;vy<;Ep}KOikKE6}zi{zvTGiCACS2(Wt(Q`7$c>p|=wY zVM!s*3B04He|PtH=BGkbrNBeW*vM%&v)qs2n%6%XP)N-zO;?nrPhsUJJuya|R$?H$ zt{k;q^K)8O#}3#`m8?=>jf%bhc0K6v$g}Yz(;ufGit!&zd-6 zzNyL+mn3gByJA+fEtf1*+p+HNcAUDwky`P2fp=J{b@{y9Pivdpp`vzWF z(?c;rA*Emgm?mW^Rxs!M!$d{_$-W4eqLC;Bzo(1v)-Spovyl-#@$N&7Pk?R=+i%)U zPcg)t zp(*yh421a|@ChK;QMex z;t0*kWR{w{G8i8j2n1E#9=M~+BqJ;k@~Ls$<9aX2=vEw|1f3LF*BO!hk1CG^poOCQ_*ds9wEnNW<(CAqRsV$>Wmgg1cL!PGa|K$I z60SnsKj*cRo0rO!HTN{2SdJMrCIo?dMhFsYNsHvRKoNr2b}3`8n#+f5 zU(nTs*Ua0Lm0G=V=TsI&sqiv{dviAK?AfJ2-WpM%nL76%w9Qk((>xLM=HrtQj2 zKo-P04nqvW66+&iqAIy}D{N&217kVaWU4=7z+;s~%JD~}Uw@aW@B1FQ`7N*ZcosVr z;M0**zyA7&h;NUJ^bWU@w1Z2iAc2~YOHd>%_9~0^XGib1pARp*G4MF2SPOWgcNLaX zsuRHv8YVj1+t2LvNJy9;?7m0jl^u4PvcVM-c#D!D(Ffk_k^v|%jqk z%imyx|IBTmd4cA9$e9<;1vg5hB`!ORnN#yzQctDp;oN-Rp2Th0rDN_5!Mj0JSV3p$*5h1CKEf)S_>`SvgCs}=Zc2Jwy@H7an&dC3!(_?p~ zl}9n@z{)Dn%WS_Iy}r7v%VDRe5J6dBm8)Hf-Jg`FKN>u;0%pQ-}D%TB3*3qWg^#+N(;q@^-?8t3k{utH2+Oq#t2A>#%usN0jz}y7{ zc?(V=l`%huTwzI=0yxD{W2QI`r#GbYr0Pw#h7CJ64!r?itU?ytbA(N;h02ePpH)Ra ze7bVW>?zZ}Gj*-&n_1_;?Qx=ROz`I0TzmPy2YTDtMSfxPJPqD)G-+lE!!Q{!f48vJuhN@cxAj!paE_q|mY$7w_e5w~YpL z+5Kp)Wcb?Z+H6e8JnRzYNRBANDe-%|9=V)4^E>Y5SEhsQQz&l`AY?ga^=;onlB(d_ zjtfAL=9cMbs=9>D;IT9A^5kHx;$#z}6e}!FJhh^me9Kz*Cwbm_zgvp5 z{`-*&{%=bB8}UTPxa*z+$znMUb6j@9Sh{>?3rb6E=|5B+e8OSSe7x?&G}`uow}l=z?F2@u&RyMLtMLT?+IW&6%H-_oOe zEqYUY|Ap)O_$?FO*NE#sYO9EfwSPRaDi6iuzi|svL1jRQyI$j7_mGE;SWOO1nBC=h3?-uzGy|$FFxai`vViwsi(3 z)80f?*g3226D=Jy5Gh-F5ya?KZTpjF*(CksJ}oD&fk;sWYpnWY5o_J`fFS{zPp8c| zDtWqkM`R6r9G_n7&#FA~AGJDLN|Ycq`%$k+rNVLb&%z%nxT1l9bc3^<*?OB=MJzALc2 zJGc$w2I;d&X+QmkE$o)1anZH*_@XMlBJ#=BNkJ@cebz1!l>-B75ajcmbLAb6Lgt+U zCEIvGYe17y?(x)?hC|vQOBIhz(+6#}(+B;u%fRoInQ+ooKW*^6#%+3g9bAgrokH;^ z+_Est4YJeviyL)YFrQDlegN4bvb!hgSZWAwD{f5#Lh!Q!G$?O6Q@ZR1u!GK&)F8|c zh^3|X2|MJsk7l25a!7!! z2w>6&8)Uy&W!T@`#?q-N*ZDvfq;Dc*N_${~j%c~#%DX&nm2r}|2*}ep1KJP=p0jbQ za-n@rf&m10Q&YqiYzUMz(Rs=8u(y?EkL&2Q=))~NE#Y|fy=)<5rff7)M17(M3c=Xr?K9`VRSJycMtY zqXC3A@)aC(o(SOuPJugQ^qj&xdkJA@A2+Ew%8Owv%&e>5)EI=TAfMH!#~c?G3N7a*5HDPL?tkG}&!roAtPae*M?Y0J z%>DY*YfB{M+m@c|XLE(Zc~1SAq9f8f_qd*>yy>enKPb=SNQKFJTa>JGL1alzM38lF3C2+*;%Zbq@&9X51}jUMKiP4W+-T{}DB{6gg6Rp*(C;sE@ogD13E?zsg64_}xPp2{|y&kWvO(AOAqPY{Eu6~*Y zvH`t;T~`aC^99~cITaaWfC?*@<`IvJ!mJ*c^|uVZ|`cr+=YFkXC;|3(Sfgnpd$uz ztKGji=yjtz^JAxDtdYHT%HNuzP2=o^ZT=X`)ysd31rD8M6-;GWj$98*?$L6eQ+t|C zNM)!ffi`o~qbBG|h6H+FbT#Atu}|Ke_E2j%o!2)0@m zlnf4KFFHYb);=c|Kx(V8nFj>o5RZau_Y<@d%FYz=+VL*L-Zx&+?tUGjx_G7@~RApEN&d;d2jV+;tZWcsFr6N=v-Pbecq-!%=H2TXcG07f~^ z0(!kcUG{S?&_*u)#UpG4+OxliA7iizYmM1S?~WvYxmTvrA=UkRV!x6Tu6*4!BGAyC zKK0?2;!uh4pM1l+p*MY!^uP0swGg)JwwlTwAgt-hpc@nJgRph+jf~n_Kp9hpE_{kfAbsd z0rK7ofAYJa?NQB(@g?z1pt)oJ*g}$-i!Q_v&Q0zfc3br~9lMKu53xqel;CR}vR5ommKH zedk$sv<>zn0SOsRz8`)hYoePe$v^2o?rgtYIc%}K3WGgR=DmNBieFWNePJx%#rI(qY)0gfm*(`diIh^3oxF@a2@nR8I~(Zt}OFE2M)qDTzQ9kbh_HpVZZygmm7NQZ)cV8-w2 zt1=N_SrEo^)-kBcM7aZf|E%(@1V6OJ%yMa5HB{Rl|E_&#s^E+9I~LoMn>WJRQS8Um ziKx9#o^W1Iy7O3n>q<)bWC zv$K=ZlsKv-zEawDF;b}5^Rdnrr4~WVl?_V^H7_CNgnlKNm*uOwwOMCJQb*#g0414i zSR?x7i*@n>sq(Y1|4SVWF_{h62AID_%9VBPxRNnCBnurZG0-nJV)o1_Dfl$ua7!z# zU^0(7U0IP{p%F9^@!umU8Q6i9J~T+H!t^dwjk|ip%+GLvzEs@jh4cO8&vC0(Uye#L zm8o6I=v*mt-_sRrJ-Hr3j)HO}Ur9M1%c0s0D>5)ZJT2$@Ro(76>cug)!RqN%Z#o0S zTj17-cEPqEq8-#}%m%JeUha+ym;5S7y?`1ZtSKGgmNhqR^dPd70>!8Bt8FnbT?jXMFd@76exsAnRt}2=WwC); z{;e3KE^_H-IftO3+(pzA?h0o_f$-f42ywvC7UHy!m% z6(-&BV)oGCSmb?eS*N0|to}Fo?eAa_92xpAxYlFPh;@>yNXyp3I_Xa<6(u!w=|`}$_;rsny7j`B|#??uA6&q|*pk1G->4?rf!slb2;*E&iuz;=TQGLjyZF?!vEo zMDfJ-gQ=)`rM00GL6Y+eN2Cu4sPx3^Ib};)EV zzB@&N*WB|*xTnNHjp}>i$_br~(mpgYTFN@zduSE`7TJsIG3#11LK>~SAXUm{524a{ z<|9ztxm%8|fIJ)-nvAAqzDZm|-M7#l8G>(%ah9W;detqy63US2Ny{oL;m52S;IF}v zw!I8;(-Cjm@MT+&5jwOzPCx2Y2U^HckgS#L7{XpKzWYTyG37ZD)T$xWxe)ZuJW@RV z;7;tYmjNx?!Spw_9fFrrw~(I03I1{kN)XF8W(gxt_CpEdjnp{~zk z)%O4yJ?+#C#%y3&!NWF9DZsn9M-g7*!0tC2w;%#1MOru<$`emLMHTUG(CMDcGuaRx zLK-8iC=pxFj_wx|5n`ylbp27vNj!3;#v0T?-+22b=0=F$;{z|>D5A@PUI&k`Y{3>0 z17IF_n=Tt@+ZD9`)b)hDLj5Zd;pdPD-Dj*Q8s47oM_uTo580|gb5IICr?l-X!KTPb zvhPbWgX?B(Mww8%-$VOr?T`tCGCsQj*ci)C!RQ?_Go)-mnR1ziZM|GN@G_*9Ixwng zocA2+mM*-+842?SY?h#3NG{-DnD9kSVzK3-of^LUNd z5|=m}k^+B8#;pj@YpsAm7e{HUjjxYSTIg~0_t;%DLb2hwdT_ZA>Ilot*K4!!yn?Qh zX(3OQ*&r;W9F{-+ziZ;m1RthJ`Z??_e_^<}|DsY5<%Lu~9!{*wPE|S1?yQeF8ll%InS*9FE1l`L8M%<}Lkq1>u3Uj+CQV==@bkcZwQkrh8y_V7!A%8PvzqZ}jZM`f zKKJ9**m7lAd#^VqR`Vf*?`3>E5bp(XwA|NrOGL7YVqGClRbdB$!P>>`_VdE#NH=WwRa z`cVdLg%O|feUsx0G6jr+}-da)C zHg0WtY6hty9_{<(+!QzL()$x6w9MsE&je4Rxliua5FBMOaFY#n;=Td;zEaKv&-hEj zH&2dmAOeP&haHW~VuV+aJh3xYPu}XQC?bwBqVa5}Vmvr&6CRw=j1dkfqqg?#Q2~Ez zb*bB%5|yp_H-|=DGLABDBHk-KHdh&xudY%dwskdH>C#Z4GN*FW^akBtMh;en@GJG)@I3(Gmq zX~A~MVi*jvUSlkm!y-+RS`&R#msr3R7fXm%m2@C^Z;*$ZxZx<}$QMG%0p6H2Z z7;D19@G_$)h^(6Pw;%JU(jH&=XgOxvrh^$+men=Wo#Gbrbuy@1UD4dA#47k$?EZM= z^R8AFmiWaHH}@eL2H)3;l(rXDBKTBaH}sykqBCikARP|C{GPpB@Mt%Mnx4(1pf0-dzmz5&{&5Rq4-qmD$Y(#9c}1Wb%H+@}V9ejMUdn&LEcd9~b{ zuOAY9M@*vWrN%kR)X!rw?bJHH3$uWlTtR#~nUXR}JL6b~hgT4&;MUXyuabbGF-ha& zs|Xzg@Cfu;aVR6E@PNVxB*3|@BTGv%dQ6IQiwGz=^O6;iOt%@vw+J6V<$;L@cLa&P zsy`JCUgtPSNV{OL&UnX zsM9Ph@xLZ{&In>B&9Gd}HUma|SF2NXE|)qNR4b0q;l&qgBWR@|(Q@e3Z(@XO-xX`* zO$;$Mwv`~JlnGLo(ShY6Q-4jNgQXw4tyUx+=>4i<%&c-VTK|xhWopaBpZ%z)c39we zbL?xgWK?ZiqSCK!KXe`JS5Rer9{!7le=M}A5AS`#Bu~7Tq&x?Brn4baD)lFMPB0+(iOvBkM->*_h zl>WO8>pNYG3d)W8R;MV3o+FrqPgTmkJp1KPhxh&KZuR|=qK6WKT_mGtxKv%+m7yKW z>oe{uyBBn|?}7u87e5j$9tp+m?yb36gJ8K~I<8nIsybFRh+$f?;B50ZRfjru>brHWn4p1r+t zP5jGj42uR9*yNteOu zQJ0wt;(4@?H6i9Fg^VJ@T(mu0{fsHT0KOQdJGQ!o)_%smRc|lZxKC}R{#*B*@d8B3 z#t#(ACt!DKR5pjp{L$gkyV~TpkVO}6g2yhUPu=tz>sh%|`%6`7YQowAKnB)8V4m`_ z`)SkBh|HT?mf{D5i}rexEG23fJpgKk(FG_5?oCu8%l?g+`4jTbn?#iNmI8m&FkYX~ zF*1GHa$mQ5uWhjO>m9WdqfY6Od!~0F1E4QZ3VhvV#K#P%n~53lTZY;wT;i)Sw`V;Q z%KE2}e2ZaMElm6t8U=^A@()v(d8pP*W5m+> z2&wYVTmTdMo_=*0dj(M_1yUgicH?NU89c!5lR@h2(#>Hs$PCgnXg zIuWjCRiA}x$lReVxDg`oWn-VS&f_Uw%lKU1GW|1N&dZANTVm+;=D{JF;Jr09`_5VC zezN9Vo6XPVvaX9dnA}y9fmgDCFBb6v); z-bJSi1)0F&l{7mL!ErQt!n?+5j}t|Y_I?(=0$QXWk9w{VpTCqHTEr^VZc2LOz?)y4|U($prW5#67fgPMAP6~5)^mE1wZ37+gp=xq6xK?ZqFH!l~W*@=z zMKDwK;l__Y)=>T`W8P3U0%Ho~>i%URTdG8_9KGvRN9@%k$jtj)QU$mWol^@f0WO+B zv(HM1F`K^QFFg8-Q2v+d{dy@=S^~MUjRC`(&68F9EB!I?I`W`zq9#|cV$fDO>;^7l z8?g}477>DYbx2zN05==HkcFKE*GhA0(S+ZI1)q|zvgc#F@j?lsB@T#wUcAtHs z!`Fd#+|w{s8fkwTs=E4PXA4>6SJMWFk5=~AnO^7zNq0#;|7GB2$T3JYG8vJxUGA<_ zt}yq`FFFG07f37w29LI0sZ4&aru-ZG*)Apz4ABgQk$gZ3F}K4|Ah(T0RJ1fv&Id{o zkPGuCb#=>{K-};!kq5{lvYn>wdga6I=yIHev)p1(DDql9Pyn#1;@ykRTwageD_FGLl(}C?Fs?hn9?zBui{Xk`h{S zrX@BRp-G+AdJFeH=j?aKy}$e38Ncz)JLjFT{(|mRHM?q7&8j)SIX~T_&Wr`zhaP`4 z(9%C0L}JOJW>wT)?+mYt&)i5lgOKK^r zcCAMGNhPuO_Ltb$P@#(hh?7muo!$`@*Ph3ULY;8I+N|4b=jP`2@3tC%g}OP1jN>Sr zX_V7A;4kmyveCuo@ zUwB5(mj_LN5&G+8Z?`E2d?(s3yD*qk&T>jzhye!2%b;L5cEAli#X00|PDbabuEvPv zp4tdkJC5+axUw@=9F_uLJyz!yiXrQ&%}u<$e0@bd;RrZ?x$VyfLw2yx=QXq z^|qe`rDYo;qJRJj64dcZZ`xd`)qBtawEE$*ll?q_G+PI--LNMa+Bjr=g212`7=kUe z0^Pi^62Q_)x*QF#`Ru|V<}J7YcookW#t|{?syS`Pxem8L6Os}+rzgBEijcj2Rs`2& zrtQ0KU9T@VkWkjm(j+9&YIu6E<6r(}A7G|lp#k%*HUm+y!~k~H*A9JQbEg1P0-CZn<1tdc=GDy^sxE(hmC4P_*iH0!=Wj3Ovc)RaN>z8c3)BQfF z$CRG(^%kR5>xlzZk1JF2jVX$BvX@eQ#i4xcmIq!Mm#8kaaH-}(jkr$1qHbTc(bnZp zzVeJbI=5%Tu++h&&~<67*j{k41JLU)=t&eAc;}{eJk=vzfgeUn@TA=XbXBN{>!A;4 z0|!!~l7a#b;^_(~ToyBZf zQOR1@0u}8iDH~qVW`u`c2SM5Ri3B++DA0TQcr}i4D_CZ`v;|4nL(id(F5#3U*c((9 zH4F!-lqL1{#a0S7`lW_O2H3nCBw!xQuXEe?LIrq>LN9Pk%LnXpeJpR)Ahn<21cNBo z*W)QkXCtip0qC*tr55zFbzrb|B32H189gf+dq!#|Lb0a`LtR-V@cYrX3A9ZG9J^Cr zFi%B=V(D)faB%S(x@@&l!bw#ZG^{Habe#46SI;+5^KbeovhPHmy4Z8Q;!6gLM&w55VUxOVauT+4;Vt> z@vog}n76_k8PLe<5~kFUJ^0}Rh#(bte7_LGI#K^ix4(M5>p{T}5zR->UKv0gyIX)s zVM~R5-0pCQ8I$e!RLQF0`W^$IlfuhTlIrtdQu}cC*W5fzzAx2x%^MdjM@YoROBP_1F(809SSM&a*Zk;AaY}M2pZfHtrbEX4-o&8~}S;y*zaiL++ zhcxMi7C4{Kq;l(efwe^#5&+Gt+Y2l2hIb^#7r#Vy5EN@RdsKTjWq0}_3JTUezpvN* zeg#psjS~{DW+-6Z5`mLGp=(YcHbFeU!x^G@9&cLzQ3iG&X0`^hkb-#Nd7Ast>mK?| zWFt9e!9(AyZj$6z&(+H)P)e&JDrKTrtJSQ}O{<s8P;v4qI`NM-4srJOWz5)stM%WMwCENM|-MX&Abf2AEn~dGWRC+ z;ohY3{eHL*g+3Y&)kGW*l63P4gEKWL)FCkEAqt+q{TfdX2Av^$FXS#$$Ai8xS8NU#NNF}qX3y% zh^#CcN}5`{8~!C}Pt3hjSh(%0!sB^xa2sU?r)dg~da(|i`OAI8;If_Jjq&HpyXO@% z=PZW@{@OW=D)2X1+P_F^-a2^h{56U8O7_5OO4NtGOW6CHvOiaASK?guVK6Y;_g0VW z&P2TU#AD8{k^P(013oVKW?*=Cz$}?RF!h^VX-)HiO*_W4G-7O@R=6tXYFu5t1H!uX zLrt@WA7#zJ)no*~P?xTCU$d`(x!+*8Ne04u9mCoY$kuDRF6Azo9`<2DMt%*bn?_7m zMQ3zY>4sC5&P1g}G*NoLDOyPE0p^0M!8dwT^c^^Kx%NHjrqkp*1?4nRgEs`-psGq4 zm!TwCt*4>kE5i0-ldUAhC!^S-4Zt(%7g}0Q4PC4$`=^HR)>5W$ani4QUgU9qML2z_d#Ao zd8iBWLE*@)*v-ss=rgoJRF8Y(jm}-W6=hvyxW+{OA=Hp&?VkOWj%$ zQ9(kJvh6Yu8tUO&2oT#zzqip5U&ag#ppXfbi8UsVfG-u*4}RE$+Bvi>GRAYua*sjx z%N*{s)>E$pOJaszB?~H2h$FLnP9axrXtNBnZ-twhr3nS{FG5j+m|++N5?p(NP<-l+ zaaxSQ8Rfykr;`iAa-5E)lvpF+BA8Nr=4Bg3>ZKVNTchMz5;X`V02+Rv?0Qq)pY*=FPWkn9JOTjaH8`daWb_cUtAfB`nn00ljGwxB;rRCl<5NS>=BxH|T#sDe z>>;-w0IHvFjKB4y-x_Rf>U*>J;o6{SQ>1ya{`wBmS@RP7Ez)RbQ|9@S2*%484)$l`#&CSsqC}G3xL_qE>Pc_)PM6XRP2DA|n)0u{pm4J92~QQHuIiS=BtLQ;K#wz)%iBEvrHda`J{X52Le zhUrB)&FoP%kxn1ESlT{APK0x4|5NLD%IFjBdd(?ddj|#9*lK8Ht@nJz6dTsHOp?h|s5cLT`9+gP0+iTD_1ajn58be-OdljUo-3!rtw< z=s^vAyLzXj?Uc@W3%b$liorO{i5L+z;Sa97j4P=m-}Y6Ux;qZMoY+=%f(TIFdBdfJ zcgc7U$2Ffb8qC9Qs;_sVt1gfGP!CwI7Sd(c+IuG$8HvVmJJgyam40cl##=e0iI2D% zE;OYCF5<>r=Ca*8WF%x|9QGMDFayRQ63QOUI^FdaalTTy;iofH815&&Zefw|c$=n`xD`YdvB_nifoR*GKDkIf~|-`Fh@r$l7fU)>5O zF>Rp-tIn2#oejhz>IGdUdkn;uq2kaJaOp-nY%(aUg2xP-ka)Vl7faMDMac72V;@s4 zLcFKW1RUL@qP=BwrggV=!bSbUKHV&Wlz+N6LZE}ENI=Ep%9@9_6p_HQvx+nW&Di9R`;*dNFeQ;P&JNLC8b$k^SWpurTE zAM@qM7Ey5A!a&>iF%cWS>*bg_H}dMO_mKKR<@`s&ccPBS%jCkQb@w3?vTN&#%VQb# zfEI420f{aZz-P#018*hZ=`%>ZzL$j2BQT}$`9TF?58tNI?!D(z$j<{i62t}8L_Iq3 zz!Pz-0{FQCe5`A9@$(j6Z3t^Sk{5r|LJV`=-%kfS*nzC!9?j^n?XoU)f+&gx_VGu1 zVv?CG;cyXNhFP_Ct=5e66Tj1z(3|A|)jNL9fU#m-h1oMW@zEy<4PIL&efm2$_&4U= zaqG89JEwstVM+2J3~RQ~onbl^5q;Fh@mM?sXS#H?|gCEhPTKGU$PTA?>WTvx3zcf%=9P1v(jfu$!O z#0_`KdeW6;MV^$6w|IFIy=WG(KpLP;B4a)(tf7mIAA@V8p05kNRviU9QjSz%-7yYk zKgZdXg-t9dNTsyy^gMX^e47izdVY>us8}1~s$ae@{axwPSGKE)adY894-zISAmTzL z3!>oQ>~v!sFNf?&iNv#q{8UL9{Zx##u$8Fdi9}}5y@4h z%A%F+7o^vNVXk_(3Yzb_=-}k?jW4bBQ7hY?Z|7htfTPSw^x7Jc&sRaCCghc#!m9CA zhSAw_ZB`)xHuo7|20GXY*>7*_8>mZXx37JKu}kn{ozVoUs_u(FNqsg{$WhqbeD6=`xe2=QV4pS5#%R}^l(IkRHG_WT|Amn_sFt=bq@6FI>rYAFs_v0_Ts>>d&AgJP!*B=ce>L`R-)?AoGWB=lf{tI?uZu*Z8N}yY`)u$=vZ+zp2*{Tl9 zZfGceHVL6DasO!uNJ;SkKF!-mYWK&BOM}kF^N45TmdRJ$S5vL;g5x9hzj+G^=cq44 zN!yDz;pu1_qao0Y-j}epbnA`1=P~Y0n27x@gYTz@UM4-JUd9^-8b@C1>*s%8ITA{I zE5LeAq2qwMb;{_-Isk^)_QC}qge3znH`Xi_#;?}n)5^bcQ#d7W9-KHU-7wK{eH;iy zZE#H?g@0eFHp{zxP#fl&1ho5-fk^D7DT;HNicAUNn74KA>db5hY| zl7>&JExi|J?d>VE4n5M_)NqR~Xj)@jpx#5O{xSz*3k-Z^+_LOI;rE@KM&1sWyDJiP zW4=x9Dm3tjCtCt)KHkFu`RFZH`tiRr%Q(#pt$~|8n>buH;#8F9opsz6S9EV~R~C~> zIgMK{6HuCi8LR7487K0P>BJ6gle@NQp^Uf{IwbyBE9Q?|}(?|=f(5C6R%FhZ&u2CV61fu4*wv z57ktb^KpBXRCcu?gMVx0nnM>}y&V&bf)HNw>E->p`niXWKMwCuCXPK_fp?O$ojSab z8x%X*L5h=~&3(^A4MKPi86Ylk)0uIG0PQ6GqFR4^ld`+?yJNf)IrR-j$tGwL< zvkv9G?N|7uv+mD3rP(u~YHSuq_!h%ct&iyRAz04dVQzYLt;J_AJ!`t>g4H4PC4H5y zp}u>sA~L|C#8)?zs3rFzV}5UF?~?YPHPpAL5BQOK(K$F^a;=u36wW)$^#DMfP?hjBTTio!QZq)I^2;V6FBxI~?~(>bwT z$1iyIA*6dx<>ev8`J;q_PTGbN^MbAFm+9*t=<}T3z2FUZadrP$qE%+bSB52Yz{NRK zuwoxt>oJFlK?bP8CA4+M;(n%f?!5wJWzR*;5^yN*cI5@}0?|3nMY?0*VYJG(Hcg+T z-u>}nS&`r{!5N-YSUGm36Id3#NFS-tNkLO)S{Dw9c*xtcuLFxS2x^YQJ-^qkQ3&M5 zfhTX4ZSC4KYqkr1rcVb+pxN#{_F=!Q*Qga?tMM%uO|&EBW4yv`EAU3%*{T?_tczj) z%7`A}3g=+jSveR}|2u#_vQ{liJlIZPAB6grw?BRnS{nU_oU z_K5@m6TY@ebTvV6F`OI49?J4s0xd-E+d~($iyBR6stcXueeyNVa7@{;UPH(=i4owxX@Etj=^_%E<6$I zQVW-9LdJ+WmiWk+rGCm!$Jhoz2O!9(l0D=-82(1hDu z5zbSqW+oYgAt<7MA8!z#KCS#4=g`krigI?VQY{clzd5&}OqbBm#vFRPzZqPaxEmw`?En&@OHPcT9M^)vEWCeU~Qn+a8p_CJn$_5!RKO@fl zK9SgCh)94TF!u(y?*0Yx9JU}Pnn3PT!8|!Tb*(_4fqfq56j5TKi~co5#Pi~CBv$yI z&H0nRW~;*LWq1&#X_8M97$XSi)yp(igyTihLtuzMmOcXhs(nTuv$%0lK=y?_g}4Y^ zqP+*WT$y2Y3f5{={F7k6@}r#p|M;L_j_BTalqZYM=f?q}xKq2BWyftMLyzwBPLOl7 zv(afZFb0I(kb!c>oF3~ENP1|$GQYRyTBz}-zAm>}N!+tJNYfGf;mpiPS)+0jY6^Dt z{}B_g7; zl%j3jUV}hH4-IltzC!YYf2+H%;=`9a;T)-<>z$WeBGX^1e|{LYfvJ|hH%)9M3@YV( zjc9`sp!_@3WXUJG(PLLuB%2A`Az9Rqmh=(U8v@%K$ClUK*_8I za!Y*v!RVvo+cRRe;J-8x#eJ_KUBvui+3s#fV9_0>G$-GdYObJ5@jTGeQTJTeWqdB) zkEA}fVuD3-%2Iw%EWW{Zc%?zp^f9!B#^YkZ$#K0I@A4gt3}Htks!hSvINSyqfnNW$Z{Ud_3ZpWFoCMNHal>9rDkuW;S?GoQhjR;0Zk%$ z0>NzuL&Fhw9JR;2!R2|`7GFhy5_P5FN03o z*~`UeB4g6IxCc=DEQ+6lsVF$y1tZ~qRR~bBZTfy?Qanv5n94JCmb^9uw1VCrp7tqp z3vre}p;Ww09VD}kh9s%|;}I8;Sfe!t4A7>Y zrR+e^l8rByN8Oo5HWMaNkSYTV)uSdxqIjS0_Qtc8-y0MCπ@kdjCw8JTEG>{-E}U#b5DH2eXwqGE*=mNdUX3CZL{7V2H4N2 zhxEQflkP}OXQACzQKRD1qkSKy5xY57xkw~PXSg;(qaRG!^;cTx6pm^f2H0I)&6xP~_-&#ll%sTi)rF($QRj*#2In-WM zXV0_1LJl7SHbo-$68(7`GQG+;w{b5bIpAsll1?-8YUm-LxQo1|jPShrq=7iMAWEu@ zyTZJS1sGwK9me(u*DhyN?zvUOw$TR!>?lO5qj%T#Gmz=tXHX;gW@B&4dEJ3gI$cW+ z%g9K|B~D1~@^5BfE1bM0Z+(hfoX#Ns`D;aH)w3qhEU(--cyhx(Q^Myj6$4mcKRztv zwn(IH7dSlv)r+sx2>6P0Jm;s8Pwz00?OVsspx!EjVWC-I`DZbCj%y7Emd*)baMD(h)vyL|0Ol0J(A4Wsb?&u zPE7qCCl3xLzuu#6G79=0S64u|cfpoY6LiNcZXuPA{7qbspuw=UL9kbcex?cVrUuJb zlgtTF2ck~=NoD`x9#6UUwsX)EF|1mZ!Oo3_V`-;VVH2c2DqU|*+8$vdol@++?X%?q zMK^d&Y3R1W?%Edhg`w!3nT4?65oTb*fhkKd4InY#p(2rNCY2O<*pjoQOW$@S{qPOX zu3B9$yb4TAYe<2%-N!}2t*IA1+Zw?6nl&~E>TbU*e4Xl5Q_9tfKshQ=Lr9nmIH2H> z9*}(MmMDDe`PZA?|5D$Eo5(YTRm0qS5y4Gsb-6DkM7WCV?b@{l=`V8;Z@#l-MWuY^ z{g+hv|8h+Jy(#>$o&K|pkipDsJSu5>%w?_MD=z!C^`Oi?w42YE_=P7J>3di^xYkzOP*-yu{CmeKx#?EMIfT@ zzn}ErjWIDD?0xjU=*Vw9bPHG0Pn@nz8_;r7`Ypo#X7Le=grTkSxc374pKU5isr{|( zES7Eo1!nH2vW3};uYbEhjZi=R?Q+SIwa|UNgTF1@+I+3~D%eoN_Fc`z-)v zc%<5YcHfN}`udCi$GUuPakyS{KXTWy+C#K{g9FM->!3s(t)o6q`dNFCvHNM95r;e! zeIN?ZZ3=*Ia*ao9P!jdo?&q8j$d#lEz#c^Cbr)uQJCo^B%2h)Kadf1+DXGy3rvXQ^ zRJC;Pg23FeZ?B6VV9SOLkL&3c!`_iV?HIEcr_wwD5m0P>Z^%x8NX&QjlO91vt3LKtEoVz7SR$m+oDsm_lMqxdmb!WPB!M8olm;sk_9%>2_yA(&qfc^gL=L}`i$ zaDyVF?tz=`6opXd-R_}}*9|ucS$cADz*!Si;K;5rHJ{@(31d2l^i4mAO)WL$-~a4V z%Xf~y4YKoN$I|0}o5|318qNzG=V^8Rn09B!O%ISEWAcXEAG65`zMzjdb&}@&AM+`B zos^Ua75lE({-XcLaHjCQ(P*Wth<3H8NCf<@0n+ulFa9>?ZBhm_NB`F2a_FOzf6|sE zN486Ulde?E=Gve1tl*1V#Ge}K%Im-Ir|;4Z%Kxb$>CAt33NOunmf=MZ=aqY5`czTt z)~iwzyDbtqdpebo;Luji^jllw^65WKE&1?MJ>*|Ejh5a2sF6|)IJUoTKW3EAM{Wnb zI?(^eUd75Pn}!K^d|mU8EvPLBGCp|e=9lM-e{4duZ`g? z_aajnRQ*$np}TaqZYW%3&HH0-o%t~z3H^Vs8LyfDEfJhghCs;^yE(2T=3G_hSZ`=v zSuSd~c4qs}D{+|C#`RA-v}GORvA?Y{JDO`XnxtT}O}V4n2?uT_w9`c_A`L@u{s~CN zA9Iy#RSU>Z3^g{dPOzxT=`QaUk658M>(`8;AScTOWHunVfaFI4Qgb zmd>KlLUXVC+m?^pJ-P27dNEVL#3!tP)uNV`<@@7xSxCpu;h<2`F@H>5%{^r1Hs@rJiTm zIoA}i)eBV%ZS`H;4tqYJX>9z!zf#9QKF=VvdVKuKc0ORCws+&>&?TDAJDF z0lYDb_ZOlQCxB|N&e5mM7)nw=3QW?z*%U=R1+OK$w3Fjjh3n~gu4cSL<}GjQm>5Ap3~9#ZNow-fdvyR-vtOl8oH-hR-gnQ01T0^7oPHc( z`UJb!dE=Vmi!d(49(MMgaKRj5O%+Abk|ND#My^N_ay4+AhEIoQ1N0y=Rw6}1V}*#U z^q{ZT%-9JD^9l)dOr{R(6LIf^Is_`>5c+Wg+{mnHaQkV2-{FFY%0pozp_rfRt-W)} z4v}-6-U&fNZ$;DxjbJcPEv7caVeIh%&f7@EZtE8O?U@%+ioOqGcM!jzA-r(HQwA8b zf!K@oi(Z0gVd- zKUIQl6s3)D)(){dNIU(Tq;o9QRwGPJa51=k4(O@Zz}$i=6XuZ>%|6)=a5g}POHUXK z6HJ6*(Y@R1A`@obD+hiP3*8E5^LVPD=`Hi;B@SCp)6rp}nC&s_v$H)_HUwmN>zRzb3U+PC#N)O- zAW|Snwv-4HeMdg}FVkHgGAkP`N zPz>bU1wCi8Ox!szu}eTxs7wwY*NGBLtqHI<90q>Eg@x}-F^r&)E`_|gzotxS8Dk1D zld-{@I}WChVaP)t=o}6?M~sLs0=L?WEU7RB^OKOhu!8>963+incy?!6S9Erf>)xvj>HHEH%?Jj>1@!&c`f}UnQonHiO&uAYEUo3s$fJ3R#1= zzpo*j>t_$b)q1xPF>q}z(}iUe(ol#;2_G)?omPvD8FmXVIru;=W!xYo+)|+s@z*eh zM|?yTEtMQt7yO6(huqlE$Y}yzdxn5_8#F|x5m-rn*BzM5u^&JZWk&$^OvAOOze^az z{A^qqPgMqsHz*w@;)EH>nc6x+4;rTobCVi zFkOoN*+Xe#nR|50vB&(+%Q)KKKjYyXzDLKb!+*r)=cnrX_kMhp-J@&PdiT%RfO&%G z%2lcMcxk)2FCWXIb}qNPuJ>OxRAuozbch-d2Pz0csSo_j!08E=v2z+UM6O-XpyOYS3mUwTBk#lXUlFOK5x#m4Fug z5;;}B!ht>*8L<3SBqnc1<25_QdbR>^wDkH3w(9Oufvs;y^-;Sj(RdoEnrWQtICWt~ z4BI}~!vveBE3kR$U{Gq7KlKhv|_r|8< zfjZp(3RC*KRz`fSTO0FAF6{N)naBbs7SA(;VjaDCMS0+ZyOFbzBr4O^^(Jf6I@`NS%5x=;-?C+RLCGmjwyB2rFOq zi=0x;yYv8f2hxVwE9Qk5rR8i1o2AUsS$gcG(DHHh#=#ojk8`?WTp z>u?&oYL0`lp_A)O1oI_)axwYj)(%3z0<6a)P;r(Gs}E(`t$(cU(oIMs>$jDxqVfSa zp#%oh9<}OdvZ&3sdg(2@9kiCS2H{uw$gh3DQT5SFsa^}|7Iy^}>r;M$`8_)go-htG z4-$}pJZc1=P-}yXctU`!YEnS!wbW+z-z1cCEf+9~Po#bHJ;cRydd7OC%Z6j=PGxztb4ngb6KFKeF z-LHif*C6bK`)^(M&w8T|e)#^xHQ=pj?w$KF7j7$*$!y)B|FF;0d;2iI%Be%MW&8M5 z^lsea<5w%VU@EVPJALLT+rC&~1%(Z@YB7TJ&cyhoWC$5n{Y?^+C}!cl+L2P0yxhrI z38@UWk1%)?9WFTHYnmwFJ%}1EK~N&sarB!%OQA0w+=&03!nyO-=ws;o=b0n>->#?h*EC> z8H39%a&(5Se2&LH3@F(cQP)cF?6c(#X(|q3$a`hkTD0UDlUbPR(wK1mQ;j0c#TR{b zB!`p}iFqs8hhBeBqosnq90{OOK==n>0Alpcr^u8sZkb zRw83vVbN}5Td1jP=uIqLeAM0zw8!@k8Z;D?ZXcUn&qr1Y%0{N~%MXriW2m`lcj#h1 z>Z=;l5`nh$(fCg8;{HNR&aE!F+4s(U%EB!1ByZwUni1{pP~76XckUh>7A>IAeNDnf2_7KoUHB^dWX`F7+)=gETK*?nX2cd(0k5E4d6>a zu+t9)Y$Re?jV1_bJBMvA_^(cVfBu*w_E!h!Wn|Ck52CK5_U}p&hhb?-Am%*Dg8qeKw7R3Taey9Nwu+EDC?o z&&S#8eY?)j)Z_1ewd9)>wzPd%fKB-Hlwj3FmRtMQprMGI$4kg`Oan&7mv)MeUgl#O zQM6kUU0QTZ{M?fDYAWb!qlh&Eny*uMN`u`=_+pf6DzhHS!Sr3)A~p>%KmK*1*Z zJBl?@1})}d;L78pftpE!T(+QR$x?@6pbQ%%-V5%f2Z z+&odh<*o!Jn5DINJtyMv4PIVmfEuOZe9!sS;p5-W;c@3T-v*sb!#wib&dHDIUofH1 z?@{DT`_NKqVeOT75S6OK2v^sZGPq@dli6B!Ug>vNnZxoybdn~urIJWZ|020jl;n)W ztamFFQCL9cE>d?pL$(c4MSH4v&Lin|NWkh`ejGMsVCTkBUlI3-^|jL0 zIb57xSFvBg5)^}Kc+Gyelohkt)eNc=$JW{<9~3I{**-bmNNsJJ;|l zrKbY9ejj!MwJMX#RpV#G%j*}dZ^LaQ*tPsG%#F18It0_+>vC(P+2uNkHgwf2#VzG% z&?z6#B=;X1Crm}Y{AjDYCz9@e5b2E?<;(fZO{~?sP)sWC((+^N6+8MG9*;JKvC4R2 zZZ|V~X3(Sm@Xphw4?Sa-$1BimROhq`;g zHU=9LNQ`V9Iw-$NxG94OQlB%tK-Gcy)%_?#R}-4T9qAyfX{BY^`++k_EG$sf_*3tP zPb%&=e~`H!%qm>b*E0(vANkvbs!}lgn|8&5euv*9Umcy4FZMcx78*(FoU{0j3S~{+ zDK_c>T5ua(a~;Tn*LkNE9|FVBveoxtD4V~|?K)f(Yfj$BsPbC!{p_6cVpqbRP}LG$ z_fzvnT$3hING5Qy&P!KhF@Eie%hptE@Mb*6eB>!g`2k%HUhyM&LVd=9`}wgC{QS+Y z=%_6qr!l8C9I|<2YV2w{&s#(n>WZ+~RoFbV=sbJ1*_stg8U+>~&er6w+1H)GLe{Mg zdg8Y1yy+rEMG&@bZOVDF3KAFI+NonIdPpm6?Hzsx4aruLo)Yne(CQZEGh==n=ge~k zYIogaQth_}5lNS^MQ9$e{3vaspjEk*( zfH3VU0>wJ)X?M_ML9rtg>RMI&eO=Ee#;8!YC!hTvTW9xQx%TpWB9I7FLv!G9w#M`W zcIUpEJ+k9aYqgAh$Jf{X7ehRMik8jz%m3W_k_i0J@i(O(5IooTVpq`8Ry^NEjSs6^ z3hq5`6dvjIOSoI9U2nB{Xa*NrZ)}^2b6YPQH}RrtkhY$8o4rV z*}g#mB{6`#R#wsmIdB<*Pkn(P!a{#%`-fQRwPd%798Jz8{)Q<>vi5YfEDuM4jTMFB=62lVsvXcXK zK3xRPB?{4HUg-N6hG0v+fVI;ho0D=q%qiD+jLYpJb<#PmxH^JDN_^Ez6IelVoqP1g zkVU-F5B!>hhHTkg%xn19ICT+`D<4w21MODE=*AQ^3bI14*AhaUUL^$|h?<8nk|$c8Cg zJKqHVS_ZJBh(WF)%fq}T+JT4POg*zbDhK>T)Lqr9xP7yCunc5eBaJ?u4r`CqGca*~ zIEMg#2EsYYxpP!31xu>>)&>sxyqS4s4q>Spn89``us#75)?d5NMoqJk!2+IOCjrpr zsD|)hcyk0A;6gaV-$Y^n7N6Hs;VNEv&d(ap7IAG*Dn4M*R;e!PoHjg6r^$YqwI@XRtkz}ZG0_p|)pqB{Zbo;&ceKODt zkq3+P1T%Fb@CccXzT5;ENYl>zv~}|##W*}N_y$|L3^Yd+!=gRGW!pD>e2meA9m`~U zT|aUyZjt@d$u~u1SgHJFQcpbpKC^9%WqwS8;6*AL%wC{+O9}FNJNL3h zC;vL8Q~Z$?tKrLMclbo=4l7uHu6Qj{HGFF+G&BFyWxm;$gEx4EKI*Q|ijO`{b#gts zpF6wm=lLVqhX(l@#w=M1#oiPte9DSpGCGi6{^L<|{HR@~TTA!-BMC7ZjkXtJ7!C4w zos*xGcU`YJwl7-C$m3){kH76%lzmy)0JE|lhq2bTaL#vF!=4}E{UyAm5JWm}&XjJwSvs)^d}bbu z;l#PGeh<9=32<(aEq_U!>NNk@yHk3D~0ME}tGm&%GYmHm66{Ijg$ z|7P<4v0Kdl6~e`YBYYescc&4>O|%|_eY1IHZ?-YwCcs9o7FTN0X`=)8UnS=Kbsx?) z6Z~Z&EI(F!w`2)R3uAhJji>Ja`Ay{Cdi2j}!98mdnV9Ln2lW0xu@AmhFwqL_%DSbk<-`4}f+^^QgJc_Q~+5z?>H5=2C z^y^)J4ta8X;10fUb)51VD-wIIGy2}tOZRU7pU`W)x{MUhxx`pPX1H99<9?ANQ0z2g zB)9;xPRZ#uow?A)_40CK(%iYP`TLSYKVJG6G=pe(FWyCVs1jMjAk9uVvtB{9?;p4V zRkxIZWl-lh(d=8+X(!uA-2!Sn^!@;HgG!mA~3%`+J1nmJV!@q)@=-Eb@}E7aO+QN z0{O+Y29lFJq#MEV;EvB{=2?UUR67VAPA-1*=DP2DjK)#efe-l1Rm}FTkq#v>4wt-# z!u>o)H~jfD*yo{?=pud;X~<%F4tc@~nx>&&=$x(hKb7m?a3}W>c~8< zJ86(YTI+80sjk}+a!B8~c?avMG1!jUF5Qp??W^A(H!?}&TB5e=7fkSAl)dtaRND!N zU*rl@23AX$L;6wMNWS&=T|{;(_`(vtSobYt@BX~^5f;SO8~?1h?h8gU>TOAOIe9q{ zi9BQ=mMLW|g=H8jg-)*eMsdY(kH|5ut>N6qEe1EJ2p{wW!))EvW~~NNY;m0L&Zzt2 z-%247<{cy!Qd{({-0MbU2O5LwIX3;rAZJLQp$qmW;6c<5>5nUoo0@C*Z+rhjlaYW~ zxd#Bn;?XitU%ea_N$>)RBPA#S@)`yWa=+;bzWCtjghl)Y)uk(L#xx09v}j5+>$sXK z#xJ*?5D9?$OQsTBi%VpHwgX%>!a=?6E)-$$LJa4ZIAi^vZZu(rZ@p8)>meSbXR7nG zn#5~>JpHC!n0$ZOhaf~k$>X^$nyq_7Y40UK)etf(N_+e(R?KC(7H2bA4wmtA!gJRq?vdVHB{GPm`*e8qB?+Sfu z4%8;e|2#qtVIzvx;xb*wMGh|o$q zN?X@}C>q9=7v0hVYIg|^QfKXbgGjHZG|!*5&t{%rK-f(>}Om7}{xkJd)p-W<8I zLB$i3*?ph$nRqH5odX1?muPQIKqg|G8hdW0@D57ta%uawIDLD*er~k!;|Ja=740Vn zao=@}VG=_0T*=Ler)=g>tmX|FADqo|xIt&=D-|DE4Ly!E2d&@-k4G#X_Bm2mBm?}q z3TrX?nY%{d9gZGq%3Nf-;d(P75+5!D%n&)Th(3`Yl#-V7wlNr-S3XEjBjnV&JHF

>r|dyz(!LzVTLn{L9z9k)Xuli@69CH{xu3JYLp8 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 z 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�Pd=IjhPa2x(va8MI; zta^_4`!7Y1W$`3oTa0{*z5X7!>f5SRgn1$B_(#V_Wfog5yrg<$bg*Ok+`&tWDc5J8 zuI`>;5M!NZi0~|3yUDqq^rgtR^w_JwoUw_T znIxQWepJR>{pvGArR%zFZQb4g!`7edhiTi&^qHHvKdiFX?1|wu9hm$}FId^zSS&cN z+?n}79fwC{>o&OF42yc`%hi`hb6Ku#t#;xEFCA6Ay)vqNl7R|5!|D_2ixlH5!2_o= zuZ!J_!zAvh{;L_va)Rl^GW~ORY`v;U%5~3G0=w;yj^88z(?=43w)Ji_ zQE>h5E{q!+#EldFe{`Xw^r%lXLjGJdLRwLz)muc4_TB)m zj3a*uiaPjen~ft^>otHY@0T1BpJ*ZqNPS=Nrovy-x&xygcg&Mhzuh*jAIa-0 zhG$cOuiu&Z=dpkBD!pN_-}`UG?!a~T!Q4EZvorPWt@A`;%1IJ7@w&$_U{#W*H`x_f z`5fW|OQoEa=I4Sjju;3Y?R(i!W(V=CYk4VA&Hl$U~e7ys**exS&l?(zt?&9QWU zEL@*Xy+Qxp<3kq8a1W@n#77iLqWbn|1vv!z<*78y|Lpc(L~E|2X?QC_Ad6* zNz=juO-;HVt}zVt2*Q^c;o`55GtUQfJpOpUPA;*g;T*^yKYtljS4D%Pmgf&cATxL4 zXF>BbpJiBmtqa9TAwx+E2>Q!aRzTW{JRzH2L378?kJ*Z8z^Hp|jRce@;@OWi-(%ja zXBsuJ-0bz8K>+Nl$nL?}FJ*&A&3;{b*!hBXjAlGujR0M%{n5Ojh~Tm<$nmvyCx(Qo zG3sOQoUrvI4I;^Wm-Swe-Cx(3ecys~dhpKOED!~7hVZ=k5K>O}g%PTcTln3RrpJzd zL@a)QtnBH}*`?PU&!E14*(X?7Hgztn6M|c!yWG$e{ z=}VLz6*B3B6w@FSoHna{ogDYkHlxlQ-l;i|2|3jY@tn7rIr?i^oP#4p1h{>eTpsFP zj4Ye*9p0t4)9tl7=)UHOAsg;<#dUlvDt`A^tkYWb)JB z*&jjktSIiXMC6lQmXfDFkB=qtPks|DIRc{cH2kG-ixO=4ht|Qkw=nz=Tk^2gu8AG} zsiQx3u%gMzW+F*5rUzgqR7_pAV6ik75Us9wMx^rtT>(u8*JzQOzVIlid>-c?If)1x zRVX?^$Y9DYG$>S8>u4`Bm#Mew2jam4Bw^RFRBCA{{{AE}CHk0;Q(>|Dm73jO_PqFE z#VItjW>$5yjEdF3(SZ5d7se<__2m)0zuUII>HVNPso*Vqr5-NX-j(XqDb5w)lA*az`R|Jvi!mOK5|zU{jr|KwclKirnuKI$)0TkH`blbgP2-#wIh`IJQ`bk95f1>$S0Fs8f+1}4e{Fe zhIzkIMNxL&*5f?x9+Zs~LK?$SF~@>4e|4hCyjP6_R|BF=Bx&gYC> z1%)&OPGj1YNu}XsO`RJ?;M|6sr!|d+Qs@^%WDxJbV|q20qgR3;&N5)DxD?a?QsqYf z@Hu3Z4$%2nSt)d}_iBY|-g#;-n9q3>8CB<{XnPp}^lf2AUWq;O6P?s{3HGz* z+qQWisl*S=7fo#Cpja$?N#qne*UpB_tFZ&w8o#1g@dO-8fcjxxE&$(gFgS?~BNpId zAH4XbkE3}*EBg^arZ#E8bGN$IzG^-$ad10T`;xWjlM|s;4NTSGGi^!DPifM?un+k~ zK*L=P#f6g;N%AOeGV%mGeIhv79a3(~?m;NS)jHWPT>L)F z+;`k69K&zEMs`((X=lZ$>we8;4 zdZgzFZSM-q@w;~gS!0}f|9dH4+~gEb{2ZO&E&tkp6(p91GYZM7*uYfU$U>+wi(Qt- z^RYW2;-L}g;RNwemq7*`3=-it=V4}CaE9<=*Na0l+Q+~W$=d3d|BTlE0ojfV>7XQz zMX#Qh9#rNgHL=CeIZ)g_2?DFxu{?|-O==?b+pF~H#z0geg^tHhaenp1p zzwMt%`p??&|I|u*MFuAc*m8`VKEBEIi-v7-maOOl)dLC4PtWwC3M<73Gi!ONY5v`( zf35y<|4B9kc^qEgz#*0DykS8Hwf0>v2ial!ct)3_u02l6FVL2_{xXztF8tt8CQr;Q zi}0fB_~uSMSm$+TTcJ#HFhj096L;c@9egsEy z`A8~n)3`nYhZ(nEkuF0jolsnw(DI$UJbq}dt>V--2@zwBXW4t}Whan@qKR*@&$k;y z9=h;QHX_6Fu_|&S>Z^xW#FTN1`&0V?uVOA!dvcU)w-BCu<6UvK=_re^a2V$W?3MqQ zSOCMEl!#9TsA4W+nu%d?GHYHohT)L?2r4NlT>@x?^NLqfSbr)+Wgjhc_@m$Ia+~dQ zEzL`>0R+BWM4E?>t4V!H`oZqzZ8c=}&kRJPW*!;`UT5KZp!ik^NF5C5TqF>W`K3fk ze>?OU7bH1;bp}jkIA`AZvnomodVZk&dMIcrl|GfF}&_+A5}Od|8M0FXV%=nc;_M zLYFVRVSFLgoTWnJ9KuidiC5j9E(CTU*SAy5c$)G~mC7ke7w51Nr&m%KVoK69&|?%R zCPtT6c^KR`sMPxS{57jv>3d_s3m{mlH2cK}1=gjEL0+MfbP#B@z@^UzH0DA{So@yV z>k1HJG9{#nw2UJ_md*vTrNAI>TjGrt?+!+dmdSNl9JlSWy_GaOVXN!h!<>kZB0s|0 zFovUbyNu2bJ8MH)u=$(T#B8dGu2?cC3?qb$n$7#f)CUOiPVWV~RpX8v#USh1ZH>?; zq(UsCrYBy+N?_zVk+ALBT0T$e;HazI z7FqsHkzVJb=6+A^1iN0L2}7MV{REoZsJ= z2Jp{6q98X{*p=@$`qOzdxk%8z?Z&lSELg;>7-cpwtFlX^#@S5Vk|e&K^wNhRG6@IA z!O*cr8(GRbuIFN)Q*CrQG8{||2Q^?XlpAlTj(Z1DDY!)>kzC(kaVWYAG*W)67nPjBXGHwUv8oldOz`T{*mjaK+^D+8wuO|UQC z&3Ug0%@$BFFbQGVV2iYkBs&0`8;UL0{yI>t2_o9YjYSi?)@UdVEz(mYkB90Mp7r?Z zr9k$0!4zC=*XMKJ1gbV>`NVb2OatQsoz?@r${B-wQOd z+I4%2iJKV5i&vi5`)3skR+5)5ZXX)u=!Ep_zLoNe(V2}derFZ0dWI|r%o%#Dxc+Nk z?k~Ywd)1Y)xkfl!V)4oczi1R63^CX1HT_u4{3#lH{-tmKRQ!L86%)b@XrOSEQee~9 z*HuetDjjB&1bFNWt%AqLFMG?7$G!3UB087O-kl+ajeKWo70S5hUmpsQc12kWZ2A`g zWEMr|Wk2#-_&Fv2<>ju?ic?uhhpHQyx0iBMRvi6vqK3e>8S8?9rBR{5)czG8&Ys8% zA0dj&{XbeUP^4*+<;}?4=!Yx@-{?xCO*o9CZ&k__2Zy9qXF`{XwKwQY6^!gLK0Mef zrF5CmsK1b1LplK(l=^8o5c6gNMxk|d1-E!P_~a`_aI9M zv3whyt1*&aKctH2*#An;?--yE){ntCOJ^N9?s$HtYHJ5p0@5DgW%w)MuusS@;8P!O z_=)yyLC>-B>QNjvv9SNKf#c(dtNQO+3G6-f zQTOA2GzHvZBY2fP?G+f_>{v%w%n^8W2lgJkHl7#bdRlO*3law5B4H~33Q}G zL0tMW@qmOvjlkjAk>}U6q_ezVX6~Olvzqvwj%tE&(SEAeCQnZJu0Fq7n*BWzpSEzA z`FwgeWE60!F7*3dv~iu^E&Dot+eQJms098Im+JbV)vpV8@X5MUN2zybRd*ZQ(LNhX z!I*EjqC{0DcgcSdTG!J4*5=*GjpakGXl|xvo@Y9IDr{rabO@&I7CfRK7`E5DSB1~f z3HDuD#uGlo8QzyueMt&iN&%0X1Er6DB(%?}AQKCpsp;nq+InMP5fz|& zz*CO$l(YbQby};;IOAU9o8nX;`0U}!lcjnQ?Zr>`URRKSiV%H0k@ja4kFDDp$4Fk; zZt=nAo@w^|c3Pf|c~$HFOK^lgSW!m#cz?cR)%*RD#5r{cjzvP0KBn+qKHB*z42N%} z6W}l@jp(;4YZQ@Sck)nKq2n8EKN}`{!;(+&PymUV4Af8glJ9foTr&A|@*{m>Z6PoH zZLt(Y{hn4jv@r<8t&Jdm7M?w-_uySMzga0rnzM|NLslZ{!pqX(IKUwUhSbe|WWniX zL)?MQ>R|ZnqFAR(%JRtM&y#hjV#f&>RgzCBs3x;hsVIPfn*wQ3%G9%^z6!OX9PU%C%ue0Rq%q? zOe$xF#6f%XZIeqvQd|Lk>#qy!YS9@zZgZ79= zl&pd9Azt5OQd0^MgGu|UNer7c`2}ITcP?IMpKnJeXv$qT4CmUHI()ZWPn@Z}Kt*a0 zxOs*Oe#MyH;(jG6QctK_wXU~qQ7&RJ=x+N78yw+1xA5ce!76%E)r-%C&wpNH@xJ&| z7c`W#&rM1?d!^m=@!-or6Zp}5R7PHJos-?KVVp!!7c6bBto46lL2`^fZ}<4p`?EJ- z1PP0UdZDUX${I$UA5Adh^gDntH z#9)R%;g@SW6~i-&=BiUM>(D$>em|tvG!{kH6%Ed4a8|$Pcc-dY<9h%8*ZEkYtTvZyT_~G;9A}K!_qD8h(yK6Xo%S72rL2yhzUQOQuqObNT9fhj{pIPw+bq9Aa zrRmGa3LK8V>-n>y+nzeQ$VgBxZ9H}1*Vdx9bwIJFuWsyLIL+}&? zobMl@(NW=G2La1s1xzbvkL%y~;pOv8Fz3lb$p;5ZAvzoI0HFMhuO(pI9egj^)Z3Y5 z3s`7Fy&NlP-hf_qkzbGA!)h4I_2iYDB&22_7F~GP+r&F)C=Ac={%%G- z#hJA#sbETFw-OhdeA~8@<4ePk5T`}7JsZip{T1I%#QqpTkKvjwtJ?Pom8M{RER(#L zRp{O@Z+manW1_Me>q{e^A8M=ibH~ylwKt3QI=^9<8GkY2LJiAt_6TkSyAR z7TBh&cg&K?+K2hXS>tQq$W17$J&sxTtYN+pZ|EI9f_{mqH>zzjWXjhs)MkcKyQPy* zU~(_g9fItaJ7~87_I1|#bI@FAm{1;M%wBd0-?h>IPCgxtI|aS)U2IFSp3~epIW*PF zN@ilSjTpB&JsIE8u0M*~P8@N%G^=yg3Tl8-$7AH48OQi*5i&pOtH826BX)#u9t;A9 zraJ)&@Pmu~Ft!}-WVc7Pjj2fHJe^yKJ5}oo;x39E4tnR^%uv=g$vTiFR{6bmXNb?u zAKSKEKKDmzalJvCTP1yM%`L&9bMb#y<1_jqMw&B#YnK$Qec6!j zg~5U^9v9S%{Hdu_^vO`9bIw%w)p+q8f=s@f&qx3V_4s%**j_N#1log9rO5>C1<`gX z;z-T#*QxqeAV9f(p<+R`9_(aD3y=0AA!&A3WKsn|+eUd|e^mI3`Jh&hP|+ri-GUOc zfvCj^%4@3Dgiv?_297s5vW&YRn$#`7|FlrOaiS(v2?r=7`7<$mC#Rk@xuvED^(y?5 zDI~if9_!7phqi5#B|#KCb!A>3`0-LY!66QZz`^-{?1DfFOIohMzkrI-7}Ec_+7D&4 zvM?CL;FZ{rE6who9|X@`K_REFZ9d17rFWl~Jh(rr`u33L$kjts3?un=>^LDuFLmcB z_3)wv(gZ_v#|!(*Z{Q;Y0|{@t`f(Ie8izgJ)x1$r8XCY2sXVv8+y=Wwf&F_UM=zf| z99Ro7-j#?|{1qV0^tK&~8!)VBuOv-m2!wKGnuHkhvQ+34(cJn*y?woRRqoq1g_UZkz_RaJ;&lGb93BZ)zC zLu4ocs%}}XpC-(i%`*xS$oZi6AldoO&~njTx_b%4(A~Na$e`d6O_L-%z@so{ruvIT zxT9WFi|O@hYM?YjC^E@rn9Z)BFLamkUcUf;h$brlm7C29Iyx|eAp|t{F6ye(kJh0i zOw;t}^9`K62qetqk5|ceM8m5ZmQc!vF`5fhYCqP$rj~__8IuX;Y-G2j+Q%H73F(LE z)3j-Nlj<`_NU9pCzW72sGkUNP=ZICWPKrCsJ{6aVnn@nt2t{~I! z6Yq8ogg;>uiO;FheaM+ODv(;6Dhcfj-?`wmvzr@IuW53Jg6xqQEt>q&y;wSzZ8!?l zbQ`ajQCJyq_R7&=XKIP*3Gibn?z3v#HJ+QT#=|uc`YK8sss1Z2y8khlwiR&)>zP;b?-shaN?>^5t=kC4l z_s_sHtEX3YbyanBb^WTcnoG-W(RYGQoqnnKaDnx;r*%a0lcJn^AJn23j`O&N%Ed7& zlGL-u77nuUih7+4^i+X=y8QOE&mr~Zvv=U1hBb3L`R?IIpxTUi=9ljBD94mD4scxC zIVFVuGsa&s4C*WKcVER&^*_y~J8$J*U4|de7ByVqhu(IXWOp*)+e6V0m!d9o83Zpg zC-{c{N9`K%2JS;B?#aVZY$&D;x{BxFxUa!I$8rAUuG1#dk0&}iZu;LmrzqVavA~+9 z4Jt-8%2gs|UQoj}o_myWF6 zzbAC+bosLTCBo^&q4Z*>e7{D|!_wDVaZN^5=laHOYwo&jq;g8)Wn4(55XGipvWk>d`+N zmvYLt!#c8kMUgO;Gq4hL3HN;mw%ZC9)S(mP zCT0H2M1q<~Pa{&5T+>p=SwOlGvdhL0?l0<4>c|J4lckD>teK^Xkqhe1W^?aMqQ}P0n?-jSD(3W4h)_;|f)7B|};iMTK=Ni>3I0 z&VD0z7t1pOGej=#96TLGYvJp5WEpoR?aVfPjX5<81nf{2aT#ubvP2Q^!)nxUfXEm; z^{9mD*^-uu$kaM5OAn-DKMd2!z+bi-qI^P=`#-T}{ujYo37CWOZOF}J0murt!w7m8 zm}5g^CKxbWI&w|&{r`Y1&kZwaBr)F@vJ0_WY1jLa8RYrleZ;!m>XPoxeBhN^DpgYN z$9}Ctk*s*E4p2YPNi5O{_;}vEVG?`%bhtwgmF_Ey=QwugTu$l8CrfLVz6T5J%JYpsO3SbCERxk`^46NiJbX`at~hgld;{eykh|mjsfyb& z_k|o=dR9vF)@i8TuB&XN+Y&GvVXn^u?sbeCXYYIj&X=jlI2k%;kcSHrF!IE@(JSS! zDsA~Q7KWbL4Ov|2tN!?btiUPM z9h<_@{QVbQ=s=tn?tq&T0^D0a6wKUr59!_#V1MqBHODFOX?h9XH1g z$EF+2?ELK6O=YcSC0Lrc{NdwgKjrsd^D0QMtSCtRJ%6Z2f@YR0wL=V(lM_|`6aN5OTB1g8r(l#;@}_IO6ZQSw>3yrZqLz7s@Pa*{{aLa^+X@^0ATO z_XU~C48MVI)L5}!;+HIXZ`G8ntsNV=^!rJ|SaL6_YO|i951LE~@?RDP3d$cEt)~|f zE3d~vDREX-svj%TikKJV5^4;_x}7epipGx{@8Irw4Rx<9{M$PINqvIm0^|PIWk#z zbPS6&_-H!4f)s8nqS=3*C=Q&zJ3Kg$LhT-RwGI>-HSQv>7D8bHd)z*mt-kZ19J;Sq$$PF8KBwVZXk4d|hk43+xhvu~L=$abvr~8#A6~*N@p94i3c*bzWG-S~EGp=N><|YXEY26NWY2H;+O3Ux02LKLp16MY{BKEp zT5%PU#(>#3i@P;MG=7W(Gz2@r6?d@AWVzFpq0=vQ`=d)dZ;l&|2aD@R{N_2+96S_w zBh_v5$yZO68DqUE92{KA`oz#6DvbSIR%{f`L2PRMU& z_B&2e6J!qbcX4Ky66ph$U(#a5^pgSm_b`14<1$&x!V1VCWM)Zg3yVzXkhd&!rDFC_ zTga=Xz*AMV9=8lJeOa)kjf&jn;}wMaR8fO!V61hI{j})91FlET=qFcHQ=ArknRs=b zT&d-83gv)GLs_}6gN)s$c&3myo_0pxIJ@QPCcabvO6a`!NrgoO5yvaoe!PZR)l-Y! zSr;mAh5PPWY%;C!$_PN_MHxfrxxuZD945{)BWcEuZ-m^04ymYB=o~(@^Ca+%Ve>`B zf{yN+>n_^AJvSycv?5~0Ds(3~XfONg>tq76XsZHt-}y5F{&=N)X>0)sL+Phh#xQ<$ zixh*L4}Sx+>5T=G*e{jCTtbi7hz=h)Q;Z$1cqJD1chK6t$8z*&Z+Wy2y^El8{v4;k zCz(`jk*l04$@__+ok%32XN%XhRl)iP8-Cp0Uk`FV2woKH;H=p1yxN}%)ox0cPE!Ar zq@~w$wEe*ngq5rDSb_&+9+KjEgntlBHe?_RtnU~Mn7#U3IPV;Mf316%_jpg#sT5TV zIc57oR79amRy@J};(A_1T){3MxSuM7lIGomUw|Ps&*>=I)lc^3x23k+R69Sh#87Sdw2IHpDB2nBYUI5!vPp}a}Wr=P1M?%d2z@Pkkz!_SFhoM&*)?947AC51()IfR~66xDP&s|=Z%3aWAQ zvBY_Ii9NR2K1!)JFdOC(+{(4#HQONC*W@Q2yqm|VGKT|nc&I4W^* zGKTH5NzK_Cz{lVb-Nq&h-rFwB5VZzXoT~lOz*iuj&FbABVHGNn3+^1J81k&{T zkOC4>z>HwCWD_{gea`v-d!6y9F>^HP!|uU>5PP;H4f4iML5A2y zrcPc-IHye5q!!0I910_G5JZ>Itwe-9Y$xjrK7r&*N_)K3l`zxzV7cpj z^ES*s+U-{Zc*{{XAoTl~k+57h$DrLqrRFNQyF}13(jESIC47jxp~2`d4Z4pa z`@PQRhk1z9`N1|Y(B+C6JqL6(dhxB5YC<6ih>O_VKowM(wNWGXUrpB8Mt7h|HZzSr z*e)H#dv8;9j!6u#$p88ZNxH%3gv4cV0L%f0^utzBwe_vkrfLEj&FsL#V^s%LI#cG|A@Rw=$Sb1TX@(h7Yqok7sy5&ULy4OV6y_G;dO z@31g~)D|)7W{3dW(TIRg7_Ew@?CHMu20U<3D3qDxH$5=pG{KGq;1@yKD zw~OGpm5N)0suWP|ycV=i&$&n#!wZ?|=|H2D2z*z`cM-fbJZ^GVjqN!c!0chZS>Iu; znW>eap~vWc^^|@}4){X*xzP}L-qK(&iN$go+>!&$Zh%&@oR%dJdgXI$o_EEAGj%2D z$)f^%W6w%+j+FFJBlc3hRjD_)dbmT(8FdBd1@6E9P5j&1_BLfZPuEg3xwS5k;luD= zSTDC6$~|G2q?+$z0M~+`+Yfxt@JFHv1ZT=R@#^QQi$x|^P7<7{7=%yeYuKR_@1#_Q zuS`R*k@j~7dSlRc7EF|Wo>D*gt|*9`k;~!Wb{p(vbE99MT}=kzX*K$hh0Xyo(o?(Bu{50FVtXu-R^-myz=9b5uf7 z8t{0=*R6gxmRAsQbtes6PLm10o=@7`tXNmpQLjXAO6hi=)iZo=#koqBBZFitSdigs zN8amzDTgwuMc>rPB80BUJb6D$K!E1`4=z0ymO^h zfpp3M)5WppGp*r=Y`w5APXr%xp_Q_q!N5O;*3v&!cJ*?8y*5u4*Z|8ADBdc$yEJuS z3%V{(Hh2dNr_ZAubCf-=`;Gi~8hx=0*g3{FhSXCy9MYBZ^3+M_XI8|CV*<#wFfrHX?eS?5xs2PZy{33{y2h z4AM9j7@HXaQ*peDVoq&nt+_HGW_Y_+{)n(I`3`;b)KgM%_ZsVxRWs_l^GTmBhI^|1 zDVI|{=}`b_2FuMG5IOp=EXwpkVOdEi!p#U9uOoOC`+Kn8h>`*Hdp%E`&JIqvW4G_Ju(;IMhndAq3>4 zxs5*&j64bOBe!uTmTW7040vD%h0_M`70iPxkIw5=Bd?Ig9Pff|XxK=j;4%-m4CbH! zjy{0f+PRO6$|(gD?@yC#o*jFVFb@MS1wtYsIs-a9$3e{3P6|b7u?5iTiZZ~m<_%*q zgBe9LkWkgX@&#IH43kz#AEn&)C4OMVZ1$9Dy4BYmFh2#9^r1n!biXx1!P5Tm)#c6N zh?6IntXyut(dUVJ?$l7OLZ$6aikf*%d+;YU<{)<`?1!2u_)zXI7p~`?Z5L=hggt)w zdh45advP4HN8WdAMN#<}1aEX&gdXME*;l%vI+4q;C^|J_W5_L=or8SB>TlY%y$PJc zSBVeC^oZt-$HR2{CQ$}P61c~SEWV^?$B6RH^b}evS1WsBWq`^wibELX{QmheFTaGynt;tDAJ>#vj$pTw898(I+~Sz_^4Y(Da-bm=bt~ zCQt^B;>n3P1%kqJqXlxr{y)o&nYi1kVBVKI;NnCW{Txkt2GA6ZHdohj6`?ru2n5@T z&^Ty$=#uv`OT5+>Rzz2HFb_;YRY+iphq4Z*uS%+Y^*LN2lXbg&2gZM;46M6#Yv(jg zn(Vxd9+YXw7KfideEiJ*bLb_lC1zk1`tt&QL29wtGFk8aAr)0RW#}Pcs0j17y)UtS zfIXcwCzxaq-FAfiCK<;6Y@G}noJs^`D^U{RqXHUMCXu&&pfW3$OL)TkX+4w}AL_|N zzi}_|Te&xJYf3Y@p7#lg;}B#Y227<=U|N=gReSpK3-a?ezTIb({O@e!LP2+#o(+sHCY{grYIYnFAuRhtV3$Wyl&fvn%(ZG39C^L-PFns~9pHHy1#V>T(E|r-SBsb`2G0{ffQOnol zkKCU!_2DMawm08OBR5TKXB~+)ydAvpU`tebyf*mVrGneoYu7;G*ybM>^^BVrg0^#* zoz-imE99qLhVbs9*dZ@}i;3jj0O@X0rOp(eW7B*2`+UxJ?;vDr;4TNYw+_a;N9XQX zUqX0YCG+N~A`^_GP=*~a-dKNAuDc+{f1H4RL(oY$y(o!4YGnH0qDRJdZ-Lkf;D~{P zPT0sF8SkcnUgkA?sUF;5I%tH!ONUC@d)vk?n>H9G%e$%w`J$GcxS(!jS_3nwEVo= z82oHxOEN^YkFT<{*xAbByR9I{Lo>C z;UhjYR$jI0)Xh$qu~(n&Fl;fm;6{n9BUz^xX>8)yQYm}*D#Xj8OT2xIV=~mL+uMlu z81fKzd;YAXol_9o0LbI>#JV28tv9s76c`KpGDrDt`UD@+hdXRc}W? z9+aV{1Qi0rkW6(oZN2IpnG&HgV4f^p1}yekVBYK||8c9i{YRk~D99iypb-8!f8TE0 z-wtO(Y$>;$GXHO+|J#%C7i3g3WF@NBqvA1w>t}%GPN?Y99rWk8rfXW?v@LE*+Vuhp zxdLLNr)i>O_%`x*0a(XlV9d=dXH!`xCSjMiEmLA^nF0#@3Obc`nLKaEuttxSCEw1u0e-9=?J*EIKIwd+@zqXjrFu zz;3*WCEq}PeND0qsX$Clpl@Vzumsv%cSclG;2fg&5MU1?f6}?WT)zs<+={Wl#8}fF z`2K3?0XKiS{~V~a66b3MJa%n>A6 z+W2bv9;gz(gPW`+prjt)n@SM%Jf*N6*U z2^0+YbXzHWXgTNxsn;nmxLL!CJfzc7H^i|&MEDz@7hu)L-r!O@vS25+H zNQ$K!tINq$aCx09FG;7m@-P` zH(`4kr2CNrjytNt-^X=Q)*VRK#}2h7UZ~KkH;*cZ&ABm35Vjd3UM!$zRD}3%`-GDd zO>3)$wIz+F=e{qCLDt$scW&qa2lxAk(S$bPsy;!xb8kmPBI&W>KVoCFn!xMSZ*AB} z=k8F;TKZ?+wF(h9K9N*Ih%irh#^X1qq&$AeL|#dn>F&=jk#yKo8t4VbH(*ULK=Juw zCt{<@Ru1?VE_&bBPNZ)#VIkY;9sL}JH!k$U`uUprHtTy)N8+zsH}0S!K9S&8s$>I? zNfNf`iEga>W&sZ79~DM~L)mKFhN!8xh$%KW$p$x_TN^Mvc;u=mOrY`#W@F`3ecPJ> z%eMsN<-21p^e6(52HI;rJ&l15NUfwXRCr01fIdX5klmy?>Q(gtk2GMOdJY3e+s{FN zAk&j9%Zh<_EBPru^@z}1@xA{ur1rT&KL$>ZT=XYL@;mePyq6yIx@LpA{!uj m` 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

2gRy%$KH21s0So*QF1k-tfc1e3 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

?rI@+j?VGdqV<0*p?oc7KW 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%0A>%$ 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 z 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

e8D*JalYRA7koDhf~d2WJJJDj(p~HF+Sd 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%0Dnk-kwZc8)4E>B2bqe--uw?l7X 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

  • dNHmj|35xJ;6XKGhGol-4MvyV7|E#PKS^ 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
      4V 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àxI^WYKRZ$nsNCK%fWSs%N( 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%0DVd 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 z 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Ⓢm&9lCUD-rt0m`yyrzg+_!Uj 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 literal 0 HcmV?d00001 diff --git a/img/power-off-solid.svg b/img/power-off-solid.svg new file mode 100644 index 0000000000..166574e2ab --- /dev/null +++ b/img/power-off-solid.svg @@ -0,0 +1,21 @@ + + + diff --git a/img/syringe-solid.svg b/img/syringe-solid.svg new file mode 100644 index 0000000000..84abb69c09 --- /dev/null +++ b/img/syringe-solid.svg @@ -0,0 +1,21 @@ + + + diff --git a/img/undraw_docusaurus_mountain.svg b/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000000..7845b1c50b --- /dev/null +++ b/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_react.svg b/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000000..cadf86da7d --- /dev/null +++ b/img/undraw_docusaurus_react.svg @@ -0,0 +1,371 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_tree.svg b/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000000..bcc32dae98 --- /dev/null +++ b/img/undraw_docusaurus_tree.svg @@ -0,0 +1,93 @@ + + + + docu_tree + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000000..ada6897173 --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ + + + + + +ModuleCheck + + + + + + + +

      + + \ No newline at end of file diff --git a/migrations/index.html b/migrations/index.html new file mode 100644 index 0000000000..411d685a66 --- /dev/null +++ b/migrations/index.html @@ -0,0 +1,42 @@ + + + + + +ModuleCheck + + + + + + + +

      0.12.0 to 0.12.1

      +

      Standardized Finding names

      +

      The names of all findings have been updated/standardized. Any declarations which were suppressing +a finding with the old ID (via @Suppress("someFinding") or //suppress=someFinding) will still +work, but they should be updated to use the new names.

      +
      old namenew name
      depthproject-depth
      disableAndroidResourcesdisable-android-resources
      disableViewBindingdisable-view-binding
      inheritedDependencyinherited-dependency
      mustBeApimust-be-api
      overshotovershot-dependency
      redundantredundant-dependency
      unsortedDependenciessort-dependencies
      unsortedPluginssort-plugins
      useAnvilFactoriesuse-anvil-factory-generation
      unusedunused-dependency
      unusedKaptProcessorunused-kapt-processor
      unusedKotlinAndroidExtensionsunused-kotlin-android-extensions
      +

      CodeGeneratorBinding

      +

      The KaptMatcher class has been deprecated in favor of modulecheck.config.CodeGeneratorBinding. +This new sealed class has four concrete implementations which can define just about any code +generation tool:

      +
        +
      • modulecheck.config.CodeGeneratorBinding.AnnotationProcessor +
          +
        • Note that this class is a model for Kotlin KAPT as well as a standard Java annotation processor.
        • +
        +
      • +
      • modulecheck.config.CodeGeneratorBinding.KspExtension
      • +
      • modulecheck.config.CodeGeneratorBinding.AnvilExtension
      • +
      • modulecheck.config.CodeGeneratorBinding.KotlinCompilerPlugin
      • +
      +

      To migrate from KaptMatcher:

      +
        +
      1. Change references of modulecheck.api.KaptMatcher, +to modulecheck.config.CodeGeneratorBinding.AnnotationProcessor.
      2. +
      3. Replace the regex-styled annotationImports arguments with explicit fully-qualified names. +For instance, replace "com\\.example\\.MyAnnotation", with "com.example.MyAnnotation".
      4. +
      + + \ No newline at end of file diff --git a/opensearch.xml b/opensearch.xml new file mode 100644 index 0000000000..f413518116 --- /dev/null +++ b/opensearch.xml @@ -0,0 +1,11 @@ + + + ModuleCheck + Search ModuleCheck + UTF-8 + https://rbusarow.github.io/ModuleCheck/img/favicon.ico + + + https://rbusarow.github.io/ModuleCheck/ + \ No newline at end of file diff --git a/search/index.html b/search/index.html new file mode 100644 index 0000000000..7579a6c3b5 --- /dev/null +++ b/search/index.html @@ -0,0 +1,16 @@ + + + + + +Search the documentation | ModuleCheck + + + + + + + + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000000..ef4584d8fe --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://rbusarow.github.io/ModuleCheck/changelogweekly0.5https://rbusarow.github.io/ModuleCheck/migrationsweekly0.5https://rbusarow.github.io/ModuleCheck/searchweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/mdxweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/android/disable_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/android/disable_viewbindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/kapt/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/kapt/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/overshotweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/redundantweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/sorting/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/sorting/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.10.0/rules/unusedweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/android/disable_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/android/disable_viewbindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/compiler/could_use_anvil_factoryweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/kapt/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/kapt/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/sorting/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/sorting/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.0/rules/unusedweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/android/disable_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/android/disable_viewbindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/compiler/could_use_anvil_factoryweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/kapt/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/kapt/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/sorting/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/sorting/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.1/rules/unusedweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/ci-workflowweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/android/disable_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/android/disable_viewbindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/compiler/could_use_anvil_factoryweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/kapt/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/kapt/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/sorting/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/sorting/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.2/rules/unusedweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/ci-workflowweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/android/disable_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/android/disable_viewbindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/compiler/could_use_anvil_factoryweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/kapt/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/kapt/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/sorting/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/sorting/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/rules/unusedweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.11.3/suppressing-findingsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/ci-workflowweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/android/disable_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/android/disable_viewbindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/android/unused_kotlin_android_extensionsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/compiler/could_use_anvil_factoryweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/depthsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/kapt/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/kapt/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/overshot_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/redundant_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/sorting/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/sorting/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/rules/unusedweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.0/suppressing-findingsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/ci-workflowweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/disable_android_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/disable_view_bindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/overshot_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/project_depthweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/redundant_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/unused_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/unused_kotlin_android_extensionsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/rules/use_anvil_factory_generationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.1/suppressing-findingsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/ci-workflowweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/disable_android_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/disable_view_bindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/overshot_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/project_depthweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/redundant_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/unused_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/unused_kotlin_android_extensionsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/rules/use_anvil_factory_generationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.2/suppressing-findingsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/ci-workflowweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/disable_android_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/disable_view_bindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/overshot_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/project_depthweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/redundant_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/unused_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/unused_kotlin_android_extensionsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/rules/use_anvil_factory_generationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.3/suppressing-findingsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/ci-workflowweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/disable_android_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/disable_view_bindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/overshot_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/project_depthweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/redundant_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/unused_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/unused_kotlin_android_extensionsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/rules/use_anvil_factory_generationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/0.12.4/suppressing-findingsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/ci-workflowweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/disable_android_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/disable_view_bindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/overshot_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/project_depthweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/redundant_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/unused_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/unused_kotlin_android_extensionsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/rules/use_anvil_factory_generationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/next/suppressing-findingsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/weekly0.5https://rbusarow.github.io/ModuleCheck/docs/ci-workflowweekly0.5https://rbusarow.github.io/ModuleCheck/docs/configurationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/custom_kapt_matchersweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/disable_android_resourcesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/disable_view_bindingweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/inherited_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/must_be_apiweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/overshot_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/project_depthweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/redundant_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/sort_dependenciesweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/sort_pluginsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/unused_dependencyweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/unused_kapt_pluginweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/unused_kapt_processorweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/unused_kotlin_android_extensionsweekly0.5https://rbusarow.github.io/ModuleCheck/docs/rules/use_anvil_factory_generationweekly0.5https://rbusarow.github.io/ModuleCheck/docs/suppressing-findingsweekly0.5https://rbusarow.github.io/ModuleCheck/weekly0.5 \ No newline at end of file

      ModuleCheck removes unused module dependencies from your gradle project.

      Get Started      
      version badge Gradle Plugin Portal Snapshot license
      Tree shaking

    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 Tf^Uj+AJ#aH)X?etn|G(i$j4r!Cz_+-?ESA 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�Lm-Np>yf3rOZIXV;YpnCXRM`Uv$ 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